1 /* Generated by Cython 0.29.12 */
2 
3 /* BEGIN: Cython Metadata
4 {
5     "distutils": {
6         "depends": [
7             "yt/utilities/lib/cykdtree/c_kdtree.hpp",
8             "yt/utilities/lib/cykdtree/c_utils.hpp"
9         ],
10         "extra_compile_args": [
11             "-std=c++03"
12         ],
13         "include_dirs": [
14             "yt/utilities/lib/cykdtree"
15         ],
16         "language": "c++",
17         "libraries": [
18             "m"
19         ],
20         "name": "yt.utilities.lib.cykdtree.kdtree",
21         "sources": [
22             "yt/utilities/lib/cykdtree/kdtree.pyx",
23             "yt/utilities/lib/cykdtree/c_utils.cpp"
24         ]
25     },
26     "module_name": "yt.utilities.lib.cykdtree.kdtree"
27 }
28 END: Cython Metadata */
29 
30 #define PY_SSIZE_T_CLEAN
31 #include "Python.h"
32 #ifndef Py_PYTHON_H
33     #error Python headers needed to compile C extensions, please install development version of Python.
34 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
35     #error Cython requires Python 2.6+ or Python 3.3+.
36 #else
37 #define CYTHON_ABI "0_29_12"
38 #define CYTHON_HEX_VERSION 0x001D0CF0
39 #define CYTHON_FUTURE_DIVISION 0
40 #include <stddef.h>
41 #ifndef offsetof
42   #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
43 #endif
44 #if !defined(WIN32) && !defined(MS_WINDOWS)
45   #ifndef __stdcall
46     #define __stdcall
47   #endif
48   #ifndef __cdecl
49     #define __cdecl
50   #endif
51   #ifndef __fastcall
52     #define __fastcall
53   #endif
54 #endif
55 #ifndef DL_IMPORT
56   #define DL_IMPORT(t) t
57 #endif
58 #ifndef DL_EXPORT
59   #define DL_EXPORT(t) t
60 #endif
61 #define __PYX_COMMA ,
62 #ifndef HAVE_LONG_LONG
63   #if PY_VERSION_HEX >= 0x02070000
64     #define HAVE_LONG_LONG
65   #endif
66 #endif
67 #ifndef PY_LONG_LONG
68   #define PY_LONG_LONG LONG_LONG
69 #endif
70 #ifndef Py_HUGE_VAL
71   #define Py_HUGE_VAL HUGE_VAL
72 #endif
73 #ifdef PYPY_VERSION
74   #define CYTHON_COMPILING_IN_PYPY 1
75   #define CYTHON_COMPILING_IN_PYSTON 0
76   #define CYTHON_COMPILING_IN_CPYTHON 0
77   #undef CYTHON_USE_TYPE_SLOTS
78   #define CYTHON_USE_TYPE_SLOTS 0
79   #undef CYTHON_USE_PYTYPE_LOOKUP
80   #define CYTHON_USE_PYTYPE_LOOKUP 0
81   #if PY_VERSION_HEX < 0x03050000
82     #undef CYTHON_USE_ASYNC_SLOTS
83     #define CYTHON_USE_ASYNC_SLOTS 0
84   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
85     #define CYTHON_USE_ASYNC_SLOTS 1
86   #endif
87   #undef CYTHON_USE_PYLIST_INTERNALS
88   #define CYTHON_USE_PYLIST_INTERNALS 0
89   #undef CYTHON_USE_UNICODE_INTERNALS
90   #define CYTHON_USE_UNICODE_INTERNALS 0
91   #undef CYTHON_USE_UNICODE_WRITER
92   #define CYTHON_USE_UNICODE_WRITER 0
93   #undef CYTHON_USE_PYLONG_INTERNALS
94   #define CYTHON_USE_PYLONG_INTERNALS 0
95   #undef CYTHON_AVOID_BORROWED_REFS
96   #define CYTHON_AVOID_BORROWED_REFS 1
97   #undef CYTHON_ASSUME_SAFE_MACROS
98   #define CYTHON_ASSUME_SAFE_MACROS 0
99   #undef CYTHON_UNPACK_METHODS
100   #define CYTHON_UNPACK_METHODS 0
101   #undef CYTHON_FAST_THREAD_STATE
102   #define CYTHON_FAST_THREAD_STATE 0
103   #undef CYTHON_FAST_PYCALL
104   #define CYTHON_FAST_PYCALL 0
105   #undef CYTHON_PEP489_MULTI_PHASE_INIT
106   #define CYTHON_PEP489_MULTI_PHASE_INIT 0
107   #undef CYTHON_USE_TP_FINALIZE
108   #define CYTHON_USE_TP_FINALIZE 0
109   #undef CYTHON_USE_DICT_VERSIONS
110   #define CYTHON_USE_DICT_VERSIONS 0
111   #undef CYTHON_USE_EXC_INFO_STACK
112   #define CYTHON_USE_EXC_INFO_STACK 0
113 #elif defined(PYSTON_VERSION)
114   #define CYTHON_COMPILING_IN_PYPY 0
115   #define CYTHON_COMPILING_IN_PYSTON 1
116   #define CYTHON_COMPILING_IN_CPYTHON 0
117   #ifndef CYTHON_USE_TYPE_SLOTS
118     #define CYTHON_USE_TYPE_SLOTS 1
119   #endif
120   #undef CYTHON_USE_PYTYPE_LOOKUP
121   #define CYTHON_USE_PYTYPE_LOOKUP 0
122   #undef CYTHON_USE_ASYNC_SLOTS
123   #define CYTHON_USE_ASYNC_SLOTS 0
124   #undef CYTHON_USE_PYLIST_INTERNALS
125   #define CYTHON_USE_PYLIST_INTERNALS 0
126   #ifndef CYTHON_USE_UNICODE_INTERNALS
127     #define CYTHON_USE_UNICODE_INTERNALS 1
128   #endif
129   #undef CYTHON_USE_UNICODE_WRITER
130   #define CYTHON_USE_UNICODE_WRITER 0
131   #undef CYTHON_USE_PYLONG_INTERNALS
132   #define CYTHON_USE_PYLONG_INTERNALS 0
133   #ifndef CYTHON_AVOID_BORROWED_REFS
134     #define CYTHON_AVOID_BORROWED_REFS 0
135   #endif
136   #ifndef CYTHON_ASSUME_SAFE_MACROS
137     #define CYTHON_ASSUME_SAFE_MACROS 1
138   #endif
139   #ifndef CYTHON_UNPACK_METHODS
140     #define CYTHON_UNPACK_METHODS 1
141   #endif
142   #undef CYTHON_FAST_THREAD_STATE
143   #define CYTHON_FAST_THREAD_STATE 0
144   #undef CYTHON_FAST_PYCALL
145   #define CYTHON_FAST_PYCALL 0
146   #undef CYTHON_PEP489_MULTI_PHASE_INIT
147   #define CYTHON_PEP489_MULTI_PHASE_INIT 0
148   #undef CYTHON_USE_TP_FINALIZE
149   #define CYTHON_USE_TP_FINALIZE 0
150   #undef CYTHON_USE_DICT_VERSIONS
151   #define CYTHON_USE_DICT_VERSIONS 0
152   #undef CYTHON_USE_EXC_INFO_STACK
153   #define CYTHON_USE_EXC_INFO_STACK 0
154 #else
155   #define CYTHON_COMPILING_IN_PYPY 0
156   #define CYTHON_COMPILING_IN_PYSTON 0
157   #define CYTHON_COMPILING_IN_CPYTHON 1
158   #ifndef CYTHON_USE_TYPE_SLOTS
159     #define CYTHON_USE_TYPE_SLOTS 1
160   #endif
161   #if PY_VERSION_HEX < 0x02070000
162     #undef CYTHON_USE_PYTYPE_LOOKUP
163     #define CYTHON_USE_PYTYPE_LOOKUP 0
164   #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
165     #define CYTHON_USE_PYTYPE_LOOKUP 1
166   #endif
167   #if PY_MAJOR_VERSION < 3
168     #undef CYTHON_USE_ASYNC_SLOTS
169     #define CYTHON_USE_ASYNC_SLOTS 0
170   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
171     #define CYTHON_USE_ASYNC_SLOTS 1
172   #endif
173   #if PY_VERSION_HEX < 0x02070000
174     #undef CYTHON_USE_PYLONG_INTERNALS
175     #define CYTHON_USE_PYLONG_INTERNALS 0
176   #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
177     #define CYTHON_USE_PYLONG_INTERNALS 1
178   #endif
179   #ifndef CYTHON_USE_PYLIST_INTERNALS
180     #define CYTHON_USE_PYLIST_INTERNALS 1
181   #endif
182   #ifndef CYTHON_USE_UNICODE_INTERNALS
183     #define CYTHON_USE_UNICODE_INTERNALS 1
184   #endif
185   #if PY_VERSION_HEX < 0x030300F0
186     #undef CYTHON_USE_UNICODE_WRITER
187     #define CYTHON_USE_UNICODE_WRITER 0
188   #elif !defined(CYTHON_USE_UNICODE_WRITER)
189     #define CYTHON_USE_UNICODE_WRITER 1
190   #endif
191   #ifndef CYTHON_AVOID_BORROWED_REFS
192     #define CYTHON_AVOID_BORROWED_REFS 0
193   #endif
194   #ifndef CYTHON_ASSUME_SAFE_MACROS
195     #define CYTHON_ASSUME_SAFE_MACROS 1
196   #endif
197   #ifndef CYTHON_UNPACK_METHODS
198     #define CYTHON_UNPACK_METHODS 1
199   #endif
200   #ifndef CYTHON_FAST_THREAD_STATE
201     #define CYTHON_FAST_THREAD_STATE 1
202   #endif
203   #ifndef CYTHON_FAST_PYCALL
204     #define CYTHON_FAST_PYCALL 1
205   #endif
206   #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
207     #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
208   #endif
209   #ifndef CYTHON_USE_TP_FINALIZE
210     #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
211   #endif
212   #ifndef CYTHON_USE_DICT_VERSIONS
213     #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
214   #endif
215   #ifndef CYTHON_USE_EXC_INFO_STACK
216     #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
217   #endif
218 #endif
219 #if !defined(CYTHON_FAST_PYCCALL)
220 #define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
221 #endif
222 #if CYTHON_USE_PYLONG_INTERNALS
223   #include "longintrepr.h"
224   #undef SHIFT
225   #undef BASE
226   #undef MASK
227   #ifdef SIZEOF_VOID_P
228     enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
229   #endif
230 #endif
231 #ifndef __has_attribute
232   #define __has_attribute(x) 0
233 #endif
234 #ifndef __has_cpp_attribute
235   #define __has_cpp_attribute(x) 0
236 #endif
237 #ifndef CYTHON_RESTRICT
238   #if defined(__GNUC__)
239     #define CYTHON_RESTRICT __restrict__
240   #elif defined(_MSC_VER) && _MSC_VER >= 1400
241     #define CYTHON_RESTRICT __restrict
242   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
243     #define CYTHON_RESTRICT restrict
244   #else
245     #define CYTHON_RESTRICT
246   #endif
247 #endif
248 #ifndef CYTHON_UNUSED
249 # if defined(__GNUC__)
250 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
251 #     define CYTHON_UNUSED __attribute__ ((__unused__))
252 #   else
253 #     define CYTHON_UNUSED
254 #   endif
255 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
256 #   define CYTHON_UNUSED __attribute__ ((__unused__))
257 # else
258 #   define CYTHON_UNUSED
259 # endif
260 #endif
261 #ifndef CYTHON_MAYBE_UNUSED_VAR
262 #  if defined(__cplusplus)
CYTHON_MAYBE_UNUSED_VAR(const T &)263      template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
264 #  else
265 #    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
266 #  endif
267 #endif
268 #ifndef CYTHON_NCP_UNUSED
269 # if CYTHON_COMPILING_IN_CPYTHON
270 #  define CYTHON_NCP_UNUSED
271 # else
272 #  define CYTHON_NCP_UNUSED CYTHON_UNUSED
273 # endif
274 #endif
275 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
276 #ifdef _MSC_VER
277     #ifndef _MSC_STDINT_H_
278         #if _MSC_VER < 1300
279            typedef unsigned char     uint8_t;
280            typedef unsigned int      uint32_t;
281         #else
282            typedef unsigned __int8   uint8_t;
283            typedef unsigned __int32  uint32_t;
284         #endif
285     #endif
286 #else
287    #include <stdint.h>
288 #endif
289 #ifndef CYTHON_FALLTHROUGH
290   #if defined(__cplusplus) && __cplusplus >= 201103L
291     #if __has_cpp_attribute(fallthrough)
292       #define CYTHON_FALLTHROUGH [[fallthrough]]
293     #elif __has_cpp_attribute(clang::fallthrough)
294       #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
295     #elif __has_cpp_attribute(gnu::fallthrough)
296       #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
297     #endif
298   #endif
299   #ifndef CYTHON_FALLTHROUGH
300     #if __has_attribute(fallthrough)
301       #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
302     #else
303       #define CYTHON_FALLTHROUGH
304     #endif
305   #endif
306   #if defined(__clang__ ) && defined(__apple_build_version__)
307     #if __apple_build_version__ < 7000000
308       #undef  CYTHON_FALLTHROUGH
309       #define CYTHON_FALLTHROUGH
310     #endif
311   #endif
312 #endif
313 
314 #ifndef __cplusplus
315   #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
316 #endif
317 #ifndef CYTHON_INLINE
318   #if defined(__clang__)
319     #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
320   #else
321     #define CYTHON_INLINE inline
322   #endif
323 #endif
324 template<typename T>
__Pyx_call_destructor(T & x)325 void __Pyx_call_destructor(T& x) {
326     x.~T();
327 }
328 template<typename T>
329 class __Pyx_FakeReference {
330   public:
__Pyx_FakeReference()331     __Pyx_FakeReference() : ptr(NULL) { }
__Pyx_FakeReference(const T & ref)332     __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
operator ->()333     T *operator->() { return ptr; }
operator &()334     T *operator&() { return ptr; }
operator T&()335     operator T&() { return *ptr; }
operator ==(U other)336     template<typename U> bool operator ==(U other) { return *ptr == other; }
operator !=(U other)337     template<typename U> bool operator !=(U other) { return *ptr != other; }
338   private:
339     T *ptr;
340 };
341 
342 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
343   #define Py_OptimizeFlag 0
344 #endif
345 #define __PYX_BUILD_PY_SSIZE_T "n"
346 #define CYTHON_FORMAT_SSIZE_T "z"
347 #if PY_MAJOR_VERSION < 3
348   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
349   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
350           PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
351   #define __Pyx_DefaultClassType PyClass_Type
352 #else
353   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
354 #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
355   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
356           PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
357 #else
358   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
359           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
360 #endif
361   #define __Pyx_DefaultClassType PyType_Type
362 #endif
363 #ifndef Py_TPFLAGS_CHECKTYPES
364   #define Py_TPFLAGS_CHECKTYPES 0
365 #endif
366 #ifndef Py_TPFLAGS_HAVE_INDEX
367   #define Py_TPFLAGS_HAVE_INDEX 0
368 #endif
369 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
370   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
371 #endif
372 #ifndef Py_TPFLAGS_HAVE_FINALIZE
373   #define Py_TPFLAGS_HAVE_FINALIZE 0
374 #endif
375 #ifndef METH_STACKLESS
376   #define METH_STACKLESS 0
377 #endif
378 #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
379   #ifndef METH_FASTCALL
380      #define METH_FASTCALL 0x80
381   #endif
382   typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
383   typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
384                                                           Py_ssize_t nargs, PyObject *kwnames);
385 #else
386   #define __Pyx_PyCFunctionFast _PyCFunctionFast
387   #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
388 #endif
389 #if CYTHON_FAST_PYCCALL
390 #define __Pyx_PyFastCFunction_Check(func)\
391     ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
392 #else
393 #define __Pyx_PyFastCFunction_Check(func) 0
394 #endif
395 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
396   #define PyObject_Malloc(s)   PyMem_Malloc(s)
397   #define PyObject_Free(p)     PyMem_Free(p)
398   #define PyObject_Realloc(p)  PyMem_Realloc(p)
399 #endif
400 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
401   #define PyMem_RawMalloc(n)           PyMem_Malloc(n)
402   #define PyMem_RawRealloc(p, n)       PyMem_Realloc(p, n)
403   #define PyMem_RawFree(p)             PyMem_Free(p)
404 #endif
405 #if CYTHON_COMPILING_IN_PYSTON
406   #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
407   #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
408 #else
409   #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
410   #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
411 #endif
412 #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
413   #define __Pyx_PyThreadState_Current PyThreadState_GET()
414 #elif PY_VERSION_HEX >= 0x03060000
415   #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
416 #elif PY_VERSION_HEX >= 0x03000000
417   #define __Pyx_PyThreadState_Current PyThreadState_GET()
418 #else
419   #define __Pyx_PyThreadState_Current _PyThreadState_Current
420 #endif
421 #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
422 #include "pythread.h"
423 #define Py_tss_NEEDS_INIT 0
424 typedef int Py_tss_t;
PyThread_tss_create(Py_tss_t * key)425 static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
426   *key = PyThread_create_key();
427   return 0;
428 }
PyThread_tss_alloc(void)429 static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
430   Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
431   *key = Py_tss_NEEDS_INIT;
432   return key;
433 }
PyThread_tss_free(Py_tss_t * key)434 static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
435   PyObject_Free(key);
436 }
PyThread_tss_is_created(Py_tss_t * key)437 static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
438   return *key != Py_tss_NEEDS_INIT;
439 }
PyThread_tss_delete(Py_tss_t * key)440 static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
441   PyThread_delete_key(*key);
442   *key = Py_tss_NEEDS_INIT;
443 }
PyThread_tss_set(Py_tss_t * key,void * value)444 static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
445   return PyThread_set_key_value(*key, value);
446 }
PyThread_tss_get(Py_tss_t * key)447 static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
448   return PyThread_get_key_value(*key);
449 }
450 #endif
451 #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
452 #define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
453 #else
454 #define __Pyx_PyDict_NewPresized(n)  PyDict_New()
455 #endif
456 #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
457   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
458   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
459 #else
460   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
461   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
462 #endif
463 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
464 #define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
465 #else
466 #define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)
467 #endif
468 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
469   #define CYTHON_PEP393_ENABLED 1
470   #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
471                                               0 : _PyUnicode_Ready((PyObject *)(op)))
472   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
473   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
474   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
475   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
476   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
477   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
478   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
479   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
480 #else
481   #define CYTHON_PEP393_ENABLED 0
482   #define PyUnicode_1BYTE_KIND  1
483   #define PyUnicode_2BYTE_KIND  2
484   #define PyUnicode_4BYTE_KIND  4
485   #define __Pyx_PyUnicode_READY(op)       (0)
486   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
487   #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
488   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
489   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
490   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
491   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
492   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
493   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
494 #endif
495 #if CYTHON_COMPILING_IN_PYPY
496   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
497   #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
498 #else
499   #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
500   #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
501       PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
502 #endif
503 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
504   #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
505 #endif
506 #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
507   #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
508 #endif
509 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
510   #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
511 #endif
512 #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))
513 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
514 #if PY_MAJOR_VERSION >= 3
515   #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
516 #else
517   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
518 #endif
519 #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
520   #define PyObject_ASCII(o)            PyObject_Repr(o)
521 #endif
522 #if PY_MAJOR_VERSION >= 3
523   #define PyBaseString_Type            PyUnicode_Type
524   #define PyStringObject               PyUnicodeObject
525   #define PyString_Type                PyUnicode_Type
526   #define PyString_Check               PyUnicode_Check
527   #define PyString_CheckExact          PyUnicode_CheckExact
528   #define PyObject_Unicode             PyObject_Str
529 #endif
530 #if PY_MAJOR_VERSION >= 3
531   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
532   #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
533 #else
534   #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
535   #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
536 #endif
537 #ifndef PySet_CheckExact
538   #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
539 #endif
540 #if CYTHON_ASSUME_SAFE_MACROS
541   #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
542 #else
543   #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
544 #endif
545 #if PY_MAJOR_VERSION >= 3
546   #define PyIntObject                  PyLongObject
547   #define PyInt_Type                   PyLong_Type
548   #define PyInt_Check(op)              PyLong_Check(op)
549   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
550   #define PyInt_FromString             PyLong_FromString
551   #define PyInt_FromUnicode            PyLong_FromUnicode
552   #define PyInt_FromLong               PyLong_FromLong
553   #define PyInt_FromSize_t             PyLong_FromSize_t
554   #define PyInt_FromSsize_t            PyLong_FromSsize_t
555   #define PyInt_AsLong                 PyLong_AsLong
556   #define PyInt_AS_LONG                PyLong_AS_LONG
557   #define PyInt_AsSsize_t              PyLong_AsSsize_t
558   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
559   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
560   #define PyNumber_Int                 PyNumber_Long
561 #endif
562 #if PY_MAJOR_VERSION >= 3
563   #define PyBoolObject                 PyLongObject
564 #endif
565 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
566   #ifndef PyUnicode_InternFromString
567     #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
568   #endif
569 #endif
570 #if PY_VERSION_HEX < 0x030200A4
571   typedef long Py_hash_t;
572   #define __Pyx_PyInt_FromHash_t PyInt_FromLong
573   #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
574 #else
575   #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
576   #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
577 #endif
578 #if PY_MAJOR_VERSION >= 3
579   #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
580 #else
581   #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
582 #endif
583 #if CYTHON_USE_ASYNC_SLOTS
584   #if PY_VERSION_HEX >= 0x030500B1
585     #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
586     #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
587   #else
588     #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
589   #endif
590 #else
591   #define __Pyx_PyType_AsAsync(obj) NULL
592 #endif
593 #ifndef __Pyx_PyAsyncMethodsStruct
594     typedef struct {
595         unaryfunc am_await;
596         unaryfunc am_aiter;
597         unaryfunc am_anext;
598     } __Pyx_PyAsyncMethodsStruct;
599 #endif
600 
601 #if defined(WIN32) || defined(MS_WINDOWS)
602   #define _USE_MATH_DEFINES
603 #endif
604 #include <math.h>
605 #ifdef NAN
606 #define __PYX_NAN() ((float) NAN)
607 #else
__PYX_NAN()608 static CYTHON_INLINE float __PYX_NAN() {
609   float value;
610   memset(&value, 0xFF, sizeof(value));
611   return value;
612 }
613 #endif
614 #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
615 #define __Pyx_truncl trunc
616 #else
617 #define __Pyx_truncl truncl
618 #endif
619 
620 
621 #define __PYX_ERR(f_index, lineno, Ln_error) \
622 { \
623   __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
624 }
625 
626 #ifndef __PYX_EXTERN_C
627   #ifdef __cplusplus
628     #define __PYX_EXTERN_C extern "C"
629   #else
630     #define __PYX_EXTERN_C extern
631   #endif
632 #endif
633 
634 #define __PYX_HAVE__yt__utilities__lib__cykdtree__kdtree
635 #define __PYX_HAVE_API__yt__utilities__lib__cykdtree__kdtree
636 /* Early includes */
637 #include <string.h>
638 #include <stdio.h>
639 #include "numpy/arrayobject.h"
640 #include "numpy/ufuncobject.h"
641 #include <stdint.h>
642 #include "ios"
643 #include "new"
644 #include "stdexcept"
645 #include "typeinfo"
646 #include <utility>
647 #include <vector>
648 #include <iostream>
649 #include <fstream>
650 #include "c_kdtree.hpp"
651 #include "pythread.h"
652 #include <stdlib.h>
653 #include "pystate.h"
654 #ifdef _OPENMP
655 #include <omp.h>
656 #endif /* _OPENMP */
657 
658 #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
659 #define CYTHON_WITHOUT_ASSERTIONS
660 #endif
661 
662 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
663                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
664 
665 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
666 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
667 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
668 #define __PYX_DEFAULT_STRING_ENCODING ""
669 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
670 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
671 #define __Pyx_uchar_cast(c) ((unsigned char)c)
672 #define __Pyx_long_cast(x) ((long)x)
673 #define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
674     (sizeof(type) < sizeof(Py_ssize_t))  ||\
675     (sizeof(type) > sizeof(Py_ssize_t) &&\
676           likely(v < (type)PY_SSIZE_T_MAX ||\
677                  v == (type)PY_SSIZE_T_MAX)  &&\
678           (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
679                                 v == (type)PY_SSIZE_T_MIN)))  ||\
680     (sizeof(type) == sizeof(Py_ssize_t) &&\
681           (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
682                                v == (type)PY_SSIZE_T_MAX)))  )
__Pyx_is_valid_index(Py_ssize_t i,Py_ssize_t limit)683 static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
684     return (size_t) i < (size_t) limit;
685 }
686 #if defined (__cplusplus) && __cplusplus >= 201103L
687     #include <cstdlib>
688     #define __Pyx_sst_abs(value) std::abs(value)
689 #elif SIZEOF_INT >= SIZEOF_SIZE_T
690     #define __Pyx_sst_abs(value) abs(value)
691 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
692     #define __Pyx_sst_abs(value) labs(value)
693 #elif defined (_MSC_VER)
694     #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
695 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
696     #define __Pyx_sst_abs(value) llabs(value)
697 #elif defined (__GNUC__)
698     #define __Pyx_sst_abs(value) __builtin_llabs(value)
699 #else
700     #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
701 #endif
702 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
703 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
704 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
705 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
706 #define __Pyx_PyBytes_FromString        PyBytes_FromString
707 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
708 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
709 #if PY_MAJOR_VERSION < 3
710     #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
711     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
712 #else
713     #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
714     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
715 #endif
716 #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
717 #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
718 #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
719 #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
720 #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
721 #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
722 #define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
723 #define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
724 #define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
725 #define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
726 #define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
727 #define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
728 #define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
729 #define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
730 #define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
731 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
__Pyx_Py_UNICODE_strlen(const Py_UNICODE * u)732 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
733     const Py_UNICODE *u_end = u;
734     while (*u_end++) ;
735     return (size_t)(u_end - u - 1);
736 }
737 #define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
738 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
739 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
740 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
741 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
742 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
743 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
744 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
745 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
746 #define __Pyx_PySequence_Tuple(obj)\
747     (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
748 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
749 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
750 #if CYTHON_ASSUME_SAFE_MACROS
751 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
752 #else
753 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
754 #endif
755 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
756 #if PY_MAJOR_VERSION >= 3
757 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
758 #else
759 #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
760 #endif
761 #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
762 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
763 static int __Pyx_sys_getdefaultencoding_not_ascii;
__Pyx_init_sys_getdefaultencoding_params(void)764 static int __Pyx_init_sys_getdefaultencoding_params(void) {
765     PyObject* sys;
766     PyObject* default_encoding = NULL;
767     PyObject* ascii_chars_u = NULL;
768     PyObject* ascii_chars_b = NULL;
769     const char* default_encoding_c;
770     sys = PyImport_ImportModule("sys");
771     if (!sys) goto bad;
772     default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
773     Py_DECREF(sys);
774     if (!default_encoding) goto bad;
775     default_encoding_c = PyBytes_AsString(default_encoding);
776     if (!default_encoding_c) goto bad;
777     if (strcmp(default_encoding_c, "ascii") == 0) {
778         __Pyx_sys_getdefaultencoding_not_ascii = 0;
779     } else {
780         char ascii_chars[128];
781         int c;
782         for (c = 0; c < 128; c++) {
783             ascii_chars[c] = c;
784         }
785         __Pyx_sys_getdefaultencoding_not_ascii = 1;
786         ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
787         if (!ascii_chars_u) goto bad;
788         ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
789         if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
790             PyErr_Format(
791                 PyExc_ValueError,
792                 "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
793                 default_encoding_c);
794             goto bad;
795         }
796         Py_DECREF(ascii_chars_u);
797         Py_DECREF(ascii_chars_b);
798     }
799     Py_DECREF(default_encoding);
800     return 0;
801 bad:
802     Py_XDECREF(default_encoding);
803     Py_XDECREF(ascii_chars_u);
804     Py_XDECREF(ascii_chars_b);
805     return -1;
806 }
807 #endif
808 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
809 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
810 #else
811 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
812 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
813 static char* __PYX_DEFAULT_STRING_ENCODING;
__Pyx_init_sys_getdefaultencoding_params(void)814 static int __Pyx_init_sys_getdefaultencoding_params(void) {
815     PyObject* sys;
816     PyObject* default_encoding = NULL;
817     char* default_encoding_c;
818     sys = PyImport_ImportModule("sys");
819     if (!sys) goto bad;
820     default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
821     Py_DECREF(sys);
822     if (!default_encoding) goto bad;
823     default_encoding_c = PyBytes_AsString(default_encoding);
824     if (!default_encoding_c) goto bad;
825     __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
826     if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
827     strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
828     Py_DECREF(default_encoding);
829     return 0;
830 bad:
831     Py_XDECREF(default_encoding);
832     return -1;
833 }
834 #endif
835 #endif
836 
837 
838 /* Test for GCC > 2.95 */
839 #if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
840   #define likely(x)   __builtin_expect(!!(x), 1)
841   #define unlikely(x) __builtin_expect(!!(x), 0)
842 #else /* !__GNUC__ or GCC < 2.95 */
843   #define likely(x)   (x)
844   #define unlikely(x) (x)
845 #endif /* __GNUC__ */
__Pyx_pretend_to_initialize(void * ptr)846 static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
847 
848 static PyObject *__pyx_m = NULL;
849 static PyObject *__pyx_d;
850 static PyObject *__pyx_b;
851 static PyObject *__pyx_cython_runtime = NULL;
852 static PyObject *__pyx_empty_tuple;
853 static PyObject *__pyx_empty_bytes;
854 static PyObject *__pyx_empty_unicode;
855 static int __pyx_lineno;
856 static int __pyx_clineno = 0;
857 static const char * __pyx_cfilenm= __FILE__;
858 static const char *__pyx_filename;
859 
860 /* Header.proto */
861 #if !defined(CYTHON_CCOMPLEX)
862   #if defined(__cplusplus)
863     #define CYTHON_CCOMPLEX 1
864   #elif defined(_Complex_I)
865     #define CYTHON_CCOMPLEX 1
866   #else
867     #define CYTHON_CCOMPLEX 0
868   #endif
869 #endif
870 #if CYTHON_CCOMPLEX
871   #ifdef __cplusplus
872     #include <complex>
873   #else
874     #include <complex.h>
875   #endif
876 #endif
877 #if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
878   #undef _Complex_I
879   #define _Complex_I 1.0fj
880 #endif
881 
882 
883 static const char *__pyx_f[] = {
884   "yt/utilities/lib/cykdtree/kdtree.pyx",
885   "stringsource",
886   "yt/utilities/lib/cykdtree/kdtree.pxd",
887   "__init__.pxd",
888   "type.pxd",
889   "bool.pxd",
890   "complex.pxd",
891 };
892 /* MemviewSliceStruct.proto */
893 struct __pyx_memoryview_obj;
894 typedef struct {
895   struct __pyx_memoryview_obj *memview;
896   char *data;
897   Py_ssize_t shape[8];
898   Py_ssize_t strides[8];
899   Py_ssize_t suboffsets[8];
900 } __Pyx_memviewslice;
901 #define __Pyx_MemoryView_Len(m)  (m.shape[0])
902 
903 /* Atomics.proto */
904 #include <pythread.h>
905 #ifndef CYTHON_ATOMICS
906     #define CYTHON_ATOMICS 1
907 #endif
908 #define __pyx_atomic_int_type int
909 #if CYTHON_ATOMICS && __GNUC__ >= 4 && (__GNUC_MINOR__ > 1 ||\
910                     (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL >= 2)) &&\
911                     !defined(__i386__)
912     #define __pyx_atomic_incr_aligned(value, lock) __sync_fetch_and_add(value, 1)
913     #define __pyx_atomic_decr_aligned(value, lock) __sync_fetch_and_sub(value, 1)
914     #ifdef __PYX_DEBUG_ATOMICS
915         #warning "Using GNU atomics"
916     #endif
917 #elif CYTHON_ATOMICS && defined(_MSC_VER) && 0
918     #include <Windows.h>
919     #undef __pyx_atomic_int_type
920     #define __pyx_atomic_int_type LONG
921     #define __pyx_atomic_incr_aligned(value, lock) InterlockedIncrement(value)
922     #define __pyx_atomic_decr_aligned(value, lock) InterlockedDecrement(value)
923     #ifdef __PYX_DEBUG_ATOMICS
924         #pragma message ("Using MSVC atomics")
925     #endif
926 #elif CYTHON_ATOMICS && (defined(__ICC) || defined(__INTEL_COMPILER)) && 0
927     #define __pyx_atomic_incr_aligned(value, lock) _InterlockedIncrement(value)
928     #define __pyx_atomic_decr_aligned(value, lock) _InterlockedDecrement(value)
929     #ifdef __PYX_DEBUG_ATOMICS
930         #warning "Using Intel atomics"
931     #endif
932 #else
933     #undef CYTHON_ATOMICS
934     #define CYTHON_ATOMICS 0
935     #ifdef __PYX_DEBUG_ATOMICS
936         #warning "Not using atomics"
937     #endif
938 #endif
939 typedef volatile __pyx_atomic_int_type __pyx_atomic_int;
940 #if CYTHON_ATOMICS
941     #define __pyx_add_acquisition_count(memview)\
942              __pyx_atomic_incr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock)
943     #define __pyx_sub_acquisition_count(memview)\
944             __pyx_atomic_decr_aligned(__pyx_get_slice_count_pointer(memview), memview->lock)
945 #else
946     #define __pyx_add_acquisition_count(memview)\
947             __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
948     #define __pyx_sub_acquisition_count(memview)\
949             __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
950 #endif
951 
952 /* BufferFormatStructs.proto */
953 #define IS_UNSIGNED(type) (((type) -1) > 0)
954 struct __Pyx_StructField_;
955 #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0)
956 typedef struct {
957   const char* name;
958   struct __Pyx_StructField_* fields;
959   size_t size;
960   size_t arraysize[8];
961   int ndim;
962   char typegroup;
963   char is_unsigned;
964   int flags;
965 } __Pyx_TypeInfo;
966 typedef struct __Pyx_StructField_ {
967   __Pyx_TypeInfo* type;
968   const char* name;
969   size_t offset;
970 } __Pyx_StructField;
971 typedef struct {
972   __Pyx_StructField* field;
973   size_t parent_offset;
974 } __Pyx_BufFmt_StackElem;
975 typedef struct {
976   __Pyx_StructField root;
977   __Pyx_BufFmt_StackElem* head;
978   size_t fmt_offset;
979   size_t new_count, enc_count;
980   size_t struct_alignment;
981   int is_complex;
982   char enc_type;
983   char new_packmode;
984   char enc_packmode;
985   char is_valid_array;
986 } __Pyx_BufFmt_Context;
987 
988 /* ForceInitThreads.proto */
989 #ifndef __PYX_FORCE_INIT_THREADS
990   #define __PYX_FORCE_INIT_THREADS 0
991 #endif
992 
993 /* NoFastGil.proto */
994 #define __Pyx_PyGILState_Ensure PyGILState_Ensure
995 #define __Pyx_PyGILState_Release PyGILState_Release
996 #define __Pyx_FastGIL_Remember()
997 #define __Pyx_FastGIL_Forget()
998 #define __Pyx_FastGilFuncInit()
999 
1000 
1001 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776
1002  * # in Cython to enable them only on the right systems.
1003  *
1004  * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
1005  * ctypedef npy_int16      int16_t
1006  * ctypedef npy_int32      int32_t
1007  */
1008 typedef npy_int8 __pyx_t_5numpy_int8_t;
1009 
1010 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777
1011  *
1012  * ctypedef npy_int8       int8_t
1013  * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
1014  * ctypedef npy_int32      int32_t
1015  * ctypedef npy_int64      int64_t
1016  */
1017 typedef npy_int16 __pyx_t_5numpy_int16_t;
1018 
1019 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":778
1020  * ctypedef npy_int8       int8_t
1021  * ctypedef npy_int16      int16_t
1022  * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
1023  * ctypedef npy_int64      int64_t
1024  * #ctypedef npy_int96      int96_t
1025  */
1026 typedef npy_int32 __pyx_t_5numpy_int32_t;
1027 
1028 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779
1029  * ctypedef npy_int16      int16_t
1030  * ctypedef npy_int32      int32_t
1031  * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
1032  * #ctypedef npy_int96      int96_t
1033  * #ctypedef npy_int128     int128_t
1034  */
1035 typedef npy_int64 __pyx_t_5numpy_int64_t;
1036 
1037 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783
1038  * #ctypedef npy_int128     int128_t
1039  *
1040  * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
1041  * ctypedef npy_uint16     uint16_t
1042  * ctypedef npy_uint32     uint32_t
1043  */
1044 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
1045 
1046 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":784
1047  *
1048  * ctypedef npy_uint8      uint8_t
1049  * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
1050  * ctypedef npy_uint32     uint32_t
1051  * ctypedef npy_uint64     uint64_t
1052  */
1053 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
1054 
1055 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785
1056  * ctypedef npy_uint8      uint8_t
1057  * ctypedef npy_uint16     uint16_t
1058  * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
1059  * ctypedef npy_uint64     uint64_t
1060  * #ctypedef npy_uint96     uint96_t
1061  */
1062 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
1063 
1064 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":786
1065  * ctypedef npy_uint16     uint16_t
1066  * ctypedef npy_uint32     uint32_t
1067  * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
1068  * #ctypedef npy_uint96     uint96_t
1069  * #ctypedef npy_uint128    uint128_t
1070  */
1071 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
1072 
1073 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790
1074  * #ctypedef npy_uint128    uint128_t
1075  *
1076  * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
1077  * ctypedef npy_float64    float64_t
1078  * #ctypedef npy_float80    float80_t
1079  */
1080 typedef npy_float32 __pyx_t_5numpy_float32_t;
1081 
1082 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791
1083  *
1084  * ctypedef npy_float32    float32_t
1085  * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
1086  * #ctypedef npy_float80    float80_t
1087  * #ctypedef npy_float128   float128_t
1088  */
1089 typedef npy_float64 __pyx_t_5numpy_float64_t;
1090 
1091 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800
1092  * # The int types are mapped a bit surprising --
1093  * # numpy.int corresponds to 'l' and numpy.long to 'q'
1094  * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
1095  * ctypedef npy_longlong   long_t
1096  * ctypedef npy_longlong   longlong_t
1097  */
1098 typedef npy_long __pyx_t_5numpy_int_t;
1099 
1100 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801
1101  * # numpy.int corresponds to 'l' and numpy.long to 'q'
1102  * ctypedef npy_long       int_t
1103  * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
1104  * ctypedef npy_longlong   longlong_t
1105  *
1106  */
1107 typedef npy_longlong __pyx_t_5numpy_long_t;
1108 
1109 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802
1110  * ctypedef npy_long       int_t
1111  * ctypedef npy_longlong   long_t
1112  * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
1113  *
1114  * ctypedef npy_ulong      uint_t
1115  */
1116 typedef npy_longlong __pyx_t_5numpy_longlong_t;
1117 
1118 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804
1119  * ctypedef npy_longlong   longlong_t
1120  *
1121  * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
1122  * ctypedef npy_ulonglong  ulong_t
1123  * ctypedef npy_ulonglong  ulonglong_t
1124  */
1125 typedef npy_ulong __pyx_t_5numpy_uint_t;
1126 
1127 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":805
1128  *
1129  * ctypedef npy_ulong      uint_t
1130  * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
1131  * ctypedef npy_ulonglong  ulonglong_t
1132  *
1133  */
1134 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
1135 
1136 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":806
1137  * ctypedef npy_ulong      uint_t
1138  * ctypedef npy_ulonglong  ulong_t
1139  * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
1140  *
1141  * ctypedef npy_intp       intp_t
1142  */
1143 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1144 
1145 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":808
1146  * ctypedef npy_ulonglong  ulonglong_t
1147  *
1148  * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
1149  * ctypedef npy_uintp      uintp_t
1150  *
1151  */
1152 typedef npy_intp __pyx_t_5numpy_intp_t;
1153 
1154 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809
1155  *
1156  * ctypedef npy_intp       intp_t
1157  * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
1158  *
1159  * ctypedef npy_double     float_t
1160  */
1161 typedef npy_uintp __pyx_t_5numpy_uintp_t;
1162 
1163 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":811
1164  * ctypedef npy_uintp      uintp_t
1165  *
1166  * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
1167  * ctypedef npy_double     double_t
1168  * ctypedef npy_longdouble longdouble_t
1169  */
1170 typedef npy_double __pyx_t_5numpy_float_t;
1171 
1172 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":812
1173  *
1174  * ctypedef npy_double     float_t
1175  * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
1176  * ctypedef npy_longdouble longdouble_t
1177  *
1178  */
1179 typedef npy_double __pyx_t_5numpy_double_t;
1180 
1181 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813
1182  * ctypedef npy_double     float_t
1183  * ctypedef npy_double     double_t
1184  * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
1185  *
1186  * ctypedef npy_cfloat      cfloat_t
1187  */
1188 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
1189 /* Declarations.proto */
1190 #if CYTHON_CCOMPLEX
1191   #ifdef __cplusplus
1192     typedef ::std::complex< float > __pyx_t_float_complex;
1193   #else
1194     typedef float _Complex __pyx_t_float_complex;
1195   #endif
1196 #else
1197     typedef struct { float real, imag; } __pyx_t_float_complex;
1198 #endif
1199 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
1200 
1201 /* Declarations.proto */
1202 #if CYTHON_CCOMPLEX
1203   #ifdef __cplusplus
1204     typedef ::std::complex< double > __pyx_t_double_complex;
1205   #else
1206     typedef double _Complex __pyx_t_double_complex;
1207   #endif
1208 #else
1209     typedef struct { double real, imag; } __pyx_t_double_complex;
1210 #endif
1211 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
1212 
1213 
1214 /*--- Type declarations ---*/
1215 struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode;
1216 struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree;
1217 struct __pyx_array_obj;
1218 struct __pyx_MemviewEnum_obj;
1219 struct __pyx_memoryview_obj;
1220 struct __pyx_memoryviewslice_obj;
1221 
1222 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815
1223  * ctypedef npy_longdouble longdouble_t
1224  *
1225  * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
1226  * ctypedef npy_cdouble     cdouble_t
1227  * ctypedef npy_clongdouble clongdouble_t
1228  */
1229 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
1230 
1231 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816
1232  *
1233  * ctypedef npy_cfloat      cfloat_t
1234  * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
1235  * ctypedef npy_clongdouble clongdouble_t
1236  *
1237  */
1238 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
1239 
1240 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":817
1241  * ctypedef npy_cfloat      cfloat_t
1242  * ctypedef npy_cdouble     cdouble_t
1243  * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
1244  *
1245  * ctypedef npy_cdouble     complex_t
1246  */
1247 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
1248 
1249 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":819
1250  * ctypedef npy_clongdouble clongdouble_t
1251  *
1252  * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
1253  *
1254  * cdef inline object PyArray_MultiIterNew1(a):
1255  */
1256 typedef npy_cdouble __pyx_t_5numpy_complex_t;
1257 
1258 /* "yt/utilities/lib/cykdtree/kdtree.pxd":88
1259  *
1260  *
1261  * cdef class PyNode:             # <<<<<<<<<<<<<<
1262  *     cdef Node *_node
1263  *     cdef readonly np.uint32_t id
1264  */
1265 struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode {
1266   PyObject_HEAD
1267   struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_vtab;
1268   Node *_node;
1269   __pyx_t_5numpy_uint32_t id;
1270   __pyx_t_5numpy_uint64_t npts;
1271   __pyx_t_5numpy_uint32_t ndim;
1272   __pyx_t_5numpy_uint32_t num_leaves;
1273   __pyx_t_5numpy_uint64_t start_idx;
1274   __pyx_t_5numpy_uint64_t stop_idx;
1275   double *_domain_width;
1276   PyObject *left_neighbors;
1277   PyObject *right_neighbors;
1278 };
1279 
1280 
1281 /* "yt/utilities/lib/cykdtree/kdtree.pxd":101
1282  *                          double *domain_width)
1283  *
1284  * cdef class PyKDTree:             # <<<<<<<<<<<<<<
1285  *     cdef KDTree *_tree
1286  *     cdef readonly uint64_t npts
1287  */
1288 struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree {
1289   PyObject_HEAD
1290   struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_vtab;
1291   KDTree *_tree;
1292   uint64_t npts;
1293   uint32_t ndim;
1294   uint32_t num_leaves;
1295   uint32_t leafsize;
1296   int64_t data_version;
1297   double *_left_edge;
1298   double *_right_edge;
1299   bool *_periodic;
1300   PyObject *leaves;
1301   PyObject *_idx;
1302 };
1303 
1304 
1305 /* "View.MemoryView":105
1306  *
1307  * @cname("__pyx_array")
1308  * cdef class array:             # <<<<<<<<<<<<<<
1309  *
1310  *     cdef:
1311  */
1312 struct __pyx_array_obj {
1313   PyObject_HEAD
1314   struct __pyx_vtabstruct_array *__pyx_vtab;
1315   char *data;
1316   Py_ssize_t len;
1317   char *format;
1318   int ndim;
1319   Py_ssize_t *_shape;
1320   Py_ssize_t *_strides;
1321   Py_ssize_t itemsize;
1322   PyObject *mode;
1323   PyObject *_format;
1324   void (*callback_free_data)(void *);
1325   int free_data;
1326   int dtype_is_object;
1327 };
1328 
1329 
1330 /* "View.MemoryView":279
1331  *
1332  * @cname('__pyx_MemviewEnum')
1333  * cdef class Enum(object):             # <<<<<<<<<<<<<<
1334  *     cdef object name
1335  *     def __init__(self, name):
1336  */
1337 struct __pyx_MemviewEnum_obj {
1338   PyObject_HEAD
1339   PyObject *name;
1340 };
1341 
1342 
1343 /* "View.MemoryView":330
1344  *
1345  * @cname('__pyx_memoryview')
1346  * cdef class memoryview(object):             # <<<<<<<<<<<<<<
1347  *
1348  *     cdef object obj
1349  */
1350 struct __pyx_memoryview_obj {
1351   PyObject_HEAD
1352   struct __pyx_vtabstruct_memoryview *__pyx_vtab;
1353   PyObject *obj;
1354   PyObject *_size;
1355   PyObject *_array_interface;
1356   PyThread_type_lock lock;
1357   __pyx_atomic_int acquisition_count[2];
1358   __pyx_atomic_int *acquisition_count_aligned_p;
1359   Py_buffer view;
1360   int flags;
1361   int dtype_is_object;
1362   __Pyx_TypeInfo *typeinfo;
1363 };
1364 
1365 
1366 /* "View.MemoryView":961
1367  *
1368  * @cname('__pyx_memoryviewslice')
1369  * cdef class _memoryviewslice(memoryview):             # <<<<<<<<<<<<<<
1370  *     "Internal class for passing memoryview slices to Python"
1371  *
1372  */
1373 struct __pyx_memoryviewslice_obj {
1374   struct __pyx_memoryview_obj __pyx_base;
1375   __Pyx_memviewslice from_slice;
1376   PyObject *from_object;
1377   PyObject *(*to_object_func)(char *);
1378   int (*to_dtype_func)(char *, PyObject *);
1379 };
1380 
1381 
1382 
1383 /* "yt/utilities/lib/cykdtree/kdtree.pyx":18
1384  *
1385  *
1386  * cdef class PyNode:             # <<<<<<<<<<<<<<
1387  *     r"""A container for leaf info.
1388  *
1389  */
1390 
1391 struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode {
1392   void (*_init_node)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *, Node *, uint32_t, double *);
1393 };
1394 static struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode;
1395 
1396 
1397 /* "yt/utilities/lib/cykdtree/kdtree.pyx":146
1398  *
1399  *
1400  * cdef class PyKDTree:             # <<<<<<<<<<<<<<
1401  *     r"""Construct a KDTree for a set of points.
1402  *
1403  */
1404 
1405 struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree {
1406   void (*_init_tree)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, KDTree *);
1407   void (*_make_tree)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, double *, bool);
1408   void (*_make_leaves)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *);
1409   PyArrayObject *(*_get_neighbor_ids)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, PyArrayObject *);
1410   PyArrayObject *(*_get_neighbor_ids_3)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, __pyx_t_5numpy_float64_t *);
1411   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *(*_get)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, PyArrayObject *);
1412 };
1413 static struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree;
1414 
1415 
1416 /* "View.MemoryView":105
1417  *
1418  * @cname("__pyx_array")
1419  * cdef class array:             # <<<<<<<<<<<<<<
1420  *
1421  *     cdef:
1422  */
1423 
1424 struct __pyx_vtabstruct_array {
1425   PyObject *(*get_memview)(struct __pyx_array_obj *);
1426 };
1427 static struct __pyx_vtabstruct_array *__pyx_vtabptr_array;
1428 
1429 
1430 /* "View.MemoryView":330
1431  *
1432  * @cname('__pyx_memoryview')
1433  * cdef class memoryview(object):             # <<<<<<<<<<<<<<
1434  *
1435  *     cdef object obj
1436  */
1437 
1438 struct __pyx_vtabstruct_memoryview {
1439   char *(*get_item_pointer)(struct __pyx_memoryview_obj *, PyObject *);
1440   PyObject *(*is_slice)(struct __pyx_memoryview_obj *, PyObject *);
1441   PyObject *(*setitem_slice_assignment)(struct __pyx_memoryview_obj *, PyObject *, PyObject *);
1442   PyObject *(*setitem_slice_assign_scalar)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *);
1443   PyObject *(*setitem_indexed)(struct __pyx_memoryview_obj *, PyObject *, PyObject *);
1444   PyObject *(*convert_item_to_object)(struct __pyx_memoryview_obj *, char *);
1445   PyObject *(*assign_item_from_object)(struct __pyx_memoryview_obj *, char *, PyObject *);
1446 };
1447 static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview;
1448 
1449 
1450 /* "View.MemoryView":961
1451  *
1452  * @cname('__pyx_memoryviewslice')
1453  * cdef class _memoryviewslice(memoryview):             # <<<<<<<<<<<<<<
1454  *     "Internal class for passing memoryview slices to Python"
1455  *
1456  */
1457 
1458 struct __pyx_vtabstruct__memoryviewslice {
1459   struct __pyx_vtabstruct_memoryview __pyx_base;
1460 };
1461 static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice;
1462 
1463 /* --- Runtime support code (head) --- */
1464 /* Refnanny.proto */
1465 #ifndef CYTHON_REFNANNY
1466   #define CYTHON_REFNANNY 0
1467 #endif
1468 #if CYTHON_REFNANNY
1469   typedef struct {
1470     void (*INCREF)(void*, PyObject*, int);
1471     void (*DECREF)(void*, PyObject*, int);
1472     void (*GOTREF)(void*, PyObject*, int);
1473     void (*GIVEREF)(void*, PyObject*, int);
1474     void* (*SetupContext)(const char*, int, const char*);
1475     void (*FinishContext)(void**);
1476   } __Pyx_RefNannyAPIStruct;
1477   static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
1478   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
1479   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
1480 #ifdef WITH_THREAD
1481   #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1482           if (acquire_gil) {\
1483               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1484               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1485               PyGILState_Release(__pyx_gilstate_save);\
1486           } else {\
1487               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1488           }
1489 #else
1490   #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1491           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
1492 #endif
1493   #define __Pyx_RefNannyFinishContext()\
1494           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
1495   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1496   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1497   #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1498   #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1499   #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
1500   #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
1501   #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
1502   #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
1503 #else
1504   #define __Pyx_RefNannyDeclarations
1505   #define __Pyx_RefNannySetupContext(name, acquire_gil)
1506   #define __Pyx_RefNannyFinishContext()
1507   #define __Pyx_INCREF(r) Py_INCREF(r)
1508   #define __Pyx_DECREF(r) Py_DECREF(r)
1509   #define __Pyx_GOTREF(r)
1510   #define __Pyx_GIVEREF(r)
1511   #define __Pyx_XINCREF(r) Py_XINCREF(r)
1512   #define __Pyx_XDECREF(r) Py_XDECREF(r)
1513   #define __Pyx_XGOTREF(r)
1514   #define __Pyx_XGIVEREF(r)
1515 #endif
1516 #define __Pyx_XDECREF_SET(r, v) do {\
1517         PyObject *tmp = (PyObject *) r;\
1518         r = v; __Pyx_XDECREF(tmp);\
1519     } while (0)
1520 #define __Pyx_DECREF_SET(r, v) do {\
1521         PyObject *tmp = (PyObject *) r;\
1522         r = v; __Pyx_DECREF(tmp);\
1523     } while (0)
1524 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
1525 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
1526 
1527 /* PyObjectGetAttrStr.proto */
1528 #if CYTHON_USE_TYPE_SLOTS
1529 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
1530 #else
1531 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
1532 #endif
1533 
1534 /* GetBuiltinName.proto */
1535 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
1536 
1537 /* ListCompAppend.proto */
1538 #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
__Pyx_ListComp_Append(PyObject * list,PyObject * x)1539 static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
1540     PyListObject* L = (PyListObject*) list;
1541     Py_ssize_t len = Py_SIZE(list);
1542     if (likely(L->allocated > len)) {
1543         Py_INCREF(x);
1544         PyList_SET_ITEM(list, len, x);
1545         Py_SIZE(list) = len+1;
1546         return 0;
1547     }
1548     return PyList_Append(list, x);
1549 }
1550 #else
1551 #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
1552 #endif
1553 
1554 /* SetItemInt.proto */
1555 #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1556     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1557     __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
1558     (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
1559                __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
1560 static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
1561 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
1562                                                int is_list, int wraparound, int boundscheck);
1563 
1564 /* PyThreadStateGet.proto */
1565 #if CYTHON_FAST_THREAD_STATE
1566 #define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
1567 #define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
1568 #define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
1569 #else
1570 #define __Pyx_PyThreadState_declare
1571 #define __Pyx_PyThreadState_assign
1572 #define __Pyx_PyErr_Occurred()  PyErr_Occurred()
1573 #endif
1574 
1575 /* PyErrFetchRestore.proto */
1576 #if CYTHON_FAST_THREAD_STATE
1577 #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
1578 #define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
1579 #define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
1580 #define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
1581 #define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
1582 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1583 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1584 #if CYTHON_COMPILING_IN_CPYTHON
1585 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
1586 #else
1587 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1588 #endif
1589 #else
1590 #define __Pyx_PyErr_Clear() PyErr_Clear()
1591 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1592 #define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
1593 #define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
1594 #define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
1595 #define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
1596 #define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
1597 #define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
1598 #endif
1599 
1600 /* WriteUnraisableException.proto */
1601 static void __Pyx_WriteUnraisable(const char *name, int clineno,
1602                                   int lineno, const char *filename,
1603                                   int full_traceback, int nogil);
1604 
1605 /* RaiseArgTupleInvalid.proto */
1606 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
1607     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
1608 
1609 /* KeywordStringCheck.proto */
1610 static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);
1611 
1612 /* PyCFunctionFastCall.proto */
1613 #if CYTHON_FAST_PYCCALL
1614 static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
1615 #else
1616 #define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
1617 #endif
1618 
1619 /* PyFunctionFastCall.proto */
1620 #if CYTHON_FAST_PYCALL
1621 #define __Pyx_PyFunction_FastCall(func, args, nargs)\
1622     __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
1623 #if 1 || PY_VERSION_HEX < 0x030600B1
1624 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
1625 #else
1626 #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
1627 #endif
1628 #define __Pyx_BUILD_ASSERT_EXPR(cond)\
1629     (sizeof(char [1 - 2*!(cond)]) - 1)
1630 #ifndef Py_MEMBER_SIZE
1631 #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
1632 #endif
1633   static size_t __pyx_pyframe_localsplus_offset = 0;
1634   #include "frameobject.h"
1635   #define __Pxy_PyFrame_Initialize_Offsets()\
1636     ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
1637      (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
1638   #define __Pyx_PyFrame_GetLocalsplus(frame)\
1639     (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
1640 #endif
1641 
1642 /* PyObjectCall.proto */
1643 #if CYTHON_COMPILING_IN_CPYTHON
1644 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
1645 #else
1646 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
1647 #endif
1648 
1649 /* PyObjectCallMethO.proto */
1650 #if CYTHON_COMPILING_IN_CPYTHON
1651 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
1652 #endif
1653 
1654 /* PyObjectCallOneArg.proto */
1655 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
1656 
1657 /* PyDictVersioning.proto */
1658 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
1659 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
1660 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
1661 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
1662     (version_var) = __PYX_GET_DICT_VERSION(dict);\
1663     (cache_var) = (value);
1664 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
1665     static PY_UINT64_T __pyx_dict_version = 0;\
1666     static PyObject *__pyx_dict_cached_value = NULL;\
1667     if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
1668         (VAR) = __pyx_dict_cached_value;\
1669     } else {\
1670         (VAR) = __pyx_dict_cached_value = (LOOKUP);\
1671         __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
1672     }\
1673 }
1674 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
1675 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
1676 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
1677 #else
1678 #define __PYX_GET_DICT_VERSION(dict)  (0)
1679 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
1680 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
1681 #endif
1682 
1683 /* GetModuleGlobalName.proto */
1684 #if CYTHON_USE_DICT_VERSIONS
1685 #define __Pyx_GetModuleGlobalName(var, name)  {\
1686     static PY_UINT64_T __pyx_dict_version = 0;\
1687     static PyObject *__pyx_dict_cached_value = NULL;\
1688     (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
1689         (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
1690         __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
1691 }
1692 #define __Pyx_GetModuleGlobalNameUncached(var, name)  {\
1693     PY_UINT64_T __pyx_dict_version;\
1694     PyObject *__pyx_dict_cached_value;\
1695     (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
1696 }
1697 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
1698 #else
1699 #define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
1700 #define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
1701 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
1702 #endif
1703 
1704 /* PyObjectCall2Args.proto */
1705 static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
1706 
1707 /* MemviewSliceInit.proto */
1708 #define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d
1709 #define __Pyx_MEMVIEW_DIRECT   1
1710 #define __Pyx_MEMVIEW_PTR      2
1711 #define __Pyx_MEMVIEW_FULL     4
1712 #define __Pyx_MEMVIEW_CONTIG   8
1713 #define __Pyx_MEMVIEW_STRIDED  16
1714 #define __Pyx_MEMVIEW_FOLLOW   32
1715 #define __Pyx_IS_C_CONTIG 1
1716 #define __Pyx_IS_F_CONTIG 2
1717 static int __Pyx_init_memviewslice(
1718                 struct __pyx_memoryview_obj *memview,
1719                 int ndim,
1720                 __Pyx_memviewslice *memviewslice,
1721                 int memview_is_new_reference);
1722 static CYTHON_INLINE int __pyx_add_acquisition_count_locked(
1723     __pyx_atomic_int *acquisition_count, PyThread_type_lock lock);
1724 static CYTHON_INLINE int __pyx_sub_acquisition_count_locked(
1725     __pyx_atomic_int *acquisition_count, PyThread_type_lock lock);
1726 #define __pyx_get_slice_count_pointer(memview) (memview->acquisition_count_aligned_p)
1727 #define __pyx_get_slice_count(memview) (*__pyx_get_slice_count_pointer(memview))
1728 #define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__)
1729 #define __PYX_XDEC_MEMVIEW(slice, have_gil) __Pyx_XDEC_MEMVIEW(slice, have_gil, __LINE__)
1730 static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int);
1731 static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *, int, int);
1732 
1733 /* ArgTypeTest.proto */
1734 #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
1735     ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
1736         __Pyx__ArgTypeTest(obj, type, name, exact))
1737 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
1738 
1739 /* GetItemInt.proto */
1740 #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1741     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1742     __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
1743     (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
1744                __Pyx_GetItemInt_Generic(o, to_py_func(i))))
1745 #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1746     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1747     __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
1748     (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
1749 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
1750                                                               int wraparound, int boundscheck);
1751 #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1752     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1753     __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
1754     (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
1755 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
1756                                                               int wraparound, int boundscheck);
1757 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
1758 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
1759                                                      int is_list, int wraparound, int boundscheck);
1760 
1761 /* RaiseException.proto */
1762 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
1763 
1764 /* RaiseDoubleKeywords.proto */
1765 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
1766 
1767 /* ParseKeywords.proto */
1768 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
1769     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
1770     const char* function_name);
1771 
1772 /* IsLittleEndian.proto */
1773 static CYTHON_INLINE int __Pyx_Is_Little_Endian(void);
1774 
1775 /* BufferFormatCheck.proto */
1776 static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts);
1777 static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
1778                               __Pyx_BufFmt_StackElem* stack,
1779                               __Pyx_TypeInfo* type);
1780 
1781 /* BufferGetAndValidate.proto */
1782 #define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\
1783     ((obj == Py_None || obj == NULL) ?\
1784     (__Pyx_ZeroBuffer(buf), 0) :\
1785     __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack))
1786 static int  __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj,
1787     __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
1788 static void __Pyx_ZeroBuffer(Py_buffer* buf);
1789 static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
1790 static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 };
1791 static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
1792 
1793 /* PyNumberPow2.proto */
1794 #define __Pyx_PyNumber_InPlacePowerOf2(a, b, c) __Pyx__PyNumber_PowerOf2(a, b, c, 1)
1795 #define __Pyx_PyNumber_PowerOf2(a, b, c) __Pyx__PyNumber_PowerOf2(a, b, c, 0)
1796 static PyObject* __Pyx__PyNumber_PowerOf2(PyObject *two, PyObject *exp, PyObject *none, int inplace);
1797 
1798 /* None.proto */
1799 static CYTHON_INLINE npy_intp __Pyx_div_npy_intp(npy_intp, npy_intp);
1800 
1801 /* UnaryNegOverflows.proto */
1802 #define UNARY_NEG_WOULD_OVERFLOW(x)\
1803         (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
1804 
1805 /* BufferIndexError.proto */
1806 static void __Pyx_RaiseBufferIndexError(int axis);
1807 
1808 #define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
1809 /* ObjectGetItem.proto */
1810 #if CYTHON_USE_TYPE_SLOTS
1811 static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
1812 #else
1813 #define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
1814 #endif
1815 
1816 /* PyObjectCallNoArg.proto */
1817 #if CYTHON_COMPILING_IN_CPYTHON
1818 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
1819 #else
1820 #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
1821 #endif
1822 
1823 /* ExtTypeTest.proto */
1824 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
1825 
1826 #define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)
1827 /* BufferFallbackError.proto */
1828 static void __Pyx_RaiseBufferFallbackError(void);
1829 
1830 /* UnpackUnboundCMethod.proto */
1831 typedef struct {
1832     PyObject *type;
1833     PyObject **method_name;
1834     PyCFunction func;
1835     PyObject *method;
1836     int flag;
1837 } __Pyx_CachedCFunction;
1838 
1839 /* CallUnboundCMethod1.proto */
1840 static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
1841 #if CYTHON_COMPILING_IN_CPYTHON
1842 static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
1843 #else
1844 #define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
1845 #endif
1846 
1847 /* CallUnboundCMethod0.proto */
1848 static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
1849 #if CYTHON_COMPILING_IN_CPYTHON
1850 #define __Pyx_CallUnboundCMethod0(cfunc, self)\
1851     (likely((cfunc)->func) ?\
1852         (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
1853          (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
1854             (PY_VERSION_HEX >= 0x030700A0 ?\
1855                 (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
1856                 (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
1857           (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
1858             (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
1859             (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
1860                ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
1861                __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
1862         __Pyx__CallUnboundCMethod0(cfunc, self))
1863 #else
1864 #define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
1865 #endif
1866 
1867 /* DictGetItem.proto */
1868 #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
1869 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
1870 #define __Pyx_PyObject_Dict_GetItem(obj, name)\
1871     (likely(PyDict_CheckExact(obj)) ?\
1872      __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
1873 #else
1874 #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
1875 #define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
1876 #endif
1877 
1878 /* RaiseTooManyValuesToUnpack.proto */
1879 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
1880 
1881 /* RaiseNeedMoreValuesToUnpack.proto */
1882 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
1883 
1884 /* RaiseNoneIterError.proto */
1885 static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
1886 
1887 /* GetTopmostException.proto */
1888 #if CYTHON_USE_EXC_INFO_STACK
1889 static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
1890 #endif
1891 
1892 /* SaveResetException.proto */
1893 #if CYTHON_FAST_THREAD_STATE
1894 #define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
1895 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1896 #define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
1897 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1898 #else
1899 #define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
1900 #define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
1901 #endif
1902 
1903 /* PyErrExceptionMatches.proto */
1904 #if CYTHON_FAST_THREAD_STATE
1905 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
1906 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
1907 #else
1908 #define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
1909 #endif
1910 
1911 /* GetException.proto */
1912 #if CYTHON_FAST_THREAD_STATE
1913 #define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
1914 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1915 #else
1916 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
1917 #endif
1918 
1919 /* IncludeStringH.proto */
1920 #include <string.h>
1921 
1922 /* BytesEquals.proto */
1923 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
1924 
1925 /* UnicodeEquals.proto */
1926 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
1927 
1928 /* StrEquals.proto */
1929 #if PY_MAJOR_VERSION >= 3
1930 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
1931 #else
1932 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
1933 #endif
1934 
1935 /* None.proto */
1936 static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t);
1937 
1938 static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
1939 static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/
1940 /* GetAttr.proto */
1941 static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
1942 
1943 /* decode_c_string_utf16.proto */
__Pyx_PyUnicode_DecodeUTF16(const char * s,Py_ssize_t size,const char * errors)1944 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
1945     int byteorder = 0;
1946     return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
1947 }
__Pyx_PyUnicode_DecodeUTF16LE(const char * s,Py_ssize_t size,const char * errors)1948 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
1949     int byteorder = -1;
1950     return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
1951 }
__Pyx_PyUnicode_DecodeUTF16BE(const char * s,Py_ssize_t size,const char * errors)1952 static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
1953     int byteorder = 1;
1954     return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
1955 }
1956 
1957 /* decode_c_string.proto */
1958 static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
1959          const char* cstring, Py_ssize_t start, Py_ssize_t stop,
1960          const char* encoding, const char* errors,
1961          PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
1962 
1963 /* GetAttr3.proto */
1964 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
1965 
1966 /* SwapException.proto */
1967 #if CYTHON_FAST_THREAD_STATE
1968 #define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
1969 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1970 #else
1971 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
1972 #endif
1973 
1974 /* Import.proto */
1975 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
1976 
1977 /* FastTypeChecks.proto */
1978 #if CYTHON_COMPILING_IN_CPYTHON
1979 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
1980 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
1981 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
1982 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
1983 #else
1984 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
1985 #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
1986 #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
1987 #endif
1988 #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
1989 
1990 static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
1991 /* PyIntBinop.proto */
1992 #if !CYTHON_COMPILING_IN_PYPY
1993 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
1994 #else
1995 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
1996     (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
1997 #endif
1998 
1999 /* ListExtend.proto */
__Pyx_PyList_Extend(PyObject * L,PyObject * v)2000 static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
2001 #if CYTHON_COMPILING_IN_CPYTHON
2002     PyObject* none = _PyList_Extend((PyListObject*)L, v);
2003     if (unlikely(!none))
2004         return -1;
2005     Py_DECREF(none);
2006     return 0;
2007 #else
2008     return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
2009 #endif
2010 }
2011 
2012 /* ListAppend.proto */
2013 #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
__Pyx_PyList_Append(PyObject * list,PyObject * x)2014 static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
2015     PyListObject* L = (PyListObject*) list;
2016     Py_ssize_t len = Py_SIZE(list);
2017     if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
2018         Py_INCREF(x);
2019         PyList_SET_ITEM(list, len, x);
2020         Py_SIZE(list) = len+1;
2021         return 0;
2022     }
2023     return PyList_Append(list, x);
2024 }
2025 #else
2026 #define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
2027 #endif
2028 
2029 /* None.proto */
2030 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
2031 
2032 /* None.proto */
2033 static CYTHON_INLINE long __Pyx_div_long(long, long);
2034 
2035 /* ImportFrom.proto */
2036 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
2037 
2038 /* HasAttr.proto */
2039 static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
2040 
2041 /* StringJoin.proto */
2042 #if PY_MAJOR_VERSION < 3
2043 #define __Pyx_PyString_Join __Pyx_PyBytes_Join
2044 #define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v))
2045 #else
2046 #define __Pyx_PyString_Join PyUnicode_Join
2047 #define __Pyx_PyBaseString_Join PyUnicode_Join
2048 #endif
2049 #if CYTHON_COMPILING_IN_CPYTHON
2050     #if PY_MAJOR_VERSION < 3
2051     #define __Pyx_PyBytes_Join _PyString_Join
2052     #else
2053     #define __Pyx_PyBytes_Join _PyBytes_Join
2054     #endif
2055 #else
2056 static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);
2057 #endif
2058 
2059 /* PyObject_Unicode.proto */
2060 #if PY_MAJOR_VERSION >= 3
2061 #define __Pyx_PyObject_Unicode(obj)\
2062     (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))
2063 #else
2064 #define __Pyx_PyObject_Unicode(obj)\
2065     (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj))
2066 #endif
2067 
2068 /* PyObject_GenericGetAttrNoDict.proto */
2069 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
2070 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
2071 #else
2072 #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
2073 #endif
2074 
2075 /* PyObject_GenericGetAttr.proto */
2076 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
2077 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
2078 #else
2079 #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
2080 #endif
2081 
2082 /* SetVTable.proto */
2083 static int __Pyx_SetVtable(PyObject *dict, void *vtable);
2084 
2085 /* SetupReduce.proto */
2086 static int __Pyx_setup_reduce(PyObject* type_obj);
2087 
2088 /* TypeImport.proto */
2089 #ifndef __PYX_HAVE_RT_ImportType_proto
2090 #define __PYX_HAVE_RT_ImportType_proto
2091 enum __Pyx_ImportType_CheckSize {
2092    __Pyx_ImportType_CheckSize_Error = 0,
2093    __Pyx_ImportType_CheckSize_Warn = 1,
2094    __Pyx_ImportType_CheckSize_Ignore = 2
2095 };
2096 static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
2097 #endif
2098 
2099 /* ClassMethod.proto */
2100 #include "descrobject.h"
2101 static CYTHON_UNUSED PyObject* __Pyx_Method_ClassMethod(PyObject *method);
2102 
2103 /* GetNameInClass.proto */
2104 #define __Pyx_GetNameInClass(var, nmspace, name)  (var) = __Pyx__GetNameInClass(nmspace, name)
2105 static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name);
2106 
2107 /* CLineInTraceback.proto */
2108 #ifdef CYTHON_CLINE_IN_TRACEBACK
2109 #define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
2110 #else
2111 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
2112 #endif
2113 
2114 /* CodeObjectCache.proto */
2115 typedef struct {
2116     PyCodeObject* code_object;
2117     int code_line;
2118 } __Pyx_CodeObjectCacheEntry;
2119 struct __Pyx_CodeObjectCache {
2120     int count;
2121     int max_count;
2122     __Pyx_CodeObjectCacheEntry* entries;
2123 };
2124 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
2125 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
2126 static PyCodeObject *__pyx_find_code_object(int code_line);
2127 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
2128 
2129 /* AddTraceback.proto */
2130 static void __Pyx_AddTraceback(const char *funcname, int c_line,
2131                                int py_line, const char *filename);
2132 
2133 #if PY_MAJOR_VERSION < 3
2134     static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
2135     static void __Pyx_ReleaseBuffer(Py_buffer *view);
2136 #else
2137     #define __Pyx_GetBuffer PyObject_GetBuffer
2138     #define __Pyx_ReleaseBuffer PyBuffer_Release
2139 #endif
2140 
2141 
2142 /* BufferStructDeclare.proto */
2143 typedef struct {
2144   Py_ssize_t shape, strides, suboffsets;
2145 } __Pyx_Buf_DimInfo;
2146 typedef struct {
2147   size_t refcount;
2148   Py_buffer pybuffer;
2149 } __Pyx_Buffer;
2150 typedef struct {
2151   __Pyx_Buffer *rcbuffer;
2152   char *data;
2153   __Pyx_Buf_DimInfo diminfo[8];
2154 } __Pyx_LocalBuf_ND;
2155 
2156 /* MemviewSliceIsContig.proto */
2157 static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim);
2158 
2159 /* OverlappingSlices.proto */
2160 static int __pyx_slices_overlap(__Pyx_memviewslice *slice1,
2161                                 __Pyx_memviewslice *slice2,
2162                                 int ndim, size_t itemsize);
2163 
2164 /* Capsule.proto */
2165 static CYTHON_INLINE PyObject *__pyx_capsule_create(void *p, const char *sig);
2166 
2167 /* CIntToPy.proto */
2168 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint32(npy_uint32 value);
2169 
2170 /* CIntToPy.proto */
2171 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value);
2172 
2173 /* CIntToPy.proto */
2174 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint64(npy_uint64 value);
2175 
2176 /* MemviewDtypeToObject.proto */
2177 static CYTHON_INLINE PyObject *__pyx_memview_get_nn_bool(const char *itemp);
2178 static CYTHON_INLINE int __pyx_memview_set_nn_bool(const char *itemp, PyObject *obj);
2179 
2180 /* MemviewDtypeToObject.proto */
2181 static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_float64_t(const char *itemp);
2182 static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_float64_t(const char *itemp, PyObject *obj);
2183 
2184 /* CIntToPy.proto */
2185 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value);
2186 
2187 /* CIntToPy.proto */
2188 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value);
2189 
2190 /* MemviewDtypeToObject.proto */
2191 static CYTHON_INLINE PyObject *__pyx_memview_get_nn_uint64_t(const char *itemp);
2192 static CYTHON_INLINE int __pyx_memview_set_nn_uint64_t(const char *itemp, PyObject *obj);
2193 
2194 /* CppExceptionConversion.proto */
2195 #ifndef __Pyx_CppExn2PyErr
2196 #include <new>
2197 #include <typeinfo>
2198 #include <stdexcept>
2199 #include <ios>
__Pyx_CppExn2PyErr()2200 static void __Pyx_CppExn2PyErr() {
2201   try {
2202     if (PyErr_Occurred())
2203       ; // let the latest Python exn pass through and ignore the current one
2204     else
2205       throw;
2206   } catch (const std::bad_alloc& exn) {
2207     PyErr_SetString(PyExc_MemoryError, exn.what());
2208   } catch (const std::bad_cast& exn) {
2209     PyErr_SetString(PyExc_TypeError, exn.what());
2210   } catch (const std::bad_typeid& exn) {
2211     PyErr_SetString(PyExc_TypeError, exn.what());
2212   } catch (const std::domain_error& exn) {
2213     PyErr_SetString(PyExc_ValueError, exn.what());
2214   } catch (const std::invalid_argument& exn) {
2215     PyErr_SetString(PyExc_ValueError, exn.what());
2216   } catch (const std::ios_base::failure& exn) {
2217     PyErr_SetString(PyExc_IOError, exn.what());
2218   } catch (const std::out_of_range& exn) {
2219     PyErr_SetString(PyExc_IndexError, exn.what());
2220   } catch (const std::overflow_error& exn) {
2221     PyErr_SetString(PyExc_OverflowError, exn.what());
2222   } catch (const std::range_error& exn) {
2223     PyErr_SetString(PyExc_ArithmeticError, exn.what());
2224   } catch (const std::underflow_error& exn) {
2225     PyErr_SetString(PyExc_ArithmeticError, exn.what());
2226   } catch (const std::exception& exn) {
2227     PyErr_SetString(PyExc_RuntimeError, exn.what());
2228   }
2229   catch (...)
2230   {
2231     PyErr_SetString(PyExc_RuntimeError, "Unknown exception");
2232   }
2233 }
2234 #endif
2235 
2236 /* RealImag.proto */
2237 #if CYTHON_CCOMPLEX
2238   #ifdef __cplusplus
2239     #define __Pyx_CREAL(z) ((z).real())
2240     #define __Pyx_CIMAG(z) ((z).imag())
2241   #else
2242     #define __Pyx_CREAL(z) (__real__(z))
2243     #define __Pyx_CIMAG(z) (__imag__(z))
2244   #endif
2245 #else
2246     #define __Pyx_CREAL(z) ((z).real)
2247     #define __Pyx_CIMAG(z) ((z).imag)
2248 #endif
2249 #if defined(__cplusplus) && CYTHON_CCOMPLEX\
2250         && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
2251     #define __Pyx_SET_CREAL(z,x) ((z).real(x))
2252     #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
2253 #else
2254     #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
2255     #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
2256 #endif
2257 
2258 /* Arithmetic.proto */
2259 #if CYTHON_CCOMPLEX
2260     #define __Pyx_c_eq_float(a, b)   ((a)==(b))
2261     #define __Pyx_c_sum_float(a, b)  ((a)+(b))
2262     #define __Pyx_c_diff_float(a, b) ((a)-(b))
2263     #define __Pyx_c_prod_float(a, b) ((a)*(b))
2264     #define __Pyx_c_quot_float(a, b) ((a)/(b))
2265     #define __Pyx_c_neg_float(a)     (-(a))
2266   #ifdef __cplusplus
2267     #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
2268     #define __Pyx_c_conj_float(z)    (::std::conj(z))
2269     #if 1
2270         #define __Pyx_c_abs_float(z)     (::std::abs(z))
2271         #define __Pyx_c_pow_float(a, b)  (::std::pow(a, b))
2272     #endif
2273   #else
2274     #define __Pyx_c_is_zero_float(z) ((z)==0)
2275     #define __Pyx_c_conj_float(z)    (conjf(z))
2276     #if 1
2277         #define __Pyx_c_abs_float(z)     (cabsf(z))
2278         #define __Pyx_c_pow_float(a, b)  (cpowf(a, b))
2279     #endif
2280  #endif
2281 #else
2282     static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
2283     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
2284     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
2285     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
2286     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
2287     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
2288     static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
2289     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
2290     #if 1
2291         static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
2292         static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
2293     #endif
2294 #endif
2295 
2296 /* Arithmetic.proto */
2297 #if CYTHON_CCOMPLEX
2298     #define __Pyx_c_eq_double(a, b)   ((a)==(b))
2299     #define __Pyx_c_sum_double(a, b)  ((a)+(b))
2300     #define __Pyx_c_diff_double(a, b) ((a)-(b))
2301     #define __Pyx_c_prod_double(a, b) ((a)*(b))
2302     #define __Pyx_c_quot_double(a, b) ((a)/(b))
2303     #define __Pyx_c_neg_double(a)     (-(a))
2304   #ifdef __cplusplus
2305     #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
2306     #define __Pyx_c_conj_double(z)    (::std::conj(z))
2307     #if 1
2308         #define __Pyx_c_abs_double(z)     (::std::abs(z))
2309         #define __Pyx_c_pow_double(a, b)  (::std::pow(a, b))
2310     #endif
2311   #else
2312     #define __Pyx_c_is_zero_double(z) ((z)==0)
2313     #define __Pyx_c_conj_double(z)    (conj(z))
2314     #if 1
2315         #define __Pyx_c_abs_double(z)     (cabs(z))
2316         #define __Pyx_c_pow_double(a, b)  (cpow(a, b))
2317     #endif
2318  #endif
2319 #else
2320     static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
2321     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
2322     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
2323     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
2324     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
2325     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
2326     static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
2327     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
2328     #if 1
2329         static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
2330         static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
2331     #endif
2332 #endif
2333 
2334 /* CIntToPy.proto */
2335 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
2336 
2337 /* CIntToPy.proto */
2338 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);
2339 
2340 /* MemviewSliceCopyTemplate.proto */
2341 static __Pyx_memviewslice
2342 __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
2343                                  const char *mode, int ndim,
2344                                  size_t sizeof_dtype, int contig_flag,
2345                                  int dtype_is_object);
2346 
2347 /* TypeInfoToFormat.proto */
2348 struct __pyx_typeinfo_string {
2349     char string[3];
2350 };
2351 static struct __pyx_typeinfo_string __Pyx_TypeInfoToFormat(__Pyx_TypeInfo *type);
2352 
2353 /* CIntFromPy.proto */
2354 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
2355 
2356 /* CIntFromPy.proto */
2357 static CYTHON_INLINE npy_uint32 __Pyx_PyInt_As_npy_uint32(PyObject *);
2358 
2359 /* CIntFromPy.proto */
2360 static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *);
2361 
2362 /* CIntFromPy.proto */
2363 static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *);
2364 
2365 /* CIntFromPy.proto */
2366 static CYTHON_INLINE uint32_t __Pyx_PyInt_As_uint32_t(PyObject *);
2367 
2368 /* CIntFromPy.proto */
2369 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
2370 
2371 /* CIntToPy.proto */
2372 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
2373 
2374 /* CIntFromPy.proto */
2375 static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);
2376 
2377 /* TypeInfoCompare.proto */
2378 static int __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b);
2379 
2380 /* MemviewSliceValidateAndInit.proto */
2381 static int __Pyx_ValidateAndInit_memviewslice(
2382                 int *axes_specs,
2383                 int c_or_f_flag,
2384                 int buf_flags,
2385                 int ndim,
2386                 __Pyx_TypeInfo *dtype,
2387                 __Pyx_BufFmt_StackElem stack[],
2388                 __Pyx_memviewslice *memviewslice,
2389                 PyObject *original_obj);
2390 
2391 /* ObjectToMemviewSlice.proto */
2392 static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_bool(PyObject *, int writable_flag);
2393 
2394 /* ObjectToMemviewSlice.proto */
2395 static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(PyObject *, int writable_flag);
2396 
2397 /* ObjectToMemviewSlice.proto */
2398 static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_uint64_t(PyObject *, int writable_flag);
2399 
2400 /* CheckBinaryVersion.proto */
2401 static int __Pyx_check_binary_version(void);
2402 
2403 /* InitStrings.proto */
2404 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
2405 
2406 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode__init_node(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self, Node *__pyx_v_node, uint32_t __pyx_v_num_leaves, double *__pyx_v_domain_width); /* proto*/
2407 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__init_tree(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, KDTree *__pyx_v_tree); /* proto*/
2408 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_tree(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, double *__pyx_v_pts, bool __pyx_v_use_sliding_midpoint); /* proto*/
2409 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_leaves(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto*/
2410 static PyArrayObject *__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos); /* proto*/
2411 static PyArrayObject *__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids_3(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, __pyx_t_5numpy_float64_t *__pyx_v_pos); /* proto*/
2412 static struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos); /* proto*/
2413 static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self); /* proto*/
2414 static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto*/
2415 static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/
2416 static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src); /* proto*/
2417 static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value); /* proto*/
2418 static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto*/
2419 static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/
2420 static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/
2421 static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp); /* proto*/
2422 static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value); /* proto*/
2423 
2424 /* Module declarations from 'cpython.buffer' */
2425 
2426 /* Module declarations from 'libc.string' */
2427 
2428 /* Module declarations from 'libc.stdio' */
2429 
2430 /* Module declarations from '__builtin__' */
2431 
2432 /* Module declarations from 'cpython.type' */
2433 static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
2434 
2435 /* Module declarations from 'cpython.version' */
2436 
2437 /* Module declarations from 'cpython.exc' */
2438 
2439 /* Module declarations from 'cpython.module' */
2440 
2441 /* Module declarations from 'cpython.mem' */
2442 
2443 /* Module declarations from 'cpython.tuple' */
2444 
2445 /* Module declarations from 'cpython.list' */
2446 
2447 /* Module declarations from 'cpython.sequence' */
2448 
2449 /* Module declarations from 'cpython.mapping' */
2450 
2451 /* Module declarations from 'cpython.iterator' */
2452 
2453 /* Module declarations from 'cpython.number' */
2454 
2455 /* Module declarations from 'cpython.int' */
2456 
2457 /* Module declarations from '__builtin__' */
2458 
2459 /* Module declarations from 'cpython.bool' */
2460 static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;
2461 
2462 /* Module declarations from 'cpython.long' */
2463 
2464 /* Module declarations from 'cpython.float' */
2465 
2466 /* Module declarations from '__builtin__' */
2467 
2468 /* Module declarations from 'cpython.complex' */
2469 static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;
2470 
2471 /* Module declarations from 'cpython.string' */
2472 
2473 /* Module declarations from 'cpython.unicode' */
2474 
2475 /* Module declarations from 'cpython.dict' */
2476 
2477 /* Module declarations from 'cpython.instance' */
2478 
2479 /* Module declarations from 'cpython.function' */
2480 
2481 /* Module declarations from 'cpython.method' */
2482 
2483 /* Module declarations from 'cpython.weakref' */
2484 
2485 /* Module declarations from 'cpython.getargs' */
2486 
2487 /* Module declarations from 'cpython.pythread' */
2488 
2489 /* Module declarations from 'cpython.pystate' */
2490 
2491 /* Module declarations from 'cpython.cobject' */
2492 
2493 /* Module declarations from 'cpython.oldbuffer' */
2494 
2495 /* Module declarations from 'cpython.set' */
2496 
2497 /* Module declarations from 'cpython.bytes' */
2498 
2499 /* Module declarations from 'cpython.pycapsule' */
2500 
2501 /* Module declarations from 'cpython' */
2502 
2503 /* Module declarations from 'cpython.object' */
2504 
2505 /* Module declarations from 'cpython.ref' */
2506 
2507 /* Module declarations from 'numpy' */
2508 
2509 /* Module declarations from 'numpy' */
2510 static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
2511 static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
2512 static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
2513 static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
2514 static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
2515 static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
2516 
2517 /* Module declarations from 'libc.stdint' */
2518 
2519 /* Module declarations from 'libcpp' */
2520 
2521 /* Module declarations from 'libcpp.utility' */
2522 
2523 /* Module declarations from 'libcpp.pair' */
2524 
2525 /* Module declarations from 'libcpp.vector' */
2526 
2527 /* Module declarations from 'cython.view' */
2528 static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/
2529 
2530 /* Module declarations from 'cython' */
2531 
2532 /* Module declarations from 'libc.stdlib' */
2533 
2534 /* Module declarations from 'yt.utilities.lib.cykdtree.kdtree' */
2535 static PyTypeObject *__pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode = 0;
2536 static PyTypeObject *__pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree = 0;
2537 static PyTypeObject *__pyx_array_type = 0;
2538 static PyTypeObject *__pyx_MemviewEnum_type = 0;
2539 static PyTypeObject *__pyx_memoryview_type = 0;
2540 static PyTypeObject *__pyx_memoryviewslice_type = 0;
2541 static PyObject *generic = 0;
2542 static PyObject *strided = 0;
2543 static PyObject *indirect = 0;
2544 static PyObject *contiguous = 0;
2545 static PyObject *indirect_contiguous = 0;
2546 static int __pyx_memoryview_thread_locks_used;
2547 static PyThread_type_lock __pyx_memoryview_thread_locks[8];
2548 static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char *, char *); /*proto*/
2549 static void *__pyx_align_pointer(void *, size_t); /*proto*/
2550 static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo *); /*proto*/
2551 static CYTHON_INLINE int __pyx_memoryview_check(PyObject *); /*proto*/
2552 static PyObject *_unellipsify(PyObject *, int); /*proto*/
2553 static PyObject *assert_direct_dimensions(Py_ssize_t *, int); /*proto*/
2554 static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *, PyObject *); /*proto*/
2555 static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int *, Py_ssize_t, Py_ssize_t, Py_ssize_t, int, int, int, int); /*proto*/
2556 static char *__pyx_pybuffer_index(Py_buffer *, char *, Py_ssize_t, Py_ssize_t); /*proto*/
2557 static int __pyx_memslice_transpose(__Pyx_memviewslice *); /*proto*/
2558 static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice, int, PyObject *(*)(char *), int (*)(char *, PyObject *), int); /*proto*/
2559 static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
2560 static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
2561 static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *); /*proto*/
2562 static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *, __Pyx_memviewslice *); /*proto*/
2563 static Py_ssize_t abs_py_ssize_t(Py_ssize_t); /*proto*/
2564 static char __pyx_get_best_slice_order(__Pyx_memviewslice *, int); /*proto*/
2565 static void _copy_strided_to_strided(char *, Py_ssize_t *, char *, Py_ssize_t *, Py_ssize_t *, Py_ssize_t *, int, size_t); /*proto*/
2566 static void copy_strided_to_strided(__Pyx_memviewslice *, __Pyx_memviewslice *, int, size_t); /*proto*/
2567 static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *, int); /*proto*/
2568 static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *, Py_ssize_t *, Py_ssize_t, int, char); /*proto*/
2569 static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *, __Pyx_memviewslice *, char, int); /*proto*/
2570 static int __pyx_memoryview_err_extents(int, Py_ssize_t, Py_ssize_t); /*proto*/
2571 static int __pyx_memoryview_err_dim(PyObject *, char *, int); /*proto*/
2572 static int __pyx_memoryview_err(PyObject *, char *); /*proto*/
2573 static int __pyx_memoryview_copy_contents(__Pyx_memviewslice, __Pyx_memviewslice, int, int, int); /*proto*/
2574 static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *, int, int); /*proto*/
2575 static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *, int, int, int); /*proto*/
2576 static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/
2577 static void __pyx_memoryview_refcount_objects_in_slice(char *, Py_ssize_t *, Py_ssize_t *, int, int); /*proto*/
2578 static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *, int, size_t, void *, int); /*proto*/
2579 static void __pyx_memoryview__slice_assign_scalar(char *, Py_ssize_t *, Py_ssize_t *, int, size_t, void *); /*proto*/
2580 static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, PyObject *); /*proto*/
2581 static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *); /*proto*/
2582 static __Pyx_TypeInfo __Pyx_TypeInfo_nn_bool = { "bool", NULL, sizeof(bool), { 0 }, 0, IS_UNSIGNED(bool) ? 'U' : 'I', IS_UNSIGNED(bool), 0 };
2583 static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), { 0 }, 0, 'R', 0, 0 };
2584 static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 };
2585 static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint64_t = { "uint64_t", NULL, sizeof(__pyx_t_5numpy_uint64_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint64_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint64_t), 0 };
2586 static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t = { "uint32_t", NULL, sizeof(__pyx_t_5numpy_uint32_t), { 0 }, 0, IS_UNSIGNED(__pyx_t_5numpy_uint32_t) ? 'U' : 'I', IS_UNSIGNED(__pyx_t_5numpy_uint32_t), 0 };
2587 static __Pyx_TypeInfo __Pyx_TypeInfo_nn_uint64_t = { "uint64_t", NULL, sizeof(uint64_t), { 0 }, 0, IS_UNSIGNED(uint64_t) ? 'U' : 'I', IS_UNSIGNED(uint64_t), 0 };
2588 #define __Pyx_MODULE_NAME "yt.utilities.lib.cykdtree.kdtree"
2589 extern int __pyx_module_is_main_yt__utilities__lib__cykdtree__kdtree;
2590 int __pyx_module_is_main_yt__utilities__lib__cykdtree__kdtree = 0;
2591 
2592 /* Implementation of 'yt.utilities.lib.cykdtree.kdtree' */
2593 static PyObject *__pyx_builtin_range;
2594 static PyObject *__pyx_builtin_TypeError;
2595 static PyObject *__pyx_builtin_ValueError;
2596 static PyObject *__pyx_builtin_xrange;
2597 static PyObject *__pyx_builtin_RuntimeError;
2598 static PyObject *__pyx_builtin_ImportError;
2599 static PyObject *__pyx_builtin_MemoryError;
2600 static PyObject *__pyx_builtin_enumerate;
2601 static PyObject *__pyx_builtin_Ellipsis;
2602 static PyObject *__pyx_builtin_id;
2603 static PyObject *__pyx_builtin_IndexError;
2604 static const char __pyx_k_[] = " ";
2605 static const char __pyx_k_O[] = "O";
2606 static const char __pyx_k_T[] = "T{";
2607   static const char __pyx_k_c[] = "c";
2608   static const char __pyx_k_s[] = "(%s)";
2609   static const char __pyx_k_id[] = "id";
2610   static const char __pyx_k_np[] = "np";
2611   static const char __pyx_k__33[] = "^";
2612   static const char __pyx_k__34[] = "";
2613   static const char __pyx_k__35[] = ":";
2614 static const char __pyx_k__36[] = "}";
2615 static const char __pyx_k__37[] = ",";
2616 static const char __pyx_k_max[] = "max";
2617 static const char __pyx_k_min[] = "min";
2618 static const char __pyx_k_new[] = "__new__";
2619 static const char __pyx_k_obj[] = "obj";
2620 static const char __pyx_k_pts[] = "pts";
2621 static const char __pyx_k_axis[] = "axis";
2622 static const char __pyx_k_base[] = "base";
2623 static const char __pyx_k_bool[] = "bool";
2624 static const char __pyx_k_ceil[] = "ceil";
2625 static const char __pyx_k_dict[] = "__dict__";
2626 static const char __pyx_k_join[] = "join";
2627 static const char __pyx_k_log2[] = "log2";
2628 static const char __pyx_k_main[] = "__main__";
2629 static const char __pyx_k_mode[] = "mode";
2630 static const char __pyx_k_name[] = "__name__";
2631 static const char __pyx_k_ndim[] = "ndim";
2632 static const char __pyx_k_pack[] = "pack";
2633 static const char __pyx_k_size[] = "size";
2634 static const char __pyx_k_solf[] = "solf";
2635 static const char __pyx_k_sort[] = "sort";
2636 static const char __pyx_k_step[] = "step";
2637 static const char __pyx_k_stop[] = "stop";
2638 static const char __pyx_k_test[] = "__test__";
2639 static const char __pyx_k_utf8[] = "utf8";
2640 static const char __pyx_k_ASCII[] = "ASCII";
2641 static const char __pyx_k_array[] = "array";
2642 static const char __pyx_k_class[] = "__class__";
2643 static const char __pyx_k_empty[] = "empty";
2644 static const char __pyx_k_error[] = "error";
2645 static const char __pyx_k_flags[] = "flags";
2646 static const char __pyx_k_numpy[] = "numpy";
2647 static const char __pyx_k_range[] = "range";
2648 static const char __pyx_k_shape[] = "shape";
2649 static const char __pyx_k_slice[] = "slice";
2650 static const char __pyx_k_start[] = "start";
2651 static const char __pyx_k_PyNode[] = "PyNode";
2652 static const char __pyx_k_arange[] = "arange";
2653 static const char __pyx_k_astype[] = "astype";
2654 static const char __pyx_k_encode[] = "encode";
2655 static const char __pyx_k_format[] = "format";
2656 static const char __pyx_k_import[] = "__import__";
2657 static const char __pyx_k_name_2[] = "name";
2658 static const char __pyx_k_pickle[] = "pickle";
2659 static const char __pyx_k_reduce[] = "__reduce__";
2660 static const char __pyx_k_struct[] = "struct";
2661 static const char __pyx_k_uint32[] = "uint32";
2662 static const char __pyx_k_uint64[] = "uint64";
2663 static const char __pyx_k_unpack[] = "unpack";
2664 static const char __pyx_k_update[] = "update";
2665 static const char __pyx_k_xrange[] = "xrange";
2666 static const char __pyx_k_asarray[] = "asarray";
2667 static const char __pyx_k_float64[] = "float64";
2668 static const char __pyx_k_fortran[] = "fortran";
2669 static const char __pyx_k_memview[] = "memview";
2670 static const char __pyx_k_nleaves[] = "nleaves";
2671 static const char __pyx_k_testing[] = "testing";
2672 static const char __pyx_k_Ellipsis[] = "Ellipsis";
2673 static const char __pyx_k_PyKDTree[] = "PyKDTree";
2674 static const char __pyx_k_filename[] = "filename";
2675 static const char __pyx_k_getstate[] = "__getstate__";
2676 static const char __pyx_k_itemsize[] = "itemsize";
2677 static const char __pyx_k_leafsize[] = "leafsize";
2678 static const char __pyx_k_periodic[] = "periodic";
2679 static const char __pyx_k_pyx_type[] = "__pyx_type";
2680 static const char __pyx_k_setstate[] = "__setstate__";
2681 static const char __pyx_k_TypeError[] = "TypeError";
2682 static const char __pyx_k_enumerate[] = "enumerate";
2683 static const char __pyx_k_from_file[] = "from_file";
2684 static const char __pyx_k_left_edge[] = "left_edge";
2685 static const char __pyx_k_neighbors[] = "neighbors";
2686 static const char __pyx_k_pyx_state[] = "__pyx_state";
2687 static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
2688 static const char __pyx_k_IndexError[] = "IndexError";
2689 static const char __pyx_k_ValueError[] = "ValueError";
2690 static const char __pyx_k_pyx_result[] = "__pyx_result";
2691 static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
2692 static const char __pyx_k_right_edge[] = "right_edge";
2693 static const char __pyx_k_strict_idx[] = "strict_idx";
2694 static const char __pyx_k_ImportError[] = "ImportError";
2695 static const char __pyx_k_MemoryError[] = "MemoryError";
2696 static const char __pyx_k_PickleError[] = "PickleError";
2697 static const char __pyx_k_left_edge_s[] = "left_edge=%s,\n";
2698 static const char __pyx_k_RuntimeError[] = "RuntimeError";
2699 static const char __pyx_k_assert_equal[] = "assert_equal";
2700 static const char __pyx_k_data_version[] = "data_version";
2701 static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
2702 static const char __pyx_k_right_edge_s[] = "right_edge=%s)";
2703 static const char __pyx_k_stringsource[] = "stringsource";
2704 static const char __pyx_k_periodic_left[] = "periodic_left";
2705 static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer";
2706 static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
2707 static const char __pyx_k_periodic_right[] = "periodic_right";
2708 static const char __pyx_k_View_MemoryView[] = "View.MemoryView";
2709 static const char __pyx_k_allocate_buffer[] = "allocate_buffer";
2710 static const char __pyx_k_dtype_is_object[] = "dtype_is_object";
2711 static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
2712 static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
2713 static const char __pyx_k_pyx_unpickle_Enum[] = "__pyx_unpickle_Enum";
2714 static const char __pyx_k_assert_array_equal[] = "assert_array_equal";
2715 static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
2716 static const char __pyx_k_strided_and_direct[] = "<strided and direct>";
2717 static const char __pyx_k_strided_and_indirect[] = "<strided and indirect>";
2718 static const char __pyx_k_use_sliding_midpoint[] = "use_sliding_midpoint";
2719 static const char __pyx_k_contiguous_and_direct[] = "<contiguous and direct>";
2720 static const char __pyx_k_MemoryView_of_r_object[] = "<MemoryView of %r object>";
2721 static const char __pyx_k_MemoryView_of_r_at_0x_x[] = "<MemoryView of %r at 0x%x>";
2722 static const char __pyx_k_contiguous_and_indirect[] = "<contiguous and indirect>";
2723 static const char __pyx_k_Cannot_index_with_type_s[] = "Cannot index with type '%s'";
2724 static const char __pyx_k_Invalid_shape_in_axis_d_d[] = "Invalid shape in axis %d: %d.";
2725 static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array";
2726 static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
2727 static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data.";
2728 static const char __pyx_k_s_id_i_npts_i_start_idx_i_stop[] = "%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n";
2729 static const char __pyx_k_strided_and_direct_or_indirect[] = "<strided and direct or indirect>";
2730 static const char __pyx_k_leafsize_cannot_be_smaller_than[] = "'leafsize' cannot be smaller than 2.";
2731 static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
2732 static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
2733 static const char __pyx_k_Buffer_view_does_not_expose_stri[] = "Buffer view does not expose strides";
2734 static const char __pyx_k_Can_only_create_a_buffer_that_is[] = "Can only create a buffer that is contiguous in memory.";
2735 static const char __pyx_k_Cannot_assign_to_read_only_memor[] = "Cannot assign to read-only memoryview";
2736 static const char __pyx_k_Cannot_create_writable_memory_vi[] = "Cannot create writable memory view from read-only memoryview";
2737 static const char __pyx_k_Empty_shape_tuple_for_cython_arr[] = "Empty shape tuple for cython.array";
2738 static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
2739 static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb068931 = (name))";
2740 static const char __pyx_k_Indirect_dimensions_not_supporte[] = "Indirect dimensions not supported";
2741 static const char __pyx_k_Invalid_mode_expected_c_or_fortr[] = "Invalid mode, expected 'c' or 'fortran', got %s";
2742 static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
2743 static const char __pyx_k_Out_of_bounds_on_buffer_access_a[] = "Out of bounds on buffer access (axis %d)";
2744 static const char __pyx_k_Position_is_not_within_the_kdtre[] = "Position is not within the kdtree root node.";
2745 static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to convert item to object";
2746 static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension %d (got %d and %d)";
2747 static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
2748 static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
2749 static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import";
2750 static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides.";
2751 static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
2752 static PyObject *__pyx_kp_s_;
2753 static PyObject *__pyx_n_s_ASCII;
2754 static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri;
2755 static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is;
2756 static PyObject *__pyx_kp_s_Cannot_assign_to_read_only_memor;
2757 static PyObject *__pyx_kp_s_Cannot_create_writable_memory_vi;
2758 static PyObject *__pyx_kp_s_Cannot_index_with_type_s;
2759 static PyObject *__pyx_n_s_Ellipsis;
2760 static PyObject *__pyx_kp_s_Empty_shape_tuple_for_cython_arr;
2761 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor;
2762 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2;
2763 static PyObject *__pyx_n_s_ImportError;
2764 static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0;
2765 static PyObject *__pyx_n_s_IndexError;
2766 static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte;
2767 static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr;
2768 static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d;
2769 static PyObject *__pyx_n_s_MemoryError;
2770 static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x;
2771 static PyObject *__pyx_kp_s_MemoryView_of_r_object;
2772 static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
2773 static PyObject *__pyx_n_b_O;
2774 static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a;
2775 static PyObject *__pyx_n_s_PickleError;
2776 static PyObject *__pyx_kp_s_Position_is_not_within_the_kdtre;
2777 static PyObject *__pyx_n_s_PyKDTree;
2778 static PyObject *__pyx_n_s_PyNode;
2779 static PyObject *__pyx_n_s_RuntimeError;
2780 static PyObject *__pyx_kp_b_T;
2781 static PyObject *__pyx_n_s_TypeError;
2782 static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
2783 static PyObject *__pyx_n_s_ValueError;
2784 static PyObject *__pyx_n_s_View_MemoryView;
2785 static PyObject *__pyx_kp_b__33;
2786 static PyObject *__pyx_kp_b__34;
2787 static PyObject *__pyx_kp_b__35;
2788 static PyObject *__pyx_kp_b__36;
2789 static PyObject *__pyx_kp_u__37;
2790 static PyObject *__pyx_n_s_allocate_buffer;
2791 static PyObject *__pyx_n_s_arange;
2792 static PyObject *__pyx_n_s_array;
2793 static PyObject *__pyx_n_s_asarray;
2794 static PyObject *__pyx_n_s_assert_array_equal;
2795 static PyObject *__pyx_n_s_assert_equal;
2796 static PyObject *__pyx_n_s_astype;
2797 static PyObject *__pyx_n_s_axis;
2798 static PyObject *__pyx_n_s_base;
2799 static PyObject *__pyx_n_s_bool;
2800 static PyObject *__pyx_n_s_c;
2801 static PyObject *__pyx_n_u_c;
2802 static PyObject *__pyx_n_s_ceil;
2803 static PyObject *__pyx_n_s_class;
2804 static PyObject *__pyx_n_s_cline_in_traceback;
2805 static PyObject *__pyx_kp_s_contiguous_and_direct;
2806 static PyObject *__pyx_kp_s_contiguous_and_indirect;
2807 static PyObject *__pyx_n_s_data_version;
2808 static PyObject *__pyx_n_s_dict;
2809 static PyObject *__pyx_n_s_dtype_is_object;
2810 static PyObject *__pyx_n_s_empty;
2811 static PyObject *__pyx_n_s_encode;
2812 static PyObject *__pyx_n_s_enumerate;
2813 static PyObject *__pyx_n_s_error;
2814 static PyObject *__pyx_n_s_filename;
2815 static PyObject *__pyx_n_s_flags;
2816 static PyObject *__pyx_n_s_float64;
2817 static PyObject *__pyx_n_s_format;
2818 static PyObject *__pyx_n_s_fortran;
2819 static PyObject *__pyx_n_u_fortran;
2820 static PyObject *__pyx_n_s_from_file;
2821 static PyObject *__pyx_n_s_getstate;
2822 static PyObject *__pyx_kp_s_got_differing_extents_in_dimensi;
2823 static PyObject *__pyx_n_s_id;
2824 static PyObject *__pyx_n_s_import;
2825 static PyObject *__pyx_n_s_itemsize;
2826 static PyObject *__pyx_kp_s_itemsize_0_for_cython_array;
2827 static PyObject *__pyx_n_s_join;
2828 static PyObject *__pyx_n_s_leafsize;
2829 static PyObject *__pyx_kp_s_leafsize_cannot_be_smaller_than;
2830 static PyObject *__pyx_n_s_left_edge;
2831 static PyObject *__pyx_kp_s_left_edge_s;
2832 static PyObject *__pyx_n_s_log2;
2833 static PyObject *__pyx_n_s_main;
2834 static PyObject *__pyx_n_s_max;
2835 static PyObject *__pyx_n_s_memview;
2836 static PyObject *__pyx_n_s_min;
2837 static PyObject *__pyx_n_s_mode;
2838 static PyObject *__pyx_n_s_name;
2839 static PyObject *__pyx_n_s_name_2;
2840 static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous;
2841 static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou;
2842 static PyObject *__pyx_n_s_ndim;
2843 static PyObject *__pyx_n_s_neighbors;
2844 static PyObject *__pyx_n_s_new;
2845 static PyObject *__pyx_n_s_nleaves;
2846 static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
2847 static PyObject *__pyx_n_s_np;
2848 static PyObject *__pyx_n_s_numpy;
2849 static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to;
2850 static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor;
2851 static PyObject *__pyx_n_s_obj;
2852 static PyObject *__pyx_n_s_pack;
2853 static PyObject *__pyx_n_s_periodic;
2854 static PyObject *__pyx_n_s_periodic_left;
2855 static PyObject *__pyx_n_s_periodic_right;
2856 static PyObject *__pyx_n_s_pickle;
2857 static PyObject *__pyx_n_s_pts;
2858 static PyObject *__pyx_n_s_pyx_PickleError;
2859 static PyObject *__pyx_n_s_pyx_checksum;
2860 static PyObject *__pyx_n_s_pyx_getbuffer;
2861 static PyObject *__pyx_n_s_pyx_result;
2862 static PyObject *__pyx_n_s_pyx_state;
2863 static PyObject *__pyx_n_s_pyx_type;
2864 static PyObject *__pyx_n_s_pyx_unpickle_Enum;
2865 static PyObject *__pyx_n_s_pyx_vtable;
2866 static PyObject *__pyx_n_s_range;
2867 static PyObject *__pyx_n_s_reduce;
2868 static PyObject *__pyx_n_s_reduce_cython;
2869 static PyObject *__pyx_n_s_reduce_ex;
2870 static PyObject *__pyx_n_s_right_edge;
2871 static PyObject *__pyx_kp_s_right_edge_s;
2872 static PyObject *__pyx_kp_u_s;
2873 static PyObject *__pyx_kp_s_s_id_i_npts_i_start_idx_i_stop;
2874 static PyObject *__pyx_n_s_setstate;
2875 static PyObject *__pyx_n_s_setstate_cython;
2876 static PyObject *__pyx_n_s_shape;
2877 static PyObject *__pyx_n_s_size;
2878 static PyObject *__pyx_n_s_slice;
2879 static PyObject *__pyx_n_s_solf;
2880 static PyObject *__pyx_n_s_sort;
2881 static PyObject *__pyx_n_s_start;
2882 static PyObject *__pyx_n_s_step;
2883 static PyObject *__pyx_n_s_stop;
2884 static PyObject *__pyx_n_s_strict_idx;
2885 static PyObject *__pyx_kp_s_strided_and_direct;
2886 static PyObject *__pyx_kp_s_strided_and_direct_or_indirect;
2887 static PyObject *__pyx_kp_s_strided_and_indirect;
2888 static PyObject *__pyx_kp_s_stringsource;
2889 static PyObject *__pyx_n_s_struct;
2890 static PyObject *__pyx_n_s_test;
2891 static PyObject *__pyx_n_s_testing;
2892 static PyObject *__pyx_n_s_uint32;
2893 static PyObject *__pyx_n_s_uint64;
2894 static PyObject *__pyx_kp_s_unable_to_allocate_array_data;
2895 static PyObject *__pyx_kp_s_unable_to_allocate_shape_and_str;
2896 static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd;
2897 static PyObject *__pyx_n_s_unpack;
2898 static PyObject *__pyx_n_s_update;
2899 static PyObject *__pyx_n_s_use_sliding_midpoint;
2900 static PyObject *__pyx_n_s_utf8;
2901 static PyObject *__pyx_n_s_xrange;
2902 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode___cinit__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2903 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2__init__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2904 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4__repr__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2905 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2906 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2907 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2908 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2909 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2910 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2911 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2912 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_6assert_equal(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self, struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_solf); /* proto */
2913 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2914 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2915 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2916 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2917 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2918 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2919 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2920 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2921 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self); /* proto */
2922 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2923 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree___cinit__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2924 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_2__init__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pts, PyObject *__pyx_v_left_edge, PyObject *__pyx_v_right_edge, PyObject *__pyx_v_periodic, int __pyx_v_leafsize, int __pyx_v_nleaves, PyObject *__pyx_v_data_version, PyObject *__pyx_v_use_sliding_midpoint); /* proto */
2925 static void __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4__dealloc__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2926 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6assert_equal(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_solf, PyBoolObject *__pyx_v_strict_idx); /* proto */
2927 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2928 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2929 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2930 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2931 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leaf_idx(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, __pyx_t_5numpy_uint32_t __pyx_v_leafid); /* proto */
2932 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2933 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10get_neighbor_ids(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos); /* proto */
2934 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12get(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos); /* proto */
2935 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_14consolidate_edges(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2936 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_16save(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyObject *__pyx_v_filename); /* proto */
2937 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_18from_file(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_filename, PyObject *__pyx_v_data_version); /* proto */
2938 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2939 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2940 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2941 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2942 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2943 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2944 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2945 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self); /* proto */
2946 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2947 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
2948 static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
2949 static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */
2950 static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
2951 static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self); /* proto */
2952 static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self); /* proto */
2953 static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self); /* proto */
2954 static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr); /* proto */
2955 static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
2956 static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */
2957 static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self); /* proto */
2958 static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2959 static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
2960 static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */
2961 static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self); /* proto */
2962 static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
2963 static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object); /* proto */
2964 static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2965 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index); /* proto */
2966 static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /* proto */
2967 static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
2968 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2969 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2970 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2971 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2972 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2973 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2974 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2975 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2976 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2977 static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2978 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2979 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2980 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2981 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2982 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2983 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2984 static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self); /* proto */
2985 static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2986 static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
2987 static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
2988 static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */
2989 static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2990 static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
2991 static PyObject *__pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2992 static PyObject *__pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2993 static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2994 static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2995 static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2996 static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2997 static __Pyx_CachedCFunction __pyx_umethod_PyString_Type_encode = {0, &__pyx_n_s_encode, 0, 0, 0};
2998 static PyObject *__pyx_int_0;
2999 static PyObject *__pyx_int_1;
3000 static PyObject *__pyx_int_2;
3001 static PyObject *__pyx_int_184977713;
3002 static PyObject *__pyx_int_neg_1;
3003 static PyObject *__pyx_tuple__2;
3004 static PyObject *__pyx_tuple__3;
3005 static PyObject *__pyx_tuple__4;
3006 static PyObject *__pyx_tuple__5;
3007 static PyObject *__pyx_tuple__6;
3008 static PyObject *__pyx_tuple__7;
3009 static PyObject *__pyx_tuple__8;
3010 static PyObject *__pyx_tuple__9;
3011 static PyObject *__pyx_slice__29;
3012 static PyObject *__pyx_tuple__10;
3013 static PyObject *__pyx_tuple__11;
3014 static PyObject *__pyx_tuple__12;
3015 static PyObject *__pyx_tuple__13;
3016 static PyObject *__pyx_tuple__14;
3017 static PyObject *__pyx_tuple__15;
3018 static PyObject *__pyx_tuple__16;
3019 static PyObject *__pyx_tuple__17;
3020 static PyObject *__pyx_tuple__18;
3021 static PyObject *__pyx_tuple__19;
3022 static PyObject *__pyx_tuple__20;
3023 static PyObject *__pyx_tuple__21;
3024 static PyObject *__pyx_tuple__22;
3025 static PyObject *__pyx_tuple__23;
3026 static PyObject *__pyx_tuple__24;
3027 static PyObject *__pyx_tuple__25;
3028 static PyObject *__pyx_tuple__26;
3029 static PyObject *__pyx_tuple__27;
3030 static PyObject *__pyx_tuple__28;
3031 static PyObject *__pyx_tuple__30;
3032 static PyObject *__pyx_tuple__31;
3033 static PyObject *__pyx_tuple__32;
3034 static PyObject *__pyx_tuple__38;
3035 static PyObject *__pyx_tuple__39;
3036 static PyObject *__pyx_tuple__40;
3037 static PyObject *__pyx_tuple__41;
3038 static PyObject *__pyx_tuple__42;
3039 static PyObject *__pyx_tuple__43;
3040 static PyObject *__pyx_codeobj__44;
3041 /* Late includes */
3042 
3043 /* "yt/utilities/lib/cykdtree/kdtree.pyx":43
3044  *     """
3045  *
3046  *     cdef void _init_node(self, Node* node, uint32_t num_leaves,             # <<<<<<<<<<<<<<
3047  *                          double *domain_width):
3048  *         cdef np.uint32_t i, j
3049  */
3050 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode__init_node(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self,Node * __pyx_v_node,uint32_t __pyx_v_num_leaves,double * __pyx_v_domain_width)3051 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode__init_node(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self, Node *__pyx_v_node, uint32_t __pyx_v_num_leaves, double *__pyx_v_domain_width) {
3052   __pyx_t_5numpy_uint32_t __pyx_v_i;
3053   __pyx_t_5numpy_uint32_t __pyx_v_j;
3054   __Pyx_RefNannyDeclarations
3055   uint32_t __pyx_t_1;
3056   uint64_t __pyx_t_2;
3057   PyObject *__pyx_t_3 = NULL;
3058   __pyx_t_5numpy_uint32_t __pyx_t_4;
3059   __pyx_t_5numpy_uint32_t __pyx_t_5;
3060   __pyx_t_5numpy_uint32_t __pyx_t_6;
3061   std::vector<uint32_t> ::size_type __pyx_t_7;
3062   std::vector<uint32_t> ::size_type __pyx_t_8;
3063   __pyx_t_5numpy_uint32_t __pyx_t_9;
3064   PyObject *__pyx_t_10 = NULL;
3065   __Pyx_RefNannySetupContext("_init_node", 0);
3066 
3067   /* "yt/utilities/lib/cykdtree/kdtree.pyx":46
3068  *                          double *domain_width):
3069  *         cdef np.uint32_t i, j
3070  *         self._node = node             # <<<<<<<<<<<<<<
3071  *         self.id = node.leafid
3072  *         self.npts = node.children
3073  */
3074   __pyx_v_self->_node = __pyx_v_node;
3075 
3076   /* "yt/utilities/lib/cykdtree/kdtree.pyx":47
3077  *         cdef np.uint32_t i, j
3078  *         self._node = node
3079  *         self.id = node.leafid             # <<<<<<<<<<<<<<
3080  *         self.npts = node.children
3081  *         self.ndim = node.ndim
3082  */
3083   __pyx_t_1 = __pyx_v_node->leafid;
3084   __pyx_v_self->id = __pyx_t_1;
3085 
3086   /* "yt/utilities/lib/cykdtree/kdtree.pyx":48
3087  *         self._node = node
3088  *         self.id = node.leafid
3089  *         self.npts = node.children             # <<<<<<<<<<<<<<
3090  *         self.ndim = node.ndim
3091  *         self.num_leaves = num_leaves
3092  */
3093   __pyx_t_2 = __pyx_v_node->children;
3094   __pyx_v_self->npts = __pyx_t_2;
3095 
3096   /* "yt/utilities/lib/cykdtree/kdtree.pyx":49
3097  *         self.id = node.leafid
3098  *         self.npts = node.children
3099  *         self.ndim = node.ndim             # <<<<<<<<<<<<<<
3100  *         self.num_leaves = num_leaves
3101  *         self.start_idx = node.left_idx
3102  */
3103   __pyx_t_1 = __pyx_v_node->ndim;
3104   __pyx_v_self->ndim = __pyx_t_1;
3105 
3106   /* "yt/utilities/lib/cykdtree/kdtree.pyx":50
3107  *         self.npts = node.children
3108  *         self.ndim = node.ndim
3109  *         self.num_leaves = num_leaves             # <<<<<<<<<<<<<<
3110  *         self.start_idx = node.left_idx
3111  *         self.stop_idx = (node.left_idx + node.children)
3112  */
3113   __pyx_v_self->num_leaves = __pyx_v_num_leaves;
3114 
3115   /* "yt/utilities/lib/cykdtree/kdtree.pyx":51
3116  *         self.ndim = node.ndim
3117  *         self.num_leaves = num_leaves
3118  *         self.start_idx = node.left_idx             # <<<<<<<<<<<<<<
3119  *         self.stop_idx = (node.left_idx + node.children)
3120  *         self._domain_width = domain_width
3121  */
3122   __pyx_t_2 = __pyx_v_node->left_idx;
3123   __pyx_v_self->start_idx = __pyx_t_2;
3124 
3125   /* "yt/utilities/lib/cykdtree/kdtree.pyx":52
3126  *         self.num_leaves = num_leaves
3127  *         self.start_idx = node.left_idx
3128  *         self.stop_idx = (node.left_idx + node.children)             # <<<<<<<<<<<<<<
3129  *         self._domain_width = domain_width
3130  *         self.left_neighbors = [None for i in range(self.ndim)]
3131  */
3132   __pyx_v_self->stop_idx = (__pyx_v_node->left_idx + __pyx_v_node->children);
3133 
3134   /* "yt/utilities/lib/cykdtree/kdtree.pyx":53
3135  *         self.start_idx = node.left_idx
3136  *         self.stop_idx = (node.left_idx + node.children)
3137  *         self._domain_width = domain_width             # <<<<<<<<<<<<<<
3138  *         self.left_neighbors = [None for i in range(self.ndim)]
3139  *         self.right_neighbors = [None for i in range(self.ndim)]
3140  */
3141   __pyx_v_self->_domain_width = __pyx_v_domain_width;
3142 
3143   /* "yt/utilities/lib/cykdtree/kdtree.pyx":54
3144  *         self.stop_idx = (node.left_idx + node.children)
3145  *         self._domain_width = domain_width
3146  *         self.left_neighbors = [None for i in range(self.ndim)]             # <<<<<<<<<<<<<<
3147  *         self.right_neighbors = [None for i in range(self.ndim)]
3148  *         for i in range(self.ndim):
3149  */
3150   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error)
3151   __Pyx_GOTREF(__pyx_t_3);
3152   __pyx_t_4 = __pyx_v_self->ndim;
3153   __pyx_t_5 = __pyx_t_4;
3154   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
3155     __pyx_v_i = __pyx_t_6;
3156     if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)Py_None))) __PYX_ERR(0, 54, __pyx_L1_error)
3157   }
3158   __Pyx_GIVEREF(__pyx_t_3);
3159   __Pyx_GOTREF(__pyx_v_self->left_neighbors);
3160   __Pyx_DECREF(__pyx_v_self->left_neighbors);
3161   __pyx_v_self->left_neighbors = __pyx_t_3;
3162   __pyx_t_3 = 0;
3163 
3164   /* "yt/utilities/lib/cykdtree/kdtree.pyx":55
3165  *         self._domain_width = domain_width
3166  *         self.left_neighbors = [None for i in range(self.ndim)]
3167  *         self.right_neighbors = [None for i in range(self.ndim)]             # <<<<<<<<<<<<<<
3168  *         for i in range(self.ndim):
3169  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in
3170  */
3171   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
3172   __Pyx_GOTREF(__pyx_t_3);
3173   __pyx_t_4 = __pyx_v_self->ndim;
3174   __pyx_t_5 = __pyx_t_4;
3175   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
3176     __pyx_v_i = __pyx_t_6;
3177     if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)Py_None))) __PYX_ERR(0, 55, __pyx_L1_error)
3178   }
3179   __Pyx_GIVEREF(__pyx_t_3);
3180   __Pyx_GOTREF(__pyx_v_self->right_neighbors);
3181   __Pyx_DECREF(__pyx_v_self->right_neighbors);
3182   __pyx_v_self->right_neighbors = __pyx_t_3;
3183   __pyx_t_3 = 0;
3184 
3185   /* "yt/utilities/lib/cykdtree/kdtree.pyx":56
3186  *         self.left_neighbors = [None for i in range(self.ndim)]
3187  *         self.right_neighbors = [None for i in range(self.ndim)]
3188  *         for i in range(self.ndim):             # <<<<<<<<<<<<<<
3189  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in
3190  *                                       range(node.left_neighbors[i].size())]
3191  */
3192   __pyx_t_4 = __pyx_v_self->ndim;
3193   __pyx_t_5 = __pyx_t_4;
3194   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
3195     __pyx_v_i = __pyx_t_6;
3196 
3197     /* "yt/utilities/lib/cykdtree/kdtree.pyx":57
3198  *         self.right_neighbors = [None for i in range(self.ndim)]
3199  *         for i in range(self.ndim):
3200  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in             # <<<<<<<<<<<<<<
3201  *                                       range(node.left_neighbors[i].size())]
3202  *             self.right_neighbors[i] = [node.right_neighbors[i][j] for j in
3203  */
3204     __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error)
3205     __Pyx_GOTREF(__pyx_t_3);
3206 
3207     /* "yt/utilities/lib/cykdtree/kdtree.pyx":58
3208  *         for i in range(self.ndim):
3209  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in
3210  *                                       range(node.left_neighbors[i].size())]             # <<<<<<<<<<<<<<
3211  *             self.right_neighbors[i] = [node.right_neighbors[i][j] for j in
3212  *                                        range(node.right_neighbors[i].size())]
3213  */
3214     __pyx_t_7 = (__pyx_v_node->left_neighbors[__pyx_v_i]).size();
3215 
3216     /* "yt/utilities/lib/cykdtree/kdtree.pyx":57
3217  *         self.right_neighbors = [None for i in range(self.ndim)]
3218  *         for i in range(self.ndim):
3219  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in             # <<<<<<<<<<<<<<
3220  *                                       range(node.left_neighbors[i].size())]
3221  *             self.right_neighbors[i] = [node.right_neighbors[i][j] for j in
3222  */
3223     __pyx_t_8 = __pyx_t_7;
3224     for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
3225       __pyx_v_j = __pyx_t_9;
3226       __pyx_t_10 = __Pyx_PyInt_From_uint32_t(((__pyx_v_node->left_neighbors[__pyx_v_i])[__pyx_v_j])); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 57, __pyx_L1_error)
3227       __Pyx_GOTREF(__pyx_t_10);
3228       if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_10))) __PYX_ERR(0, 57, __pyx_L1_error)
3229       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
3230     }
3231     if (unlikely(__Pyx_SetItemInt(__pyx_v_self->left_neighbors, __pyx_v_i, __pyx_t_3, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1) < 0)) __PYX_ERR(0, 57, __pyx_L1_error)
3232     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3233 
3234     /* "yt/utilities/lib/cykdtree/kdtree.pyx":59
3235  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in
3236  *                                       range(node.left_neighbors[i].size())]
3237  *             self.right_neighbors[i] = [node.right_neighbors[i][j] for j in             # <<<<<<<<<<<<<<
3238  *                                        range(node.right_neighbors[i].size())]
3239  *
3240  */
3241     __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
3242     __Pyx_GOTREF(__pyx_t_3);
3243 
3244     /* "yt/utilities/lib/cykdtree/kdtree.pyx":60
3245  *                                       range(node.left_neighbors[i].size())]
3246  *             self.right_neighbors[i] = [node.right_neighbors[i][j] for j in
3247  *                                        range(node.right_neighbors[i].size())]             # <<<<<<<<<<<<<<
3248  *
3249  *     def __cinit__(self):
3250  */
3251     __pyx_t_7 = (__pyx_v_node->right_neighbors[__pyx_v_i]).size();
3252 
3253     /* "yt/utilities/lib/cykdtree/kdtree.pyx":59
3254  *             self.left_neighbors[i] = [node.left_neighbors[i][j] for j in
3255  *                                       range(node.left_neighbors[i].size())]
3256  *             self.right_neighbors[i] = [node.right_neighbors[i][j] for j in             # <<<<<<<<<<<<<<
3257  *                                        range(node.right_neighbors[i].size())]
3258  *
3259  */
3260     __pyx_t_8 = __pyx_t_7;
3261     for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
3262       __pyx_v_j = __pyx_t_9;
3263       __pyx_t_10 = __Pyx_PyInt_From_uint32_t(((__pyx_v_node->right_neighbors[__pyx_v_i])[__pyx_v_j])); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 59, __pyx_L1_error)
3264       __Pyx_GOTREF(__pyx_t_10);
3265       if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_10))) __PYX_ERR(0, 59, __pyx_L1_error)
3266       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
3267     }
3268     if (unlikely(__Pyx_SetItemInt(__pyx_v_self->right_neighbors, __pyx_v_i, __pyx_t_3, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1) < 0)) __PYX_ERR(0, 59, __pyx_L1_error)
3269     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3270   }
3271 
3272   /* "yt/utilities/lib/cykdtree/kdtree.pyx":43
3273  *     """
3274  *
3275  *     cdef void _init_node(self, Node* node, uint32_t num_leaves,             # <<<<<<<<<<<<<<
3276  *                          double *domain_width):
3277  *         cdef np.uint32_t i, j
3278  */
3279 
3280   /* function exit code */
3281   goto __pyx_L0;
3282   __pyx_L1_error:;
3283   __Pyx_XDECREF(__pyx_t_3);
3284   __Pyx_XDECREF(__pyx_t_10);
3285   __Pyx_WriteUnraisable("yt.utilities.lib.cykdtree.kdtree.PyNode._init_node", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
3286   __pyx_L0:;
3287   __Pyx_RefNannyFinishContext();
3288 }
3289 
3290 /* "yt/utilities/lib/cykdtree/kdtree.pyx":62
3291  *                                        range(node.right_neighbors[i].size())]
3292  *
3293  *     def __cinit__(self):             # <<<<<<<<<<<<<<
3294  *         # Initialize everthing to NULL/0/None to prevent seg fault
3295  *         self._node = NULL
3296  */
3297 
3298 /* Python wrapper */
3299 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_1__cinit__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)3300 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3301   int __pyx_r;
3302   __Pyx_RefNannyDeclarations
3303   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
3304   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
3305     __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
3306   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
3307   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode___cinit__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
3308 
3309   /* function exit code */
3310   __Pyx_RefNannyFinishContext();
3311   return __pyx_r;
3312 }
3313 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode___cinit__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)3314 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode___cinit__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
3315   int __pyx_r;
3316   __Pyx_RefNannyDeclarations
3317   __Pyx_RefNannySetupContext("__cinit__", 0);
3318 
3319   /* "yt/utilities/lib/cykdtree/kdtree.pyx":64
3320  *     def __cinit__(self):
3321  *         # Initialize everthing to NULL/0/None to prevent seg fault
3322  *         self._node = NULL             # <<<<<<<<<<<<<<
3323  *         self.id = 0
3324  *         self.npts = 0
3325  */
3326   __pyx_v_self->_node = NULL;
3327 
3328   /* "yt/utilities/lib/cykdtree/kdtree.pyx":65
3329  *         # Initialize everthing to NULL/0/None to prevent seg fault
3330  *         self._node = NULL
3331  *         self.id = 0             # <<<<<<<<<<<<<<
3332  *         self.npts = 0
3333  *         self.ndim = 0
3334  */
3335   __pyx_v_self->id = 0;
3336 
3337   /* "yt/utilities/lib/cykdtree/kdtree.pyx":66
3338  *         self._node = NULL
3339  *         self.id = 0
3340  *         self.npts = 0             # <<<<<<<<<<<<<<
3341  *         self.ndim = 0
3342  *         self.num_leaves = 0
3343  */
3344   __pyx_v_self->npts = 0;
3345 
3346   /* "yt/utilities/lib/cykdtree/kdtree.pyx":67
3347  *         self.id = 0
3348  *         self.npts = 0
3349  *         self.ndim = 0             # <<<<<<<<<<<<<<
3350  *         self.num_leaves = 0
3351  *         self.start_idx = 0
3352  */
3353   __pyx_v_self->ndim = 0;
3354 
3355   /* "yt/utilities/lib/cykdtree/kdtree.pyx":68
3356  *         self.npts = 0
3357  *         self.ndim = 0
3358  *         self.num_leaves = 0             # <<<<<<<<<<<<<<
3359  *         self.start_idx = 0
3360  *         self.stop_idx = 0
3361  */
3362   __pyx_v_self->num_leaves = 0;
3363 
3364   /* "yt/utilities/lib/cykdtree/kdtree.pyx":69
3365  *         self.ndim = 0
3366  *         self.num_leaves = 0
3367  *         self.start_idx = 0             # <<<<<<<<<<<<<<
3368  *         self.stop_idx = 0
3369  *         self._domain_width = NULL
3370  */
3371   __pyx_v_self->start_idx = 0;
3372 
3373   /* "yt/utilities/lib/cykdtree/kdtree.pyx":70
3374  *         self.num_leaves = 0
3375  *         self.start_idx = 0
3376  *         self.stop_idx = 0             # <<<<<<<<<<<<<<
3377  *         self._domain_width = NULL
3378  *         self.left_neighbors = None
3379  */
3380   __pyx_v_self->stop_idx = 0;
3381 
3382   /* "yt/utilities/lib/cykdtree/kdtree.pyx":71
3383  *         self.start_idx = 0
3384  *         self.stop_idx = 0
3385  *         self._domain_width = NULL             # <<<<<<<<<<<<<<
3386  *         self.left_neighbors = None
3387  *         self.right_neighbors = None
3388  */
3389   __pyx_v_self->_domain_width = NULL;
3390 
3391   /* "yt/utilities/lib/cykdtree/kdtree.pyx":72
3392  *         self.stop_idx = 0
3393  *         self._domain_width = NULL
3394  *         self.left_neighbors = None             # <<<<<<<<<<<<<<
3395  *         self.right_neighbors = None
3396  *
3397  */
3398   __Pyx_INCREF(Py_None);
3399   __Pyx_GIVEREF(Py_None);
3400   __Pyx_GOTREF(__pyx_v_self->left_neighbors);
3401   __Pyx_DECREF(__pyx_v_self->left_neighbors);
3402   __pyx_v_self->left_neighbors = Py_None;
3403 
3404   /* "yt/utilities/lib/cykdtree/kdtree.pyx":73
3405  *         self._domain_width = NULL
3406  *         self.left_neighbors = None
3407  *         self.right_neighbors = None             # <<<<<<<<<<<<<<
3408  *
3409  *     def __init__(self):
3410  */
3411   __Pyx_INCREF(Py_None);
3412   __Pyx_GIVEREF(Py_None);
3413   __Pyx_GOTREF(__pyx_v_self->right_neighbors);
3414   __Pyx_DECREF(__pyx_v_self->right_neighbors);
3415   __pyx_v_self->right_neighbors = Py_None;
3416 
3417   /* "yt/utilities/lib/cykdtree/kdtree.pyx":62
3418  *                                        range(node.right_neighbors[i].size())]
3419  *
3420  *     def __cinit__(self):             # <<<<<<<<<<<<<<
3421  *         # Initialize everthing to NULL/0/None to prevent seg fault
3422  *         self._node = NULL
3423  */
3424 
3425   /* function exit code */
3426   __pyx_r = 0;
3427   __Pyx_RefNannyFinishContext();
3428   return __pyx_r;
3429 }
3430 
3431 /* "yt/utilities/lib/cykdtree/kdtree.pyx":75
3432  *         self.right_neighbors = None
3433  *
3434  *     def __init__(self):             # <<<<<<<<<<<<<<
3435  *         pass
3436  *
3437  */
3438 
3439 /* Python wrapper */
3440 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_3__init__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)3441 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3442   int __pyx_r;
3443   __Pyx_RefNannyDeclarations
3444   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
3445   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
3446     __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
3447   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
3448   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2__init__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
3449 
3450   /* function exit code */
3451   __Pyx_RefNannyFinishContext();
3452   return __pyx_r;
3453 }
3454 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2__init__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)3455 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2__init__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
3456   int __pyx_r;
3457   __Pyx_RefNannyDeclarations
3458   __Pyx_RefNannySetupContext("__init__", 0);
3459 
3460   /* function exit code */
3461   __pyx_r = 0;
3462   __Pyx_RefNannyFinishContext();
3463   return __pyx_r;
3464 }
3465 
3466 /* "yt/utilities/lib/cykdtree/kdtree.pyx":78
3467  *         pass
3468  *
3469  *     def __repr__(self):             # <<<<<<<<<<<<<<
3470  *         nchars = 1 + len(str(self.__class__.__name__))
3471  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3472  */
3473 
3474 /* Python wrapper */
3475 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5__repr__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5__repr__(PyObject * __pyx_v_self)3476 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5__repr__(PyObject *__pyx_v_self) {
3477   PyObject *__pyx_r = 0;
3478   __Pyx_RefNannyDeclarations
3479   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
3480   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4__repr__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
3481 
3482   /* function exit code */
3483   __Pyx_RefNannyFinishContext();
3484   return __pyx_r;
3485 }
3486 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4__repr__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)3487 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4__repr__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
3488   PyObject *__pyx_v_nchars = NULL;
3489   PyObject *__pyx_r = NULL;
3490   __Pyx_RefNannyDeclarations
3491   PyObject *__pyx_t_1 = NULL;
3492   PyObject *__pyx_t_2 = NULL;
3493   Py_ssize_t __pyx_t_3;
3494   PyObject *__pyx_t_4 = NULL;
3495   PyObject *__pyx_t_5 = NULL;
3496   PyObject *__pyx_t_6 = NULL;
3497   PyObject *__pyx_t_7 = NULL;
3498   PyObject *__pyx_t_8 = NULL;
3499   PyObject *__pyx_t_9 = NULL;
3500   PyObject *__pyx_t_10 = NULL;
3501   __Pyx_RefNannySetupContext("__repr__", 0);
3502 
3503   /* "yt/utilities/lib/cykdtree/kdtree.pyx":79
3504  *
3505  *     def __repr__(self):
3506  *         nchars = 1 + len(str(self.__class__.__name__))             # <<<<<<<<<<<<<<
3507  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3508  *                 ' ' * nchars + 'left_edge=%s,\n' +
3509  */
3510   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
3511   __Pyx_GOTREF(__pyx_t_1);
3512   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
3513   __Pyx_GOTREF(__pyx_t_2);
3514   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3515   __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
3516   __Pyx_GOTREF(__pyx_t_1);
3517   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3518   __pyx_t_3 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 79, __pyx_L1_error)
3519   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3520   __pyx_t_1 = PyInt_FromSsize_t((1 + __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
3521   __Pyx_GOTREF(__pyx_t_1);
3522   __pyx_v_nchars = __pyx_t_1;
3523   __pyx_t_1 = 0;
3524 
3525   /* "yt/utilities/lib/cykdtree/kdtree.pyx":80
3526  *     def __repr__(self):
3527  *         nchars = 1 + len(str(self.__class__.__name__))
3528  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +             # <<<<<<<<<<<<<<
3529  *                 ' ' * nchars + 'left_edge=%s,\n' +
3530  *                 ' ' * nchars + 'right_edge=%s)') % (
3531  */
3532   __Pyx_XDECREF(__pyx_r);
3533 
3534   /* "yt/utilities/lib/cykdtree/kdtree.pyx":81
3535  *         nchars = 1 + len(str(self.__class__.__name__))
3536  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3537  *                 ' ' * nchars + 'left_edge=%s,\n' +             # <<<<<<<<<<<<<<
3538  *                 ' ' * nchars + 'right_edge=%s)') % (
3539  *             self.__class__.__name__,
3540  */
3541   __pyx_t_1 = PyNumber_Multiply(__pyx_kp_s_, __pyx_v_nchars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error)
3542   __Pyx_GOTREF(__pyx_t_1);
3543 
3544   /* "yt/utilities/lib/cykdtree/kdtree.pyx":80
3545  *     def __repr__(self):
3546  *         nchars = 1 + len(str(self.__class__.__name__))
3547  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +             # <<<<<<<<<<<<<<
3548  *                 ' ' * nchars + 'left_edge=%s,\n' +
3549  *                 ' ' * nchars + 'right_edge=%s)') % (
3550  */
3551   __pyx_t_2 = PyNumber_Add(__pyx_kp_s_s_id_i_npts_i_start_idx_i_stop, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
3552   __Pyx_GOTREF(__pyx_t_2);
3553   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3554 
3555   /* "yt/utilities/lib/cykdtree/kdtree.pyx":81
3556  *         nchars = 1 + len(str(self.__class__.__name__))
3557  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3558  *                 ' ' * nchars + 'left_edge=%s,\n' +             # <<<<<<<<<<<<<<
3559  *                 ' ' * nchars + 'right_edge=%s)') % (
3560  *             self.__class__.__name__,
3561  */
3562   __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_left_edge_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error)
3563   __Pyx_GOTREF(__pyx_t_1);
3564   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3565 
3566   /* "yt/utilities/lib/cykdtree/kdtree.pyx":82
3567  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3568  *                 ' ' * nchars + 'left_edge=%s,\n' +
3569  *                 ' ' * nchars + 'right_edge=%s)') % (             # <<<<<<<<<<<<<<
3570  *             self.__class__.__name__,
3571  *             self.id,
3572  */
3573   __pyx_t_2 = PyNumber_Multiply(__pyx_kp_s_, __pyx_v_nchars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
3574   __Pyx_GOTREF(__pyx_t_2);
3575 
3576   /* "yt/utilities/lib/cykdtree/kdtree.pyx":81
3577  *         nchars = 1 + len(str(self.__class__.__name__))
3578  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3579  *                 ' ' * nchars + 'left_edge=%s,\n' +             # <<<<<<<<<<<<<<
3580  *                 ' ' * nchars + 'right_edge=%s)') % (
3581  *             self.__class__.__name__,
3582  */
3583   __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 81, __pyx_L1_error)
3584   __Pyx_GOTREF(__pyx_t_4);
3585   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3586   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3587 
3588   /* "yt/utilities/lib/cykdtree/kdtree.pyx":82
3589  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3590  *                 ' ' * nchars + 'left_edge=%s,\n' +
3591  *                 ' ' * nchars + 'right_edge=%s)') % (             # <<<<<<<<<<<<<<
3592  *             self.__class__.__name__,
3593  *             self.id,
3594  */
3595   __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_kp_s_right_edge_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
3596   __Pyx_GOTREF(__pyx_t_2);
3597   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3598 
3599   /* "yt/utilities/lib/cykdtree/kdtree.pyx":83
3600  *                 ' ' * nchars + 'left_edge=%s,\n' +
3601  *                 ' ' * nchars + 'right_edge=%s)') % (
3602  *             self.__class__.__name__,             # <<<<<<<<<<<<<<
3603  *             self.id,
3604  *             self.npts,
3605  */
3606   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error)
3607   __Pyx_GOTREF(__pyx_t_4);
3608   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
3609   __Pyx_GOTREF(__pyx_t_1);
3610   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3611 
3612   /* "yt/utilities/lib/cykdtree/kdtree.pyx":84
3613  *                 ' ' * nchars + 'right_edge=%s)') % (
3614  *             self.__class__.__name__,
3615  *             self.id,             # <<<<<<<<<<<<<<
3616  *             self.npts,
3617  *             self.start_idx,
3618  */
3619   __pyx_t_4 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 84, __pyx_L1_error)
3620   __Pyx_GOTREF(__pyx_t_4);
3621 
3622   /* "yt/utilities/lib/cykdtree/kdtree.pyx":85
3623  *             self.__class__.__name__,
3624  *             self.id,
3625  *             self.npts,             # <<<<<<<<<<<<<<
3626  *             self.start_idx,
3627  *             self.stop_idx,
3628  */
3629   __pyx_t_5 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->npts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error)
3630   __Pyx_GOTREF(__pyx_t_5);
3631 
3632   /* "yt/utilities/lib/cykdtree/kdtree.pyx":86
3633  *             self.id,
3634  *             self.npts,
3635  *             self.start_idx,             # <<<<<<<<<<<<<<
3636  *             self.stop_idx,
3637  *             self.left_edge,
3638  */
3639   __pyx_t_6 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->start_idx); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 86, __pyx_L1_error)
3640   __Pyx_GOTREF(__pyx_t_6);
3641 
3642   /* "yt/utilities/lib/cykdtree/kdtree.pyx":87
3643  *             self.npts,
3644  *             self.start_idx,
3645  *             self.stop_idx,             # <<<<<<<<<<<<<<
3646  *             self.left_edge,
3647  *             self.right_edge,
3648  */
3649   __pyx_t_7 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->stop_idx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 87, __pyx_L1_error)
3650   __Pyx_GOTREF(__pyx_t_7);
3651 
3652   /* "yt/utilities/lib/cykdtree/kdtree.pyx":88
3653  *             self.start_idx,
3654  *             self.stop_idx,
3655  *             self.left_edge,             # <<<<<<<<<<<<<<
3656  *             self.right_edge,
3657  *         )
3658  */
3659   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_left_edge); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 88, __pyx_L1_error)
3660   __Pyx_GOTREF(__pyx_t_8);
3661 
3662   /* "yt/utilities/lib/cykdtree/kdtree.pyx":89
3663  *             self.stop_idx,
3664  *             self.left_edge,
3665  *             self.right_edge,             # <<<<<<<<<<<<<<
3666  *         )
3667  *
3668  */
3669   __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_right_edge); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error)
3670   __Pyx_GOTREF(__pyx_t_9);
3671 
3672   /* "yt/utilities/lib/cykdtree/kdtree.pyx":83
3673  *                 ' ' * nchars + 'left_edge=%s,\n' +
3674  *                 ' ' * nchars + 'right_edge=%s)') % (
3675  *             self.__class__.__name__,             # <<<<<<<<<<<<<<
3676  *             self.id,
3677  *             self.npts,
3678  */
3679   __pyx_t_10 = PyTuple_New(7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 83, __pyx_L1_error)
3680   __Pyx_GOTREF(__pyx_t_10);
3681   __Pyx_GIVEREF(__pyx_t_1);
3682   PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
3683   __Pyx_GIVEREF(__pyx_t_4);
3684   PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
3685   __Pyx_GIVEREF(__pyx_t_5);
3686   PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_5);
3687   __Pyx_GIVEREF(__pyx_t_6);
3688   PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_6);
3689   __Pyx_GIVEREF(__pyx_t_7);
3690   PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_7);
3691   __Pyx_GIVEREF(__pyx_t_8);
3692   PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_8);
3693   __Pyx_GIVEREF(__pyx_t_9);
3694   PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_9);
3695   __pyx_t_1 = 0;
3696   __pyx_t_4 = 0;
3697   __pyx_t_5 = 0;
3698   __pyx_t_6 = 0;
3699   __pyx_t_7 = 0;
3700   __pyx_t_8 = 0;
3701   __pyx_t_9 = 0;
3702 
3703   /* "yt/utilities/lib/cykdtree/kdtree.pyx":82
3704  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3705  *                 ' ' * nchars + 'left_edge=%s,\n' +
3706  *                 ' ' * nchars + 'right_edge=%s)') % (             # <<<<<<<<<<<<<<
3707  *             self.__class__.__name__,
3708  *             self.id,
3709  */
3710   __pyx_t_9 = PyNumber_Remainder(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 82, __pyx_L1_error)
3711   __Pyx_GOTREF(__pyx_t_9);
3712   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3713   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
3714   __pyx_r = __pyx_t_9;
3715   __pyx_t_9 = 0;
3716   goto __pyx_L0;
3717 
3718   /* "yt/utilities/lib/cykdtree/kdtree.pyx":78
3719  *         pass
3720  *
3721  *     def __repr__(self):             # <<<<<<<<<<<<<<
3722  *         nchars = 1 + len(str(self.__class__.__name__))
3723  *         return ('%s(id=%i, npts=%i, start_idx=%i, stop_idx=%i,\n' +
3724  */
3725 
3726   /* function exit code */
3727   __pyx_L1_error:;
3728   __Pyx_XDECREF(__pyx_t_1);
3729   __Pyx_XDECREF(__pyx_t_2);
3730   __Pyx_XDECREF(__pyx_t_4);
3731   __Pyx_XDECREF(__pyx_t_5);
3732   __Pyx_XDECREF(__pyx_t_6);
3733   __Pyx_XDECREF(__pyx_t_7);
3734   __Pyx_XDECREF(__pyx_t_8);
3735   __Pyx_XDECREF(__pyx_t_9);
3736   __Pyx_XDECREF(__pyx_t_10);
3737   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3738   __pyx_r = NULL;
3739   __pyx_L0:;
3740   __Pyx_XDECREF(__pyx_v_nchars);
3741   __Pyx_XGIVEREF(__pyx_r);
3742   __Pyx_RefNannyFinishContext();
3743   return __pyx_r;
3744 }
3745 
3746 /* "yt/utilities/lib/cykdtree/kdtree.pyx":93
3747  *
3748  *     @property
3749  *     def periodic_left(self):             # <<<<<<<<<<<<<<
3750  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_left
3751  *         return np.asarray(view)
3752  */
3753 
3754 /* Python wrapper */
3755 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left_1__get__(PyObject * __pyx_v_self)3756 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left_1__get__(PyObject *__pyx_v_self) {
3757   PyObject *__pyx_r = 0;
3758   __Pyx_RefNannyDeclarations
3759   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
3760   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
3761 
3762   /* function exit code */
3763   __Pyx_RefNannyFinishContext();
3764   return __pyx_r;
3765 }
3766 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)3767 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
3768   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
3769   PyObject *__pyx_r = NULL;
3770   __Pyx_RefNannyDeclarations
3771   bool *__pyx_t_1;
3772   struct __pyx_array_obj *__pyx_t_2 = NULL;
3773   PyObject *__pyx_t_3 = NULL;
3774   PyObject *__pyx_t_4 = NULL;
3775   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
3776   PyObject *__pyx_t_6 = NULL;
3777   PyObject *__pyx_t_7 = NULL;
3778   __Pyx_RefNannySetupContext("__get__", 0);
3779 
3780   /* "yt/utilities/lib/cykdtree/kdtree.pyx":94
3781  *     @property
3782  *     def periodic_left(self):
3783  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_left             # <<<<<<<<<<<<<<
3784  *         return np.asarray(view)
3785  *     @property
3786  */
3787   __pyx_t_1 = __pyx_v_self->_node->periodic_left;
3788   if (!__pyx_t_1) {
3789     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
3790     __PYX_ERR(0, 94, __pyx_L1_error)
3791   }
3792   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_bool);
3793   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
3794   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 94, __pyx_L1_error)
3795   __Pyx_GOTREF(__pyx_t_4);
3796   __Pyx_GOTREF(__pyx_t_3);
3797   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(bool), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
3798   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error)
3799   __Pyx_GOTREF(__pyx_t_2);
3800   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3801   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3802   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_bool(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 94, __pyx_L1_error)
3803   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
3804   __pyx_v_view = __pyx_t_5;
3805   __pyx_t_5.memview = NULL;
3806   __pyx_t_5.data = NULL;
3807 
3808   /* "yt/utilities/lib/cykdtree/kdtree.pyx":95
3809  *     def periodic_left(self):
3810  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_left
3811  *         return np.asarray(view)             # <<<<<<<<<<<<<<
3812  *     @property
3813  *     def periodic_right(self):
3814  */
3815   __Pyx_XDECREF(__pyx_r);
3816   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error)
3817   __Pyx_GOTREF(__pyx_t_3);
3818   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error)
3819   __Pyx_GOTREF(__pyx_t_6);
3820   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3821   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn_bool, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_bool, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 95, __pyx_L1_error)
3822   __Pyx_GOTREF(__pyx_t_3);
3823   __pyx_t_7 = NULL;
3824   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
3825     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
3826     if (likely(__pyx_t_7)) {
3827       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
3828       __Pyx_INCREF(__pyx_t_7);
3829       __Pyx_INCREF(function);
3830       __Pyx_DECREF_SET(__pyx_t_6, function);
3831     }
3832   }
3833   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
3834   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
3835   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3836   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 95, __pyx_L1_error)
3837   __Pyx_GOTREF(__pyx_t_4);
3838   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3839   __pyx_r = __pyx_t_4;
3840   __pyx_t_4 = 0;
3841   goto __pyx_L0;
3842 
3843   /* "yt/utilities/lib/cykdtree/kdtree.pyx":93
3844  *
3845  *     @property
3846  *     def periodic_left(self):             # <<<<<<<<<<<<<<
3847  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_left
3848  *         return np.asarray(view)
3849  */
3850 
3851   /* function exit code */
3852   __pyx_L1_error:;
3853   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
3854   __Pyx_XDECREF(__pyx_t_3);
3855   __Pyx_XDECREF(__pyx_t_4);
3856   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
3857   __Pyx_XDECREF(__pyx_t_6);
3858   __Pyx_XDECREF(__pyx_t_7);
3859   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.periodic_left.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3860   __pyx_r = NULL;
3861   __pyx_L0:;
3862   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
3863   __Pyx_XGIVEREF(__pyx_r);
3864   __Pyx_RefNannyFinishContext();
3865   return __pyx_r;
3866 }
3867 
3868 /* "yt/utilities/lib/cykdtree/kdtree.pyx":97
3869  *         return np.asarray(view)
3870  *     @property
3871  *     def periodic_right(self):             # <<<<<<<<<<<<<<
3872  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_right
3873  *         return np.asarray(view)
3874  */
3875 
3876 /* Python wrapper */
3877 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right_1__get__(PyObject * __pyx_v_self)3878 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right_1__get__(PyObject *__pyx_v_self) {
3879   PyObject *__pyx_r = 0;
3880   __Pyx_RefNannyDeclarations
3881   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
3882   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
3883 
3884   /* function exit code */
3885   __Pyx_RefNannyFinishContext();
3886   return __pyx_r;
3887 }
3888 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)3889 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
3890   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
3891   PyObject *__pyx_r = NULL;
3892   __Pyx_RefNannyDeclarations
3893   bool *__pyx_t_1;
3894   struct __pyx_array_obj *__pyx_t_2 = NULL;
3895   PyObject *__pyx_t_3 = NULL;
3896   PyObject *__pyx_t_4 = NULL;
3897   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
3898   PyObject *__pyx_t_6 = NULL;
3899   PyObject *__pyx_t_7 = NULL;
3900   __Pyx_RefNannySetupContext("__get__", 0);
3901 
3902   /* "yt/utilities/lib/cykdtree/kdtree.pyx":98
3903  *     @property
3904  *     def periodic_right(self):
3905  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_right             # <<<<<<<<<<<<<<
3906  *         return np.asarray(view)
3907  *     @property
3908  */
3909   __pyx_t_1 = __pyx_v_self->_node->periodic_right;
3910   if (!__pyx_t_1) {
3911     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
3912     __PYX_ERR(0, 98, __pyx_L1_error)
3913   }
3914   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_bool);
3915   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
3916   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 98, __pyx_L1_error)
3917   __Pyx_GOTREF(__pyx_t_4);
3918   __Pyx_GOTREF(__pyx_t_3);
3919   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(bool), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
3920   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error)
3921   __Pyx_GOTREF(__pyx_t_2);
3922   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3923   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3924   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_bool(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 98, __pyx_L1_error)
3925   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
3926   __pyx_v_view = __pyx_t_5;
3927   __pyx_t_5.memview = NULL;
3928   __pyx_t_5.data = NULL;
3929 
3930   /* "yt/utilities/lib/cykdtree/kdtree.pyx":99
3931  *     def periodic_right(self):
3932  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_right
3933  *         return np.asarray(view)             # <<<<<<<<<<<<<<
3934  *     @property
3935  *     def left_edge(self):
3936  */
3937   __Pyx_XDECREF(__pyx_r);
3938   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
3939   __Pyx_GOTREF(__pyx_t_3);
3940   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error)
3941   __Pyx_GOTREF(__pyx_t_6);
3942   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3943   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn_bool, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_bool, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 99, __pyx_L1_error)
3944   __Pyx_GOTREF(__pyx_t_3);
3945   __pyx_t_7 = NULL;
3946   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
3947     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
3948     if (likely(__pyx_t_7)) {
3949       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
3950       __Pyx_INCREF(__pyx_t_7);
3951       __Pyx_INCREF(function);
3952       __Pyx_DECREF_SET(__pyx_t_6, function);
3953     }
3954   }
3955   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
3956   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
3957   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3958   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error)
3959   __Pyx_GOTREF(__pyx_t_4);
3960   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3961   __pyx_r = __pyx_t_4;
3962   __pyx_t_4 = 0;
3963   goto __pyx_L0;
3964 
3965   /* "yt/utilities/lib/cykdtree/kdtree.pyx":97
3966  *         return np.asarray(view)
3967  *     @property
3968  *     def periodic_right(self):             # <<<<<<<<<<<<<<
3969  *         cdef cbool[:] view = <cbool[:self.ndim]> self._node.periodic_right
3970  *         return np.asarray(view)
3971  */
3972 
3973   /* function exit code */
3974   __pyx_L1_error:;
3975   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
3976   __Pyx_XDECREF(__pyx_t_3);
3977   __Pyx_XDECREF(__pyx_t_4);
3978   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
3979   __Pyx_XDECREF(__pyx_t_6);
3980   __Pyx_XDECREF(__pyx_t_7);
3981   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.periodic_right.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
3982   __pyx_r = NULL;
3983   __pyx_L0:;
3984   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
3985   __Pyx_XGIVEREF(__pyx_r);
3986   __Pyx_RefNannyFinishContext();
3987   return __pyx_r;
3988 }
3989 
3990 /* "yt/utilities/lib/cykdtree/kdtree.pyx":101
3991  *         return np.asarray(view)
3992  *     @property
3993  *     def left_edge(self):             # <<<<<<<<<<<<<<
3994  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.left_edge
3995  *         return np.asarray(view)
3996  */
3997 
3998 /* Python wrapper */
3999 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge_1__get__(PyObject * __pyx_v_self)4000 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge_1__get__(PyObject *__pyx_v_self) {
4001   PyObject *__pyx_r = 0;
4002   __Pyx_RefNannyDeclarations
4003   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4004   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
4005 
4006   /* function exit code */
4007   __Pyx_RefNannyFinishContext();
4008   return __pyx_r;
4009 }
4010 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)4011 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
4012   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
4013   PyObject *__pyx_r = NULL;
4014   __Pyx_RefNannyDeclarations
4015   double *__pyx_t_1;
4016   struct __pyx_array_obj *__pyx_t_2 = NULL;
4017   PyObject *__pyx_t_3 = NULL;
4018   PyObject *__pyx_t_4 = NULL;
4019   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
4020   PyObject *__pyx_t_6 = NULL;
4021   PyObject *__pyx_t_7 = NULL;
4022   __Pyx_RefNannySetupContext("__get__", 0);
4023 
4024   /* "yt/utilities/lib/cykdtree/kdtree.pyx":102
4025  *     @property
4026  *     def left_edge(self):
4027  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.left_edge             # <<<<<<<<<<<<<<
4028  *         return np.asarray(view)
4029  *     @property
4030  */
4031   __pyx_t_1 = __pyx_v_self->_node->left_edge;
4032   if (!__pyx_t_1) {
4033     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
4034     __PYX_ERR(0, 102, __pyx_L1_error)
4035   }
4036   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t);
4037   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
4038   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 102, __pyx_L1_error)
4039   __Pyx_GOTREF(__pyx_t_4);
4040   __Pyx_GOTREF(__pyx_t_3);
4041   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(__pyx_t_5numpy_float64_t), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
4042   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
4043   __Pyx_GOTREF(__pyx_t_2);
4044   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4045   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4046   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 102, __pyx_L1_error)
4047   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4048   __pyx_v_view = __pyx_t_5;
4049   __pyx_t_5.memview = NULL;
4050   __pyx_t_5.data = NULL;
4051 
4052   /* "yt/utilities/lib/cykdtree/kdtree.pyx":103
4053  *     def left_edge(self):
4054  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.left_edge
4055  *         return np.asarray(view)             # <<<<<<<<<<<<<<
4056  *     @property
4057  *     def right_edge(self):
4058  */
4059   __Pyx_XDECREF(__pyx_r);
4060   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
4061   __Pyx_GOTREF(__pyx_t_3);
4062   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error)
4063   __Pyx_GOTREF(__pyx_t_6);
4064   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4065   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
4066   __Pyx_GOTREF(__pyx_t_3);
4067   __pyx_t_7 = NULL;
4068   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
4069     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
4070     if (likely(__pyx_t_7)) {
4071       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
4072       __Pyx_INCREF(__pyx_t_7);
4073       __Pyx_INCREF(function);
4074       __Pyx_DECREF_SET(__pyx_t_6, function);
4075     }
4076   }
4077   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
4078   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4079   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4080   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error)
4081   __Pyx_GOTREF(__pyx_t_4);
4082   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4083   __pyx_r = __pyx_t_4;
4084   __pyx_t_4 = 0;
4085   goto __pyx_L0;
4086 
4087   /* "yt/utilities/lib/cykdtree/kdtree.pyx":101
4088  *         return np.asarray(view)
4089  *     @property
4090  *     def left_edge(self):             # <<<<<<<<<<<<<<
4091  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.left_edge
4092  *         return np.asarray(view)
4093  */
4094 
4095   /* function exit code */
4096   __pyx_L1_error:;
4097   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
4098   __Pyx_XDECREF(__pyx_t_3);
4099   __Pyx_XDECREF(__pyx_t_4);
4100   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
4101   __Pyx_XDECREF(__pyx_t_6);
4102   __Pyx_XDECREF(__pyx_t_7);
4103   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.left_edge.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4104   __pyx_r = NULL;
4105   __pyx_L0:;
4106   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
4107   __Pyx_XGIVEREF(__pyx_r);
4108   __Pyx_RefNannyFinishContext();
4109   return __pyx_r;
4110 }
4111 
4112 /* "yt/utilities/lib/cykdtree/kdtree.pyx":105
4113  *         return np.asarray(view)
4114  *     @property
4115  *     def right_edge(self):             # <<<<<<<<<<<<<<
4116  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.right_edge
4117  *         return np.asarray(view)
4118  */
4119 
4120 /* Python wrapper */
4121 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge_1__get__(PyObject * __pyx_v_self)4122 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge_1__get__(PyObject *__pyx_v_self) {
4123   PyObject *__pyx_r = 0;
4124   __Pyx_RefNannyDeclarations
4125   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4126   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
4127 
4128   /* function exit code */
4129   __Pyx_RefNannyFinishContext();
4130   return __pyx_r;
4131 }
4132 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)4133 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
4134   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
4135   PyObject *__pyx_r = NULL;
4136   __Pyx_RefNannyDeclarations
4137   double *__pyx_t_1;
4138   struct __pyx_array_obj *__pyx_t_2 = NULL;
4139   PyObject *__pyx_t_3 = NULL;
4140   PyObject *__pyx_t_4 = NULL;
4141   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
4142   PyObject *__pyx_t_6 = NULL;
4143   PyObject *__pyx_t_7 = NULL;
4144   __Pyx_RefNannySetupContext("__get__", 0);
4145 
4146   /* "yt/utilities/lib/cykdtree/kdtree.pyx":106
4147  *     @property
4148  *     def right_edge(self):
4149  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.right_edge             # <<<<<<<<<<<<<<
4150  *         return np.asarray(view)
4151  *     @property
4152  */
4153   __pyx_t_1 = __pyx_v_self->_node->right_edge;
4154   if (!__pyx_t_1) {
4155     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
4156     __PYX_ERR(0, 106, __pyx_L1_error)
4157   }
4158   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t);
4159   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
4160   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 106, __pyx_L1_error)
4161   __Pyx_GOTREF(__pyx_t_4);
4162   __Pyx_GOTREF(__pyx_t_3);
4163   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(__pyx_t_5numpy_float64_t), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
4164   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
4165   __Pyx_GOTREF(__pyx_t_2);
4166   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4167   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4168   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 106, __pyx_L1_error)
4169   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4170   __pyx_v_view = __pyx_t_5;
4171   __pyx_t_5.memview = NULL;
4172   __pyx_t_5.data = NULL;
4173 
4174   /* "yt/utilities/lib/cykdtree/kdtree.pyx":107
4175  *     def right_edge(self):
4176  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.right_edge
4177  *         return np.asarray(view)             # <<<<<<<<<<<<<<
4178  *     @property
4179  *     def domain_width(self):
4180  */
4181   __Pyx_XDECREF(__pyx_r);
4182   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error)
4183   __Pyx_GOTREF(__pyx_t_3);
4184   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
4185   __Pyx_GOTREF(__pyx_t_6);
4186   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4187   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 107, __pyx_L1_error)
4188   __Pyx_GOTREF(__pyx_t_3);
4189   __pyx_t_7 = NULL;
4190   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
4191     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
4192     if (likely(__pyx_t_7)) {
4193       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
4194       __Pyx_INCREF(__pyx_t_7);
4195       __Pyx_INCREF(function);
4196       __Pyx_DECREF_SET(__pyx_t_6, function);
4197     }
4198   }
4199   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
4200   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4201   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4202   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error)
4203   __Pyx_GOTREF(__pyx_t_4);
4204   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4205   __pyx_r = __pyx_t_4;
4206   __pyx_t_4 = 0;
4207   goto __pyx_L0;
4208 
4209   /* "yt/utilities/lib/cykdtree/kdtree.pyx":105
4210  *         return np.asarray(view)
4211  *     @property
4212  *     def right_edge(self):             # <<<<<<<<<<<<<<
4213  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._node.right_edge
4214  *         return np.asarray(view)
4215  */
4216 
4217   /* function exit code */
4218   __pyx_L1_error:;
4219   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
4220   __Pyx_XDECREF(__pyx_t_3);
4221   __Pyx_XDECREF(__pyx_t_4);
4222   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
4223   __Pyx_XDECREF(__pyx_t_6);
4224   __Pyx_XDECREF(__pyx_t_7);
4225   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.right_edge.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4226   __pyx_r = NULL;
4227   __pyx_L0:;
4228   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
4229   __Pyx_XGIVEREF(__pyx_r);
4230   __Pyx_RefNannyFinishContext();
4231   return __pyx_r;
4232 }
4233 
4234 /* "yt/utilities/lib/cykdtree/kdtree.pyx":109
4235  *         return np.asarray(view)
4236  *     @property
4237  *     def domain_width(self):             # <<<<<<<<<<<<<<
4238  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._domain_width
4239  *         return np.asarray(view)
4240  */
4241 
4242 /* Python wrapper */
4243 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width_1__get__(PyObject * __pyx_v_self)4244 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width_1__get__(PyObject *__pyx_v_self) {
4245   PyObject *__pyx_r = 0;
4246   __Pyx_RefNannyDeclarations
4247   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4248   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
4249 
4250   /* function exit code */
4251   __Pyx_RefNannyFinishContext();
4252   return __pyx_r;
4253 }
4254 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)4255 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
4256   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
4257   PyObject *__pyx_r = NULL;
4258   __Pyx_RefNannyDeclarations
4259   double *__pyx_t_1;
4260   struct __pyx_array_obj *__pyx_t_2 = NULL;
4261   PyObject *__pyx_t_3 = NULL;
4262   PyObject *__pyx_t_4 = NULL;
4263   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
4264   PyObject *__pyx_t_6 = NULL;
4265   PyObject *__pyx_t_7 = NULL;
4266   __Pyx_RefNannySetupContext("__get__", 0);
4267 
4268   /* "yt/utilities/lib/cykdtree/kdtree.pyx":110
4269  *     @property
4270  *     def domain_width(self):
4271  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._domain_width             # <<<<<<<<<<<<<<
4272  *         return np.asarray(view)
4273  *
4274  */
4275   __pyx_t_1 = __pyx_v_self->_domain_width;
4276   if (!__pyx_t_1) {
4277     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
4278     __PYX_ERR(0, 110, __pyx_L1_error)
4279   }
4280   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t);
4281   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
4282   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 110, __pyx_L1_error)
4283   __Pyx_GOTREF(__pyx_t_4);
4284   __Pyx_GOTREF(__pyx_t_3);
4285   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(__pyx_t_5numpy_float64_t), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
4286   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
4287   __Pyx_GOTREF(__pyx_t_2);
4288   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4289   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4290   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 110, __pyx_L1_error)
4291   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
4292   __pyx_v_view = __pyx_t_5;
4293   __pyx_t_5.memview = NULL;
4294   __pyx_t_5.data = NULL;
4295 
4296   /* "yt/utilities/lib/cykdtree/kdtree.pyx":111
4297  *     def domain_width(self):
4298  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._domain_width
4299  *         return np.asarray(view)             # <<<<<<<<<<<<<<
4300  *
4301  *     @property
4302  */
4303   __Pyx_XDECREF(__pyx_r);
4304   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
4305   __Pyx_GOTREF(__pyx_t_3);
4306   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error)
4307   __Pyx_GOTREF(__pyx_t_6);
4308   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4309   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
4310   __Pyx_GOTREF(__pyx_t_3);
4311   __pyx_t_7 = NULL;
4312   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
4313     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
4314     if (likely(__pyx_t_7)) {
4315       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
4316       __Pyx_INCREF(__pyx_t_7);
4317       __Pyx_INCREF(function);
4318       __Pyx_DECREF_SET(__pyx_t_6, function);
4319     }
4320   }
4321   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
4322   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4323   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4324   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
4325   __Pyx_GOTREF(__pyx_t_4);
4326   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4327   __pyx_r = __pyx_t_4;
4328   __pyx_t_4 = 0;
4329   goto __pyx_L0;
4330 
4331   /* "yt/utilities/lib/cykdtree/kdtree.pyx":109
4332  *         return np.asarray(view)
4333  *     @property
4334  *     def domain_width(self):             # <<<<<<<<<<<<<<
4335  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._domain_width
4336  *         return np.asarray(view)
4337  */
4338 
4339   /* function exit code */
4340   __pyx_L1_error:;
4341   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
4342   __Pyx_XDECREF(__pyx_t_3);
4343   __Pyx_XDECREF(__pyx_t_4);
4344   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
4345   __Pyx_XDECREF(__pyx_t_6);
4346   __Pyx_XDECREF(__pyx_t_7);
4347   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.domain_width.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4348   __pyx_r = NULL;
4349   __pyx_L0:;
4350   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
4351   __Pyx_XGIVEREF(__pyx_r);
4352   __Pyx_RefNannyFinishContext();
4353   return __pyx_r;
4354 }
4355 
4356 /* "yt/utilities/lib/cykdtree/kdtree.pyx":114
4357  *
4358  *     @property
4359  *     def slice(self):             # <<<<<<<<<<<<<<
4360  *         """slice: Slice of kdtree indices contained by this node."""
4361  *         return slice(self.start_idx, self.stop_idx)
4362  */
4363 
4364 /* Python wrapper */
4365 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice_1__get__(PyObject * __pyx_v_self)4366 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice_1__get__(PyObject *__pyx_v_self) {
4367   PyObject *__pyx_r = 0;
4368   __Pyx_RefNannyDeclarations
4369   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4370   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
4371 
4372   /* function exit code */
4373   __Pyx_RefNannyFinishContext();
4374   return __pyx_r;
4375 }
4376 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)4377 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
4378   PyObject *__pyx_r = NULL;
4379   __Pyx_RefNannyDeclarations
4380   PyObject *__pyx_t_1 = NULL;
4381   PyObject *__pyx_t_2 = NULL;
4382   PyObject *__pyx_t_3 = NULL;
4383   __Pyx_RefNannySetupContext("__get__", 0);
4384 
4385   /* "yt/utilities/lib/cykdtree/kdtree.pyx":116
4386  *     def slice(self):
4387  *         """slice: Slice of kdtree indices contained by this node."""
4388  *         return slice(self.start_idx, self.stop_idx)             # <<<<<<<<<<<<<<
4389  *
4390  *     @property
4391  */
4392   __Pyx_XDECREF(__pyx_r);
4393   __pyx_t_1 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->start_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
4394   __Pyx_GOTREF(__pyx_t_1);
4395   __pyx_t_2 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->stop_idx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
4396   __Pyx_GOTREF(__pyx_t_2);
4397   __pyx_t_3 = PySlice_New(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error)
4398   __Pyx_GOTREF(__pyx_t_3);
4399   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4400   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4401   __pyx_r = __pyx_t_3;
4402   __pyx_t_3 = 0;
4403   goto __pyx_L0;
4404 
4405   /* "yt/utilities/lib/cykdtree/kdtree.pyx":114
4406  *
4407  *     @property
4408  *     def slice(self):             # <<<<<<<<<<<<<<
4409  *         """slice: Slice of kdtree indices contained by this node."""
4410  *         return slice(self.start_idx, self.stop_idx)
4411  */
4412 
4413   /* function exit code */
4414   __pyx_L1_error:;
4415   __Pyx_XDECREF(__pyx_t_1);
4416   __Pyx_XDECREF(__pyx_t_2);
4417   __Pyx_XDECREF(__pyx_t_3);
4418   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.slice.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4419   __pyx_r = NULL;
4420   __pyx_L0:;
4421   __Pyx_XGIVEREF(__pyx_r);
4422   __Pyx_RefNannyFinishContext();
4423   return __pyx_r;
4424 }
4425 
4426 /* "yt/utilities/lib/cykdtree/kdtree.pyx":119
4427  *
4428  *     @property
4429  *     def neighbors(self):             # <<<<<<<<<<<<<<
4430  *         """list of int: Indices of all neighboring leaves including this
4431  *         leaf."""
4432  */
4433 
4434 /* Python wrapper */
4435 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors_1__get__(PyObject * __pyx_v_self)4436 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors_1__get__(PyObject *__pyx_v_self) {
4437   PyObject *__pyx_r = 0;
4438   __Pyx_RefNannyDeclarations
4439   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
4440   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
4441 
4442   /* function exit code */
4443   __Pyx_RefNannyFinishContext();
4444   return __pyx_r;
4445 }
4446 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)4447 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
4448   __pyx_t_5numpy_uint32_t __pyx_v_i;
4449   PyObject *__pyx_v_out = 0;
4450   std::vector<uint32_t>  __pyx_v_vout;
4451   PyObject *__pyx_r = NULL;
4452   __Pyx_RefNannyDeclarations
4453   std::vector<uint32_t>  __pyx_t_1;
4454   PyObject *__pyx_t_2 = NULL;
4455   __pyx_t_5numpy_uint32_t __pyx_t_3;
4456   __pyx_t_5numpy_uint32_t __pyx_t_4;
4457   __pyx_t_5numpy_uint32_t __pyx_t_5;
4458   PyObject *__pyx_t_6 = NULL;
4459   __Pyx_RefNannySetupContext("__get__", 0);
4460 
4461   /* "yt/utilities/lib/cykdtree/kdtree.pyx":124
4462  *         cdef np.uint32_t i
4463  *         cdef object out
4464  *         cdef vector[uint32_t] vout = self._node.all_neighbors             # <<<<<<<<<<<<<<
4465  *         out = [vout[i] for i in range(<np.uint32_t>vout.size())]
4466  *         return out
4467  */
4468   __pyx_t_1 = __pyx_v_self->_node->all_neighbors;
4469   __pyx_v_vout = __pyx_t_1;
4470 
4471   /* "yt/utilities/lib/cykdtree/kdtree.pyx":125
4472  *         cdef object out
4473  *         cdef vector[uint32_t] vout = self._node.all_neighbors
4474  *         out = [vout[i] for i in range(<np.uint32_t>vout.size())]             # <<<<<<<<<<<<<<
4475  *         return out
4476  *
4477  */
4478   __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error)
4479   __Pyx_GOTREF(__pyx_t_2);
4480   __pyx_t_3 = ((__pyx_t_5numpy_uint32_t)__pyx_v_vout.size());
4481   __pyx_t_4 = __pyx_t_3;
4482   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
4483     __pyx_v_i = __pyx_t_5;
4484     __pyx_t_6 = __Pyx_PyInt_From_uint32_t((__pyx_v_vout[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
4485     __Pyx_GOTREF(__pyx_t_6);
4486     if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 125, __pyx_L1_error)
4487     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4488   }
4489   __pyx_v_out = __pyx_t_2;
4490   __pyx_t_2 = 0;
4491 
4492   /* "yt/utilities/lib/cykdtree/kdtree.pyx":126
4493  *         cdef vector[uint32_t] vout = self._node.all_neighbors
4494  *         out = [vout[i] for i in range(<np.uint32_t>vout.size())]
4495  *         return out             # <<<<<<<<<<<<<<
4496  *
4497  *     def assert_equal(self, PyNode solf):
4498  */
4499   __Pyx_XDECREF(__pyx_r);
4500   __Pyx_INCREF(__pyx_v_out);
4501   __pyx_r = __pyx_v_out;
4502   goto __pyx_L0;
4503 
4504   /* "yt/utilities/lib/cykdtree/kdtree.pyx":119
4505  *
4506  *     @property
4507  *     def neighbors(self):             # <<<<<<<<<<<<<<
4508  *         """list of int: Indices of all neighboring leaves including this
4509  *         leaf."""
4510  */
4511 
4512   /* function exit code */
4513   __pyx_L1_error:;
4514   __Pyx_XDECREF(__pyx_t_2);
4515   __Pyx_XDECREF(__pyx_t_6);
4516   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.neighbors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
4517   __pyx_r = NULL;
4518   __pyx_L0:;
4519   __Pyx_XDECREF(__pyx_v_out);
4520   __Pyx_XGIVEREF(__pyx_r);
4521   __Pyx_RefNannyFinishContext();
4522   return __pyx_r;
4523 }
4524 
4525 /* "yt/utilities/lib/cykdtree/kdtree.pyx":128
4526  *         return out
4527  *
4528  *     def assert_equal(self, PyNode solf):             # <<<<<<<<<<<<<<
4529  *         """Assert that node properties are equal."""
4530  *         np.testing.assert_equal(self.npts, solf.npts)
4531  */
4532 
4533 /* Python wrapper */
4534 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_7assert_equal(PyObject *__pyx_v_self, PyObject *__pyx_v_solf); /*proto*/
4535 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_6assert_equal[] = "Assert that node properties are equal.";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_7assert_equal(PyObject * __pyx_v_self,PyObject * __pyx_v_solf)4536 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_7assert_equal(PyObject *__pyx_v_self, PyObject *__pyx_v_solf) {
4537   PyObject *__pyx_r = 0;
4538   __Pyx_RefNannyDeclarations
4539   __Pyx_RefNannySetupContext("assert_equal (wrapper)", 0);
4540   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_solf), __pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, 1, "solf", 0))) __PYX_ERR(0, 128, __pyx_L1_error)
4541   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_6assert_equal(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self), ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_solf));
4542 
4543   /* function exit code */
4544   goto __pyx_L0;
4545   __pyx_L1_error:;
4546   __pyx_r = NULL;
4547   __pyx_L0:;
4548   __Pyx_RefNannyFinishContext();
4549   return __pyx_r;
4550 }
4551 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_6assert_equal(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self,struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_solf)4552 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_6assert_equal(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self, struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_solf) {
4553   __pyx_t_5numpy_uint32_t __pyx_v_i;
4554   PyObject *__pyx_r = NULL;
4555   __Pyx_RefNannyDeclarations
4556   PyObject *__pyx_t_1 = NULL;
4557   PyObject *__pyx_t_2 = NULL;
4558   PyObject *__pyx_t_3 = NULL;
4559   PyObject *__pyx_t_4 = NULL;
4560   PyObject *__pyx_t_5 = NULL;
4561   int __pyx_t_6;
4562   PyObject *__pyx_t_7 = NULL;
4563   __pyx_t_5numpy_uint32_t __pyx_t_8;
4564   __pyx_t_5numpy_uint32_t __pyx_t_9;
4565   __pyx_t_5numpy_uint32_t __pyx_t_10;
4566   __Pyx_RefNannySetupContext("assert_equal", 0);
4567 
4568   /* "yt/utilities/lib/cykdtree/kdtree.pyx":130
4569  *     def assert_equal(self, PyNode solf):
4570  *         """Assert that node properties are equal."""
4571  *         np.testing.assert_equal(self.npts, solf.npts)             # <<<<<<<<<<<<<<
4572  *         np.testing.assert_equal(self.ndim, solf.ndim)
4573  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
4574  */
4575   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error)
4576   __Pyx_GOTREF(__pyx_t_2);
4577   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 130, __pyx_L1_error)
4578   __Pyx_GOTREF(__pyx_t_3);
4579   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4580   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error)
4581   __Pyx_GOTREF(__pyx_t_2);
4582   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4583   __pyx_t_3 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->npts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 130, __pyx_L1_error)
4584   __Pyx_GOTREF(__pyx_t_3);
4585   __pyx_t_4 = __Pyx_PyInt_From_npy_uint64(__pyx_v_solf->npts); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 130, __pyx_L1_error)
4586   __Pyx_GOTREF(__pyx_t_4);
4587   __pyx_t_5 = NULL;
4588   __pyx_t_6 = 0;
4589   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
4590     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
4591     if (likely(__pyx_t_5)) {
4592       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4593       __Pyx_INCREF(__pyx_t_5);
4594       __Pyx_INCREF(function);
4595       __Pyx_DECREF_SET(__pyx_t_2, function);
4596       __pyx_t_6 = 1;
4597     }
4598   }
4599   #if CYTHON_FAST_PYCALL
4600   if (PyFunction_Check(__pyx_t_2)) {
4601     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
4602     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error)
4603     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
4604     __Pyx_GOTREF(__pyx_t_1);
4605     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4606     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4607   } else
4608   #endif
4609   #if CYTHON_FAST_PYCCALL
4610   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4611     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
4612     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error)
4613     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
4614     __Pyx_GOTREF(__pyx_t_1);
4615     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4616     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4617   } else
4618   #endif
4619   {
4620     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 130, __pyx_L1_error)
4621     __Pyx_GOTREF(__pyx_t_7);
4622     if (__pyx_t_5) {
4623       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
4624     }
4625     __Pyx_GIVEREF(__pyx_t_3);
4626     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
4627     __Pyx_GIVEREF(__pyx_t_4);
4628     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
4629     __pyx_t_3 = 0;
4630     __pyx_t_4 = 0;
4631     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error)
4632     __Pyx_GOTREF(__pyx_t_1);
4633     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4634   }
4635   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4636   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4637 
4638   /* "yt/utilities/lib/cykdtree/kdtree.pyx":131
4639  *         """Assert that node properties are equal."""
4640  *         np.testing.assert_equal(self.npts, solf.npts)
4641  *         np.testing.assert_equal(self.ndim, solf.ndim)             # <<<<<<<<<<<<<<
4642  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
4643  *         np.testing.assert_equal(self.id, solf.id)
4644  */
4645   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
4646   __Pyx_GOTREF(__pyx_t_2);
4647   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
4648   __Pyx_GOTREF(__pyx_t_7);
4649   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4650   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
4651   __Pyx_GOTREF(__pyx_t_2);
4652   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4653   __pyx_t_7 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->ndim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
4654   __Pyx_GOTREF(__pyx_t_7);
4655   __pyx_t_4 = __Pyx_PyInt_From_npy_uint32(__pyx_v_solf->ndim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error)
4656   __Pyx_GOTREF(__pyx_t_4);
4657   __pyx_t_3 = NULL;
4658   __pyx_t_6 = 0;
4659   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
4660     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
4661     if (likely(__pyx_t_3)) {
4662       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4663       __Pyx_INCREF(__pyx_t_3);
4664       __Pyx_INCREF(function);
4665       __Pyx_DECREF_SET(__pyx_t_2, function);
4666       __pyx_t_6 = 1;
4667     }
4668   }
4669   #if CYTHON_FAST_PYCALL
4670   if (PyFunction_Check(__pyx_t_2)) {
4671     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
4672     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
4673     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
4674     __Pyx_GOTREF(__pyx_t_1);
4675     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4676     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4677   } else
4678   #endif
4679   #if CYTHON_FAST_PYCCALL
4680   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4681     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
4682     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
4683     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
4684     __Pyx_GOTREF(__pyx_t_1);
4685     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4686     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4687   } else
4688   #endif
4689   {
4690     __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L1_error)
4691     __Pyx_GOTREF(__pyx_t_5);
4692     if (__pyx_t_3) {
4693       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
4694     }
4695     __Pyx_GIVEREF(__pyx_t_7);
4696     PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
4697     __Pyx_GIVEREF(__pyx_t_4);
4698     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
4699     __pyx_t_7 = 0;
4700     __pyx_t_4 = 0;
4701     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
4702     __Pyx_GOTREF(__pyx_t_1);
4703     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4704   }
4705   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4706   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4707 
4708   /* "yt/utilities/lib/cykdtree/kdtree.pyx":132
4709  *         np.testing.assert_equal(self.npts, solf.npts)
4710  *         np.testing.assert_equal(self.ndim, solf.ndim)
4711  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)             # <<<<<<<<<<<<<<
4712  *         np.testing.assert_equal(self.id, solf.id)
4713  *         np.testing.assert_equal(self.start_idx, solf.start_idx)
4714  */
4715   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error)
4716   __Pyx_GOTREF(__pyx_t_2);
4717   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 132, __pyx_L1_error)
4718   __Pyx_GOTREF(__pyx_t_5);
4719   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4720   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error)
4721   __Pyx_GOTREF(__pyx_t_2);
4722   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4723   __pyx_t_5 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->num_leaves); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 132, __pyx_L1_error)
4724   __Pyx_GOTREF(__pyx_t_5);
4725   __pyx_t_4 = __Pyx_PyInt_From_npy_uint32(__pyx_v_solf->num_leaves); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
4726   __Pyx_GOTREF(__pyx_t_4);
4727   __pyx_t_7 = NULL;
4728   __pyx_t_6 = 0;
4729   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
4730     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
4731     if (likely(__pyx_t_7)) {
4732       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4733       __Pyx_INCREF(__pyx_t_7);
4734       __Pyx_INCREF(function);
4735       __Pyx_DECREF_SET(__pyx_t_2, function);
4736       __pyx_t_6 = 1;
4737     }
4738   }
4739   #if CYTHON_FAST_PYCALL
4740   if (PyFunction_Check(__pyx_t_2)) {
4741     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
4742     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error)
4743     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4744     __Pyx_GOTREF(__pyx_t_1);
4745     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4746     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4747   } else
4748   #endif
4749   #if CYTHON_FAST_PYCCALL
4750   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4751     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
4752     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error)
4753     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4754     __Pyx_GOTREF(__pyx_t_1);
4755     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4756     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4757   } else
4758   #endif
4759   {
4760     __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 132, __pyx_L1_error)
4761     __Pyx_GOTREF(__pyx_t_3);
4762     if (__pyx_t_7) {
4763       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
4764     }
4765     __Pyx_GIVEREF(__pyx_t_5);
4766     PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
4767     __Pyx_GIVEREF(__pyx_t_4);
4768     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
4769     __pyx_t_5 = 0;
4770     __pyx_t_4 = 0;
4771     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error)
4772     __Pyx_GOTREF(__pyx_t_1);
4773     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4774   }
4775   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4776   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4777 
4778   /* "yt/utilities/lib/cykdtree/kdtree.pyx":133
4779  *         np.testing.assert_equal(self.ndim, solf.ndim)
4780  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
4781  *         np.testing.assert_equal(self.id, solf.id)             # <<<<<<<<<<<<<<
4782  *         np.testing.assert_equal(self.start_idx, solf.start_idx)
4783  *         np.testing.assert_equal(self.stop_idx, solf.stop_idx)
4784  */
4785   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error)
4786   __Pyx_GOTREF(__pyx_t_2);
4787   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error)
4788   __Pyx_GOTREF(__pyx_t_3);
4789   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4790   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error)
4791   __Pyx_GOTREF(__pyx_t_2);
4792   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4793   __pyx_t_3 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error)
4794   __Pyx_GOTREF(__pyx_t_3);
4795   __pyx_t_4 = __Pyx_PyInt_From_npy_uint32(__pyx_v_solf->id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error)
4796   __Pyx_GOTREF(__pyx_t_4);
4797   __pyx_t_5 = NULL;
4798   __pyx_t_6 = 0;
4799   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
4800     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
4801     if (likely(__pyx_t_5)) {
4802       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4803       __Pyx_INCREF(__pyx_t_5);
4804       __Pyx_INCREF(function);
4805       __Pyx_DECREF_SET(__pyx_t_2, function);
4806       __pyx_t_6 = 1;
4807     }
4808   }
4809   #if CYTHON_FAST_PYCALL
4810   if (PyFunction_Check(__pyx_t_2)) {
4811     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
4812     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
4813     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
4814     __Pyx_GOTREF(__pyx_t_1);
4815     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4816     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4817   } else
4818   #endif
4819   #if CYTHON_FAST_PYCCALL
4820   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4821     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
4822     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
4823     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
4824     __Pyx_GOTREF(__pyx_t_1);
4825     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4826     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4827   } else
4828   #endif
4829   {
4830     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error)
4831     __Pyx_GOTREF(__pyx_t_7);
4832     if (__pyx_t_5) {
4833       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
4834     }
4835     __Pyx_GIVEREF(__pyx_t_3);
4836     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
4837     __Pyx_GIVEREF(__pyx_t_4);
4838     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
4839     __pyx_t_3 = 0;
4840     __pyx_t_4 = 0;
4841     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error)
4842     __Pyx_GOTREF(__pyx_t_1);
4843     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4844   }
4845   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4846   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4847 
4848   /* "yt/utilities/lib/cykdtree/kdtree.pyx":134
4849  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
4850  *         np.testing.assert_equal(self.id, solf.id)
4851  *         np.testing.assert_equal(self.start_idx, solf.start_idx)             # <<<<<<<<<<<<<<
4852  *         np.testing.assert_equal(self.stop_idx, solf.stop_idx)
4853  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
4854  */
4855   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 134, __pyx_L1_error)
4856   __Pyx_GOTREF(__pyx_t_2);
4857   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error)
4858   __Pyx_GOTREF(__pyx_t_7);
4859   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4860   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 134, __pyx_L1_error)
4861   __Pyx_GOTREF(__pyx_t_2);
4862   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4863   __pyx_t_7 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->start_idx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 134, __pyx_L1_error)
4864   __Pyx_GOTREF(__pyx_t_7);
4865   __pyx_t_4 = __Pyx_PyInt_From_npy_uint64(__pyx_v_solf->start_idx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L1_error)
4866   __Pyx_GOTREF(__pyx_t_4);
4867   __pyx_t_3 = NULL;
4868   __pyx_t_6 = 0;
4869   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
4870     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
4871     if (likely(__pyx_t_3)) {
4872       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4873       __Pyx_INCREF(__pyx_t_3);
4874       __Pyx_INCREF(function);
4875       __Pyx_DECREF_SET(__pyx_t_2, function);
4876       __pyx_t_6 = 1;
4877     }
4878   }
4879   #if CYTHON_FAST_PYCALL
4880   if (PyFunction_Check(__pyx_t_2)) {
4881     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
4882     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error)
4883     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
4884     __Pyx_GOTREF(__pyx_t_1);
4885     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4886     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4887   } else
4888   #endif
4889   #if CYTHON_FAST_PYCCALL
4890   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4891     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
4892     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error)
4893     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
4894     __Pyx_GOTREF(__pyx_t_1);
4895     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4896     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4897   } else
4898   #endif
4899   {
4900     __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 134, __pyx_L1_error)
4901     __Pyx_GOTREF(__pyx_t_5);
4902     if (__pyx_t_3) {
4903       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
4904     }
4905     __Pyx_GIVEREF(__pyx_t_7);
4906     PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
4907     __Pyx_GIVEREF(__pyx_t_4);
4908     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
4909     __pyx_t_7 = 0;
4910     __pyx_t_4 = 0;
4911     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error)
4912     __Pyx_GOTREF(__pyx_t_1);
4913     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4914   }
4915   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4916   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4917 
4918   /* "yt/utilities/lib/cykdtree/kdtree.pyx":135
4919  *         np.testing.assert_equal(self.id, solf.id)
4920  *         np.testing.assert_equal(self.start_idx, solf.start_idx)
4921  *         np.testing.assert_equal(self.stop_idx, solf.stop_idx)             # <<<<<<<<<<<<<<
4922  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
4923  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
4924  */
4925   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
4926   __Pyx_GOTREF(__pyx_t_2);
4927   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 135, __pyx_L1_error)
4928   __Pyx_GOTREF(__pyx_t_5);
4929   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4930   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
4931   __Pyx_GOTREF(__pyx_t_2);
4932   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4933   __pyx_t_5 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->stop_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 135, __pyx_L1_error)
4934   __Pyx_GOTREF(__pyx_t_5);
4935   __pyx_t_4 = __Pyx_PyInt_From_npy_uint64(__pyx_v_solf->stop_idx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 135, __pyx_L1_error)
4936   __Pyx_GOTREF(__pyx_t_4);
4937   __pyx_t_7 = NULL;
4938   __pyx_t_6 = 0;
4939   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
4940     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
4941     if (likely(__pyx_t_7)) {
4942       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4943       __Pyx_INCREF(__pyx_t_7);
4944       __Pyx_INCREF(function);
4945       __Pyx_DECREF_SET(__pyx_t_2, function);
4946       __pyx_t_6 = 1;
4947     }
4948   }
4949   #if CYTHON_FAST_PYCALL
4950   if (PyFunction_Check(__pyx_t_2)) {
4951     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
4952     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
4953     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4954     __Pyx_GOTREF(__pyx_t_1);
4955     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4956     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4957   } else
4958   #endif
4959   #if CYTHON_FAST_PYCCALL
4960   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
4961     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
4962     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
4963     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4964     __Pyx_GOTREF(__pyx_t_1);
4965     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4966     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4967   } else
4968   #endif
4969   {
4970     __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error)
4971     __Pyx_GOTREF(__pyx_t_3);
4972     if (__pyx_t_7) {
4973       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
4974     }
4975     __Pyx_GIVEREF(__pyx_t_5);
4976     PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
4977     __Pyx_GIVEREF(__pyx_t_4);
4978     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
4979     __pyx_t_5 = 0;
4980     __pyx_t_4 = 0;
4981     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
4982     __Pyx_GOTREF(__pyx_t_1);
4983     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4984   }
4985   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4986   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4987 
4988   /* "yt/utilities/lib/cykdtree/kdtree.pyx":136
4989  *         np.testing.assert_equal(self.start_idx, solf.start_idx)
4990  *         np.testing.assert_equal(self.stop_idx, solf.stop_idx)
4991  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)             # <<<<<<<<<<<<<<
4992  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
4993  *         np.testing.assert_array_equal(self.periodic_left, solf.periodic_left)
4994  */
4995   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
4996   __Pyx_GOTREF(__pyx_t_2);
4997   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
4998   __Pyx_GOTREF(__pyx_t_3);
4999   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5000   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
5001   __Pyx_GOTREF(__pyx_t_2);
5002   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5003   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_left_edge); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
5004   __Pyx_GOTREF(__pyx_t_3);
5005   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_left_edge); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 136, __pyx_L1_error)
5006   __Pyx_GOTREF(__pyx_t_4);
5007   __pyx_t_5 = NULL;
5008   __pyx_t_6 = 0;
5009   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5010     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
5011     if (likely(__pyx_t_5)) {
5012       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5013       __Pyx_INCREF(__pyx_t_5);
5014       __Pyx_INCREF(function);
5015       __Pyx_DECREF_SET(__pyx_t_2, function);
5016       __pyx_t_6 = 1;
5017     }
5018   }
5019   #if CYTHON_FAST_PYCALL
5020   if (PyFunction_Check(__pyx_t_2)) {
5021     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
5022     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5023     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5024     __Pyx_GOTREF(__pyx_t_1);
5025     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5026     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5027   } else
5028   #endif
5029   #if CYTHON_FAST_PYCCALL
5030   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5031     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
5032     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5033     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5034     __Pyx_GOTREF(__pyx_t_1);
5035     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5036     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5037   } else
5038   #endif
5039   {
5040     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 136, __pyx_L1_error)
5041     __Pyx_GOTREF(__pyx_t_7);
5042     if (__pyx_t_5) {
5043       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
5044     }
5045     __Pyx_GIVEREF(__pyx_t_3);
5046     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
5047     __Pyx_GIVEREF(__pyx_t_4);
5048     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
5049     __pyx_t_3 = 0;
5050     __pyx_t_4 = 0;
5051     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
5052     __Pyx_GOTREF(__pyx_t_1);
5053     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5054   }
5055   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5056   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5057 
5058   /* "yt/utilities/lib/cykdtree/kdtree.pyx":137
5059  *         np.testing.assert_equal(self.stop_idx, solf.stop_idx)
5060  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
5061  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)             # <<<<<<<<<<<<<<
5062  *         np.testing.assert_array_equal(self.periodic_left, solf.periodic_left)
5063  *         np.testing.assert_array_equal(self.periodic_right, solf.periodic_right)
5064  */
5065   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error)
5066   __Pyx_GOTREF(__pyx_t_2);
5067   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 137, __pyx_L1_error)
5068   __Pyx_GOTREF(__pyx_t_7);
5069   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5070   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 137, __pyx_L1_error)
5071   __Pyx_GOTREF(__pyx_t_2);
5072   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5073   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_right_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 137, __pyx_L1_error)
5074   __Pyx_GOTREF(__pyx_t_7);
5075   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_right_edge); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 137, __pyx_L1_error)
5076   __Pyx_GOTREF(__pyx_t_4);
5077   __pyx_t_3 = NULL;
5078   __pyx_t_6 = 0;
5079   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5080     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
5081     if (likely(__pyx_t_3)) {
5082       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5083       __Pyx_INCREF(__pyx_t_3);
5084       __Pyx_INCREF(function);
5085       __Pyx_DECREF_SET(__pyx_t_2, function);
5086       __pyx_t_6 = 1;
5087     }
5088   }
5089   #if CYTHON_FAST_PYCALL
5090   if (PyFunction_Check(__pyx_t_2)) {
5091     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
5092     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
5093     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5094     __Pyx_GOTREF(__pyx_t_1);
5095     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5096     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5097   } else
5098   #endif
5099   #if CYTHON_FAST_PYCCALL
5100   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5101     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
5102     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
5103     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5104     __Pyx_GOTREF(__pyx_t_1);
5105     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5106     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5107   } else
5108   #endif
5109   {
5110     __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 137, __pyx_L1_error)
5111     __Pyx_GOTREF(__pyx_t_5);
5112     if (__pyx_t_3) {
5113       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
5114     }
5115     __Pyx_GIVEREF(__pyx_t_7);
5116     PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
5117     __Pyx_GIVEREF(__pyx_t_4);
5118     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
5119     __pyx_t_7 = 0;
5120     __pyx_t_4 = 0;
5121     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
5122     __Pyx_GOTREF(__pyx_t_1);
5123     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5124   }
5125   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5126   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5127 
5128   /* "yt/utilities/lib/cykdtree/kdtree.pyx":138
5129  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
5130  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
5131  *         np.testing.assert_array_equal(self.periodic_left, solf.periodic_left)             # <<<<<<<<<<<<<<
5132  *         np.testing.assert_array_equal(self.periodic_right, solf.periodic_right)
5133  *         for i in range(self.ndim):
5134  */
5135   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error)
5136   __Pyx_GOTREF(__pyx_t_2);
5137   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 138, __pyx_L1_error)
5138   __Pyx_GOTREF(__pyx_t_5);
5139   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5140   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error)
5141   __Pyx_GOTREF(__pyx_t_2);
5142   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5143   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_periodic_left); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 138, __pyx_L1_error)
5144   __Pyx_GOTREF(__pyx_t_5);
5145   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_periodic_left); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 138, __pyx_L1_error)
5146   __Pyx_GOTREF(__pyx_t_4);
5147   __pyx_t_7 = NULL;
5148   __pyx_t_6 = 0;
5149   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5150     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
5151     if (likely(__pyx_t_7)) {
5152       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5153       __Pyx_INCREF(__pyx_t_7);
5154       __Pyx_INCREF(function);
5155       __Pyx_DECREF_SET(__pyx_t_2, function);
5156       __pyx_t_6 = 1;
5157     }
5158   }
5159   #if CYTHON_FAST_PYCALL
5160   if (PyFunction_Check(__pyx_t_2)) {
5161     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
5162     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
5163     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
5164     __Pyx_GOTREF(__pyx_t_1);
5165     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5166     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5167   } else
5168   #endif
5169   #if CYTHON_FAST_PYCCALL
5170   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5171     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
5172     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
5173     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
5174     __Pyx_GOTREF(__pyx_t_1);
5175     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5176     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5177   } else
5178   #endif
5179   {
5180     __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error)
5181     __Pyx_GOTREF(__pyx_t_3);
5182     if (__pyx_t_7) {
5183       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
5184     }
5185     __Pyx_GIVEREF(__pyx_t_5);
5186     PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
5187     __Pyx_GIVEREF(__pyx_t_4);
5188     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
5189     __pyx_t_5 = 0;
5190     __pyx_t_4 = 0;
5191     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
5192     __Pyx_GOTREF(__pyx_t_1);
5193     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5194   }
5195   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5196   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5197 
5198   /* "yt/utilities/lib/cykdtree/kdtree.pyx":139
5199  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
5200  *         np.testing.assert_array_equal(self.periodic_left, solf.periodic_left)
5201  *         np.testing.assert_array_equal(self.periodic_right, solf.periodic_right)             # <<<<<<<<<<<<<<
5202  *         for i in range(self.ndim):
5203  *             np.testing.assert_equal(self.left_neighbors[i], solf.left_neighbors[i])
5204  */
5205   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
5206   __Pyx_GOTREF(__pyx_t_2);
5207   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
5208   __Pyx_GOTREF(__pyx_t_3);
5209   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5210   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
5211   __Pyx_GOTREF(__pyx_t_2);
5212   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5213   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_periodic_right); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
5214   __Pyx_GOTREF(__pyx_t_3);
5215   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_periodic_right); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error)
5216   __Pyx_GOTREF(__pyx_t_4);
5217   __pyx_t_5 = NULL;
5218   __pyx_t_6 = 0;
5219   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5220     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
5221     if (likely(__pyx_t_5)) {
5222       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5223       __Pyx_INCREF(__pyx_t_5);
5224       __Pyx_INCREF(function);
5225       __Pyx_DECREF_SET(__pyx_t_2, function);
5226       __pyx_t_6 = 1;
5227     }
5228   }
5229   #if CYTHON_FAST_PYCALL
5230   if (PyFunction_Check(__pyx_t_2)) {
5231     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
5232     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
5233     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5234     __Pyx_GOTREF(__pyx_t_1);
5235     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5236     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5237   } else
5238   #endif
5239   #if CYTHON_FAST_PYCCALL
5240   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5241     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
5242     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
5243     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5244     __Pyx_GOTREF(__pyx_t_1);
5245     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5246     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5247   } else
5248   #endif
5249   {
5250     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 139, __pyx_L1_error)
5251     __Pyx_GOTREF(__pyx_t_7);
5252     if (__pyx_t_5) {
5253       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
5254     }
5255     __Pyx_GIVEREF(__pyx_t_3);
5256     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
5257     __Pyx_GIVEREF(__pyx_t_4);
5258     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
5259     __pyx_t_3 = 0;
5260     __pyx_t_4 = 0;
5261     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
5262     __Pyx_GOTREF(__pyx_t_1);
5263     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5264   }
5265   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5266   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5267 
5268   /* "yt/utilities/lib/cykdtree/kdtree.pyx":140
5269  *         np.testing.assert_array_equal(self.periodic_left, solf.periodic_left)
5270  *         np.testing.assert_array_equal(self.periodic_right, solf.periodic_right)
5271  *         for i in range(self.ndim):             # <<<<<<<<<<<<<<
5272  *             np.testing.assert_equal(self.left_neighbors[i], solf.left_neighbors[i])
5273  *             np.testing.assert_equal(self.right_neighbors[i], solf.right_neighbors[i])
5274  */
5275   __pyx_t_8 = __pyx_v_self->ndim;
5276   __pyx_t_9 = __pyx_t_8;
5277   for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
5278     __pyx_v_i = __pyx_t_10;
5279 
5280     /* "yt/utilities/lib/cykdtree/kdtree.pyx":141
5281  *         np.testing.assert_array_equal(self.periodic_right, solf.periodic_right)
5282  *         for i in range(self.ndim):
5283  *             np.testing.assert_equal(self.left_neighbors[i], solf.left_neighbors[i])             # <<<<<<<<<<<<<<
5284  *             np.testing.assert_equal(self.right_neighbors[i], solf.right_neighbors[i])
5285  *         np.testing.assert_equal(self.neighbors, solf.neighbors)
5286  */
5287     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error)
5288     __Pyx_GOTREF(__pyx_t_2);
5289     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error)
5290     __Pyx_GOTREF(__pyx_t_7);
5291     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5292     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error)
5293     __Pyx_GOTREF(__pyx_t_2);
5294     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5295     __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_self->left_neighbors, __pyx_v_i, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error)
5296     __Pyx_GOTREF(__pyx_t_7);
5297     __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_solf->left_neighbors, __pyx_v_i, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
5298     __Pyx_GOTREF(__pyx_t_4);
5299     __pyx_t_3 = NULL;
5300     __pyx_t_6 = 0;
5301     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5302       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
5303       if (likely(__pyx_t_3)) {
5304         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5305         __Pyx_INCREF(__pyx_t_3);
5306         __Pyx_INCREF(function);
5307         __Pyx_DECREF_SET(__pyx_t_2, function);
5308         __pyx_t_6 = 1;
5309       }
5310     }
5311     #if CYTHON_FAST_PYCALL
5312     if (PyFunction_Check(__pyx_t_2)) {
5313       PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
5314       __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
5315       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5316       __Pyx_GOTREF(__pyx_t_1);
5317       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5318       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5319     } else
5320     #endif
5321     #if CYTHON_FAST_PYCCALL
5322     if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5323       PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
5324       __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
5325       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
5326       __Pyx_GOTREF(__pyx_t_1);
5327       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5328       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5329     } else
5330     #endif
5331     {
5332       __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
5333       __Pyx_GOTREF(__pyx_t_5);
5334       if (__pyx_t_3) {
5335         __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
5336       }
5337       __Pyx_GIVEREF(__pyx_t_7);
5338       PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
5339       __Pyx_GIVEREF(__pyx_t_4);
5340       PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
5341       __pyx_t_7 = 0;
5342       __pyx_t_4 = 0;
5343       __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
5344       __Pyx_GOTREF(__pyx_t_1);
5345       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5346     }
5347     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5348     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5349 
5350     /* "yt/utilities/lib/cykdtree/kdtree.pyx":142
5351  *         for i in range(self.ndim):
5352  *             np.testing.assert_equal(self.left_neighbors[i], solf.left_neighbors[i])
5353  *             np.testing.assert_equal(self.right_neighbors[i], solf.right_neighbors[i])             # <<<<<<<<<<<<<<
5354  *         np.testing.assert_equal(self.neighbors, solf.neighbors)
5355  *
5356  */
5357     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error)
5358     __Pyx_GOTREF(__pyx_t_2);
5359     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error)
5360     __Pyx_GOTREF(__pyx_t_5);
5361     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5362     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error)
5363     __Pyx_GOTREF(__pyx_t_2);
5364     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5365     __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_self->right_neighbors, __pyx_v_i, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error)
5366     __Pyx_GOTREF(__pyx_t_5);
5367     __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_solf->right_neighbors, __pyx_v_i, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error)
5368     __Pyx_GOTREF(__pyx_t_4);
5369     __pyx_t_7 = NULL;
5370     __pyx_t_6 = 0;
5371     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5372       __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
5373       if (likely(__pyx_t_7)) {
5374         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5375         __Pyx_INCREF(__pyx_t_7);
5376         __Pyx_INCREF(function);
5377         __Pyx_DECREF_SET(__pyx_t_2, function);
5378         __pyx_t_6 = 1;
5379       }
5380     }
5381     #if CYTHON_FAST_PYCALL
5382     if (PyFunction_Check(__pyx_t_2)) {
5383       PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
5384       __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
5385       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
5386       __Pyx_GOTREF(__pyx_t_1);
5387       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5388       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5389     } else
5390     #endif
5391     #if CYTHON_FAST_PYCCALL
5392     if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5393       PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
5394       __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
5395       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
5396       __Pyx_GOTREF(__pyx_t_1);
5397       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5398       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5399     } else
5400     #endif
5401     {
5402       __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error)
5403       __Pyx_GOTREF(__pyx_t_3);
5404       if (__pyx_t_7) {
5405         __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
5406       }
5407       __Pyx_GIVEREF(__pyx_t_5);
5408       PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
5409       __Pyx_GIVEREF(__pyx_t_4);
5410       PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
5411       __pyx_t_5 = 0;
5412       __pyx_t_4 = 0;
5413       __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
5414       __Pyx_GOTREF(__pyx_t_1);
5415       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5416     }
5417     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5418     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5419   }
5420 
5421   /* "yt/utilities/lib/cykdtree/kdtree.pyx":143
5422  *             np.testing.assert_equal(self.left_neighbors[i], solf.left_neighbors[i])
5423  *             np.testing.assert_equal(self.right_neighbors[i], solf.right_neighbors[i])
5424  *         np.testing.assert_equal(self.neighbors, solf.neighbors)             # <<<<<<<<<<<<<<
5425  *
5426  *
5427  */
5428   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
5429   __Pyx_GOTREF(__pyx_t_2);
5430   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
5431   __Pyx_GOTREF(__pyx_t_3);
5432   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5433   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
5434   __Pyx_GOTREF(__pyx_t_2);
5435   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5436   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_neighbors); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
5437   __Pyx_GOTREF(__pyx_t_3);
5438   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_neighbors); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L1_error)
5439   __Pyx_GOTREF(__pyx_t_4);
5440   __pyx_t_5 = NULL;
5441   __pyx_t_6 = 0;
5442   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
5443     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
5444     if (likely(__pyx_t_5)) {
5445       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5446       __Pyx_INCREF(__pyx_t_5);
5447       __Pyx_INCREF(function);
5448       __Pyx_DECREF_SET(__pyx_t_2, function);
5449       __pyx_t_6 = 1;
5450     }
5451   }
5452   #if CYTHON_FAST_PYCALL
5453   if (PyFunction_Check(__pyx_t_2)) {
5454     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
5455     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
5456     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5457     __Pyx_GOTREF(__pyx_t_1);
5458     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5459     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5460   } else
5461   #endif
5462   #if CYTHON_FAST_PYCCALL
5463   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
5464     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
5465     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
5466     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5467     __Pyx_GOTREF(__pyx_t_1);
5468     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5469     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5470   } else
5471   #endif
5472   {
5473     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 143, __pyx_L1_error)
5474     __Pyx_GOTREF(__pyx_t_7);
5475     if (__pyx_t_5) {
5476       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
5477     }
5478     __Pyx_GIVEREF(__pyx_t_3);
5479     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
5480     __Pyx_GIVEREF(__pyx_t_4);
5481     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
5482     __pyx_t_3 = 0;
5483     __pyx_t_4 = 0;
5484     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
5485     __Pyx_GOTREF(__pyx_t_1);
5486     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
5487   }
5488   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5489   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5490 
5491   /* "yt/utilities/lib/cykdtree/kdtree.pyx":128
5492  *         return out
5493  *
5494  *     def assert_equal(self, PyNode solf):             # <<<<<<<<<<<<<<
5495  *         """Assert that node properties are equal."""
5496  *         np.testing.assert_equal(self.npts, solf.npts)
5497  */
5498 
5499   /* function exit code */
5500   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
5501   goto __pyx_L0;
5502   __pyx_L1_error:;
5503   __Pyx_XDECREF(__pyx_t_1);
5504   __Pyx_XDECREF(__pyx_t_2);
5505   __Pyx_XDECREF(__pyx_t_3);
5506   __Pyx_XDECREF(__pyx_t_4);
5507   __Pyx_XDECREF(__pyx_t_5);
5508   __Pyx_XDECREF(__pyx_t_7);
5509   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.assert_equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
5510   __pyx_r = NULL;
5511   __pyx_L0:;
5512   __Pyx_XGIVEREF(__pyx_r);
5513   __Pyx_RefNannyFinishContext();
5514   return __pyx_r;
5515 }
5516 
5517 /* "yt/utilities/lib/cykdtree/kdtree.pxd":90
5518  * cdef class PyNode:
5519  *     cdef Node *_node
5520  *     cdef readonly np.uint32_t id             # <<<<<<<<<<<<<<
5521  *     cdef readonly np.uint64_t npts
5522  *     cdef readonly np.uint32_t ndim
5523  */
5524 
5525 /* Python wrapper */
5526 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id_1__get__(PyObject * __pyx_v_self)5527 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id_1__get__(PyObject *__pyx_v_self) {
5528   PyObject *__pyx_r = 0;
5529   __Pyx_RefNannyDeclarations
5530   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5531   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5532 
5533   /* function exit code */
5534   __Pyx_RefNannyFinishContext();
5535   return __pyx_r;
5536 }
5537 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5538 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5539   PyObject *__pyx_r = NULL;
5540   __Pyx_RefNannyDeclarations
5541   PyObject *__pyx_t_1 = NULL;
5542   __Pyx_RefNannySetupContext("__get__", 0);
5543   __Pyx_XDECREF(__pyx_r);
5544   __pyx_t_1 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 90, __pyx_L1_error)
5545   __Pyx_GOTREF(__pyx_t_1);
5546   __pyx_r = __pyx_t_1;
5547   __pyx_t_1 = 0;
5548   goto __pyx_L0;
5549 
5550   /* function exit code */
5551   __pyx_L1_error:;
5552   __Pyx_XDECREF(__pyx_t_1);
5553   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5554   __pyx_r = NULL;
5555   __pyx_L0:;
5556   __Pyx_XGIVEREF(__pyx_r);
5557   __Pyx_RefNannyFinishContext();
5558   return __pyx_r;
5559 }
5560 
5561 /* "yt/utilities/lib/cykdtree/kdtree.pxd":91
5562  *     cdef Node *_node
5563  *     cdef readonly np.uint32_t id
5564  *     cdef readonly np.uint64_t npts             # <<<<<<<<<<<<<<
5565  *     cdef readonly np.uint32_t ndim
5566  *     cdef readonly np.uint32_t num_leaves
5567  */
5568 
5569 /* Python wrapper */
5570 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts_1__get__(PyObject * __pyx_v_self)5571 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts_1__get__(PyObject *__pyx_v_self) {
5572   PyObject *__pyx_r = 0;
5573   __Pyx_RefNannyDeclarations
5574   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5575   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5576 
5577   /* function exit code */
5578   __Pyx_RefNannyFinishContext();
5579   return __pyx_r;
5580 }
5581 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5582 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5583   PyObject *__pyx_r = NULL;
5584   __Pyx_RefNannyDeclarations
5585   PyObject *__pyx_t_1 = NULL;
5586   __Pyx_RefNannySetupContext("__get__", 0);
5587   __Pyx_XDECREF(__pyx_r);
5588   __pyx_t_1 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->npts); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 91, __pyx_L1_error)
5589   __Pyx_GOTREF(__pyx_t_1);
5590   __pyx_r = __pyx_t_1;
5591   __pyx_t_1 = 0;
5592   goto __pyx_L0;
5593 
5594   /* function exit code */
5595   __pyx_L1_error:;
5596   __Pyx_XDECREF(__pyx_t_1);
5597   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.npts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5598   __pyx_r = NULL;
5599   __pyx_L0:;
5600   __Pyx_XGIVEREF(__pyx_r);
5601   __Pyx_RefNannyFinishContext();
5602   return __pyx_r;
5603 }
5604 
5605 /* "yt/utilities/lib/cykdtree/kdtree.pxd":92
5606  *     cdef readonly np.uint32_t id
5607  *     cdef readonly np.uint64_t npts
5608  *     cdef readonly np.uint32_t ndim             # <<<<<<<<<<<<<<
5609  *     cdef readonly np.uint32_t num_leaves
5610  *     cdef readonly np.uint64_t start_idx
5611  */
5612 
5613 /* Python wrapper */
5614 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim_1__get__(PyObject * __pyx_v_self)5615 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim_1__get__(PyObject *__pyx_v_self) {
5616   PyObject *__pyx_r = 0;
5617   __Pyx_RefNannyDeclarations
5618   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5619   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5620 
5621   /* function exit code */
5622   __Pyx_RefNannyFinishContext();
5623   return __pyx_r;
5624 }
5625 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5626 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5627   PyObject *__pyx_r = NULL;
5628   __Pyx_RefNannyDeclarations
5629   PyObject *__pyx_t_1 = NULL;
5630   __Pyx_RefNannySetupContext("__get__", 0);
5631   __Pyx_XDECREF(__pyx_r);
5632   __pyx_t_1 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 92, __pyx_L1_error)
5633   __Pyx_GOTREF(__pyx_t_1);
5634   __pyx_r = __pyx_t_1;
5635   __pyx_t_1 = 0;
5636   goto __pyx_L0;
5637 
5638   /* function exit code */
5639   __pyx_L1_error:;
5640   __Pyx_XDECREF(__pyx_t_1);
5641   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5642   __pyx_r = NULL;
5643   __pyx_L0:;
5644   __Pyx_XGIVEREF(__pyx_r);
5645   __Pyx_RefNannyFinishContext();
5646   return __pyx_r;
5647 }
5648 
5649 /* "yt/utilities/lib/cykdtree/kdtree.pxd":93
5650  *     cdef readonly np.uint64_t npts
5651  *     cdef readonly np.uint32_t ndim
5652  *     cdef readonly np.uint32_t num_leaves             # <<<<<<<<<<<<<<
5653  *     cdef readonly np.uint64_t start_idx
5654  *     cdef readonly np.uint64_t stop_idx
5655  */
5656 
5657 /* Python wrapper */
5658 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves_1__get__(PyObject * __pyx_v_self)5659 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves_1__get__(PyObject *__pyx_v_self) {
5660   PyObject *__pyx_r = 0;
5661   __Pyx_RefNannyDeclarations
5662   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5663   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5664 
5665   /* function exit code */
5666   __Pyx_RefNannyFinishContext();
5667   return __pyx_r;
5668 }
5669 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5670 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5671   PyObject *__pyx_r = NULL;
5672   __Pyx_RefNannyDeclarations
5673   PyObject *__pyx_t_1 = NULL;
5674   __Pyx_RefNannySetupContext("__get__", 0);
5675   __Pyx_XDECREF(__pyx_r);
5676   __pyx_t_1 = __Pyx_PyInt_From_npy_uint32(__pyx_v_self->num_leaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 93, __pyx_L1_error)
5677   __Pyx_GOTREF(__pyx_t_1);
5678   __pyx_r = __pyx_t_1;
5679   __pyx_t_1 = 0;
5680   goto __pyx_L0;
5681 
5682   /* function exit code */
5683   __pyx_L1_error:;
5684   __Pyx_XDECREF(__pyx_t_1);
5685   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.num_leaves.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5686   __pyx_r = NULL;
5687   __pyx_L0:;
5688   __Pyx_XGIVEREF(__pyx_r);
5689   __Pyx_RefNannyFinishContext();
5690   return __pyx_r;
5691 }
5692 
5693 /* "yt/utilities/lib/cykdtree/kdtree.pxd":94
5694  *     cdef readonly np.uint32_t ndim
5695  *     cdef readonly np.uint32_t num_leaves
5696  *     cdef readonly np.uint64_t start_idx             # <<<<<<<<<<<<<<
5697  *     cdef readonly np.uint64_t stop_idx
5698  *     cdef double *_domain_width
5699  */
5700 
5701 /* Python wrapper */
5702 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx_1__get__(PyObject * __pyx_v_self)5703 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx_1__get__(PyObject *__pyx_v_self) {
5704   PyObject *__pyx_r = 0;
5705   __Pyx_RefNannyDeclarations
5706   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5707   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5708 
5709   /* function exit code */
5710   __Pyx_RefNannyFinishContext();
5711   return __pyx_r;
5712 }
5713 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5714 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5715   PyObject *__pyx_r = NULL;
5716   __Pyx_RefNannyDeclarations
5717   PyObject *__pyx_t_1 = NULL;
5718   __Pyx_RefNannySetupContext("__get__", 0);
5719   __Pyx_XDECREF(__pyx_r);
5720   __pyx_t_1 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->start_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 94, __pyx_L1_error)
5721   __Pyx_GOTREF(__pyx_t_1);
5722   __pyx_r = __pyx_t_1;
5723   __pyx_t_1 = 0;
5724   goto __pyx_L0;
5725 
5726   /* function exit code */
5727   __pyx_L1_error:;
5728   __Pyx_XDECREF(__pyx_t_1);
5729   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.start_idx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5730   __pyx_r = NULL;
5731   __pyx_L0:;
5732   __Pyx_XGIVEREF(__pyx_r);
5733   __Pyx_RefNannyFinishContext();
5734   return __pyx_r;
5735 }
5736 
5737 /* "yt/utilities/lib/cykdtree/kdtree.pxd":95
5738  *     cdef readonly np.uint32_t num_leaves
5739  *     cdef readonly np.uint64_t start_idx
5740  *     cdef readonly np.uint64_t stop_idx             # <<<<<<<<<<<<<<
5741  *     cdef double *_domain_width
5742  *     cdef readonly object left_neighbors, right_neighbors
5743  */
5744 
5745 /* Python wrapper */
5746 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx_1__get__(PyObject * __pyx_v_self)5747 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx_1__get__(PyObject *__pyx_v_self) {
5748   PyObject *__pyx_r = 0;
5749   __Pyx_RefNannyDeclarations
5750   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5751   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5752 
5753   /* function exit code */
5754   __Pyx_RefNannyFinishContext();
5755   return __pyx_r;
5756 }
5757 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5758 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5759   PyObject *__pyx_r = NULL;
5760   __Pyx_RefNannyDeclarations
5761   PyObject *__pyx_t_1 = NULL;
5762   __Pyx_RefNannySetupContext("__get__", 0);
5763   __Pyx_XDECREF(__pyx_r);
5764   __pyx_t_1 = __Pyx_PyInt_From_npy_uint64(__pyx_v_self->stop_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 95, __pyx_L1_error)
5765   __Pyx_GOTREF(__pyx_t_1);
5766   __pyx_r = __pyx_t_1;
5767   __pyx_t_1 = 0;
5768   goto __pyx_L0;
5769 
5770   /* function exit code */
5771   __pyx_L1_error:;
5772   __Pyx_XDECREF(__pyx_t_1);
5773   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.stop_idx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5774   __pyx_r = NULL;
5775   __pyx_L0:;
5776   __Pyx_XGIVEREF(__pyx_r);
5777   __Pyx_RefNannyFinishContext();
5778   return __pyx_r;
5779 }
5780 
5781 /* "yt/utilities/lib/cykdtree/kdtree.pxd":97
5782  *     cdef readonly np.uint64_t stop_idx
5783  *     cdef double *_domain_width
5784  *     cdef readonly object left_neighbors, right_neighbors             # <<<<<<<<<<<<<<
5785  *     cdef void _init_node(self, Node* node, uint32_t num_leaves,
5786  *                          double *domain_width)
5787  */
5788 
5789 /* Python wrapper */
5790 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors_1__get__(PyObject * __pyx_v_self)5791 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors_1__get__(PyObject *__pyx_v_self) {
5792   PyObject *__pyx_r = 0;
5793   __Pyx_RefNannyDeclarations
5794   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5795   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5796 
5797   /* function exit code */
5798   __Pyx_RefNannyFinishContext();
5799   return __pyx_r;
5800 }
5801 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5802 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5803   PyObject *__pyx_r = NULL;
5804   __Pyx_RefNannyDeclarations
5805   __Pyx_RefNannySetupContext("__get__", 0);
5806   __Pyx_XDECREF(__pyx_r);
5807   __Pyx_INCREF(__pyx_v_self->left_neighbors);
5808   __pyx_r = __pyx_v_self->left_neighbors;
5809   goto __pyx_L0;
5810 
5811   /* function exit code */
5812   __pyx_L0:;
5813   __Pyx_XGIVEREF(__pyx_r);
5814   __Pyx_RefNannyFinishContext();
5815   return __pyx_r;
5816 }
5817 
5818 /* Python wrapper */
5819 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors_1__get__(PyObject * __pyx_v_self)5820 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors_1__get__(PyObject *__pyx_v_self) {
5821   PyObject *__pyx_r = 0;
5822   __Pyx_RefNannyDeclarations
5823   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
5824   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5825 
5826   /* function exit code */
5827   __Pyx_RefNannyFinishContext();
5828   return __pyx_r;
5829 }
5830 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5831 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5832   PyObject *__pyx_r = NULL;
5833   __Pyx_RefNannyDeclarations
5834   __Pyx_RefNannySetupContext("__get__", 0);
5835   __Pyx_XDECREF(__pyx_r);
5836   __Pyx_INCREF(__pyx_v_self->right_neighbors);
5837   __pyx_r = __pyx_v_self->right_neighbors;
5838   goto __pyx_L0;
5839 
5840   /* function exit code */
5841   __pyx_L0:;
5842   __Pyx_XGIVEREF(__pyx_r);
5843   __Pyx_RefNannyFinishContext();
5844   return __pyx_r;
5845 }
5846 
5847 /* "(tree fragment)":1
5848  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
5849  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5850  * def __setstate_cython__(self, __pyx_state):
5851  */
5852 
5853 /* Python wrapper */
5854 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)5855 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
5856   PyObject *__pyx_r = 0;
5857   __Pyx_RefNannyDeclarations
5858   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
5859   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8__reduce_cython__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self));
5860 
5861   /* function exit code */
5862   __Pyx_RefNannyFinishContext();
5863   return __pyx_r;
5864 }
5865 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self)5866 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self) {
5867   PyObject *__pyx_r = NULL;
5868   __Pyx_RefNannyDeclarations
5869   PyObject *__pyx_t_1 = NULL;
5870   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
5871 
5872   /* "(tree fragment)":2
5873  * def __reduce_cython__(self):
5874  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
5875  * def __setstate_cython__(self, __pyx_state):
5876  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5877  */
5878   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
5879   __Pyx_GOTREF(__pyx_t_1);
5880   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
5881   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5882   __PYX_ERR(1, 2, __pyx_L1_error)
5883 
5884   /* "(tree fragment)":1
5885  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
5886  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5887  * def __setstate_cython__(self, __pyx_state):
5888  */
5889 
5890   /* function exit code */
5891   __pyx_L1_error:;
5892   __Pyx_XDECREF(__pyx_t_1);
5893   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5894   __pyx_r = NULL;
5895   __Pyx_XGIVEREF(__pyx_r);
5896   __Pyx_RefNannyFinishContext();
5897   return __pyx_r;
5898 }
5899 
5900 /* "(tree fragment)":3
5901  * def __reduce_cython__(self):
5902  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5903  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
5904  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5905  */
5906 
5907 /* Python wrapper */
5908 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_11__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)5909 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
5910   PyObject *__pyx_r = 0;
5911   __Pyx_RefNannyDeclarations
5912   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
5913   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10__setstate_cython__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
5914 
5915   /* function exit code */
5916   __Pyx_RefNannyFinishContext();
5917   return __pyx_r;
5918 }
5919 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)5920 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
5921   PyObject *__pyx_r = NULL;
5922   __Pyx_RefNannyDeclarations
5923   PyObject *__pyx_t_1 = NULL;
5924   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
5925 
5926   /* "(tree fragment)":4
5927  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5928  * def __setstate_cython__(self, __pyx_state):
5929  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
5930  */
5931   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
5932   __Pyx_GOTREF(__pyx_t_1);
5933   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
5934   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5935   __PYX_ERR(1, 4, __pyx_L1_error)
5936 
5937   /* "(tree fragment)":3
5938  * def __reduce_cython__(self):
5939  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5940  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
5941  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
5942  */
5943 
5944   /* function exit code */
5945   __pyx_L1_error:;
5946   __Pyx_XDECREF(__pyx_t_1);
5947   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyNode.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
5948   __pyx_r = NULL;
5949   __Pyx_XGIVEREF(__pyx_r);
5950   __Pyx_RefNannyFinishContext();
5951   return __pyx_r;
5952 }
5953 
5954 /* "yt/utilities/lib/cykdtree/kdtree.pyx":190
5955  *     """
5956  *
5957  *     cdef void _init_tree(self, KDTree* tree):             # <<<<<<<<<<<<<<
5958  *         self._tree = tree
5959  *         self.ndim = tree.ndim
5960  */
5961 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__init_tree(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,KDTree * __pyx_v_tree)5962 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__init_tree(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, KDTree *__pyx_v_tree) {
5963   uint64_t __pyx_v_i;
5964   __Pyx_RefNannyDeclarations
5965   uint32_t __pyx_t_1;
5966   int64_t __pyx_t_2;
5967   uint64_t __pyx_t_3;
5968   PyObject *__pyx_t_4 = NULL;
5969   PyObject *__pyx_t_5 = NULL;
5970   PyObject *__pyx_t_6 = NULL;
5971   PyObject *__pyx_t_7 = NULL;
5972   int __pyx_t_8;
5973   PyObject *__pyx_t_9 = NULL;
5974   uint64_t __pyx_t_10;
5975   uint64_t __pyx_t_11;
5976   __Pyx_RefNannySetupContext("_init_tree", 0);
5977 
5978   /* "yt/utilities/lib/cykdtree/kdtree.pyx":191
5979  *
5980  *     cdef void _init_tree(self, KDTree* tree):
5981  *         self._tree = tree             # <<<<<<<<<<<<<<
5982  *         self.ndim = tree.ndim
5983  *         self.data_version = tree.data_version
5984  */
5985   __pyx_v_self->_tree = __pyx_v_tree;
5986 
5987   /* "yt/utilities/lib/cykdtree/kdtree.pyx":192
5988  *     cdef void _init_tree(self, KDTree* tree):
5989  *         self._tree = tree
5990  *         self.ndim = tree.ndim             # <<<<<<<<<<<<<<
5991  *         self.data_version = tree.data_version
5992  *         self.npts = tree.npts
5993  */
5994   __pyx_t_1 = __pyx_v_tree->ndim;
5995   __pyx_v_self->ndim = __pyx_t_1;
5996 
5997   /* "yt/utilities/lib/cykdtree/kdtree.pyx":193
5998  *         self._tree = tree
5999  *         self.ndim = tree.ndim
6000  *         self.data_version = tree.data_version             # <<<<<<<<<<<<<<
6001  *         self.npts = tree.npts
6002  *         self.num_leaves = tree.num_leaves
6003  */
6004   __pyx_t_2 = __pyx_v_tree->data_version;
6005   __pyx_v_self->data_version = __pyx_t_2;
6006 
6007   /* "yt/utilities/lib/cykdtree/kdtree.pyx":194
6008  *         self.ndim = tree.ndim
6009  *         self.data_version = tree.data_version
6010  *         self.npts = tree.npts             # <<<<<<<<<<<<<<
6011  *         self.num_leaves = tree.num_leaves
6012  *         self.leafsize = tree.leafsize
6013  */
6014   __pyx_t_3 = __pyx_v_tree->npts;
6015   __pyx_v_self->npts = __pyx_t_3;
6016 
6017   /* "yt/utilities/lib/cykdtree/kdtree.pyx":195
6018  *         self.data_version = tree.data_version
6019  *         self.npts = tree.npts
6020  *         self.num_leaves = tree.num_leaves             # <<<<<<<<<<<<<<
6021  *         self.leafsize = tree.leafsize
6022  *         self._make_leaves()
6023  */
6024   __pyx_t_1 = __pyx_v_tree->num_leaves;
6025   __pyx_v_self->num_leaves = __pyx_t_1;
6026 
6027   /* "yt/utilities/lib/cykdtree/kdtree.pyx":196
6028  *         self.npts = tree.npts
6029  *         self.num_leaves = tree.num_leaves
6030  *         self.leafsize = tree.leafsize             # <<<<<<<<<<<<<<
6031  *         self._make_leaves()
6032  *         self._idx = np.empty(self.npts, 'uint64')
6033  */
6034   __pyx_t_1 = __pyx_v_tree->leafsize;
6035   __pyx_v_self->leafsize = __pyx_t_1;
6036 
6037   /* "yt/utilities/lib/cykdtree/kdtree.pyx":197
6038  *         self.num_leaves = tree.num_leaves
6039  *         self.leafsize = tree.leafsize
6040  *         self._make_leaves()             # <<<<<<<<<<<<<<
6041  *         self._idx = np.empty(self.npts, 'uint64')
6042  *         cdef uint64_t i
6043  */
6044   ((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self->__pyx_vtab)->_make_leaves(__pyx_v_self);
6045 
6046   /* "yt/utilities/lib/cykdtree/kdtree.pyx":198
6047  *         self.leafsize = tree.leafsize
6048  *         self._make_leaves()
6049  *         self._idx = np.empty(self.npts, 'uint64')             # <<<<<<<<<<<<<<
6050  *         cdef uint64_t i
6051  *         for i in range(self.npts):
6052  */
6053   __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 198, __pyx_L1_error)
6054   __Pyx_GOTREF(__pyx_t_5);
6055   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 198, __pyx_L1_error)
6056   __Pyx_GOTREF(__pyx_t_6);
6057   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6058   __pyx_t_5 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->npts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 198, __pyx_L1_error)
6059   __Pyx_GOTREF(__pyx_t_5);
6060   __pyx_t_7 = NULL;
6061   __pyx_t_8 = 0;
6062   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
6063     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
6064     if (likely(__pyx_t_7)) {
6065       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
6066       __Pyx_INCREF(__pyx_t_7);
6067       __Pyx_INCREF(function);
6068       __Pyx_DECREF_SET(__pyx_t_6, function);
6069       __pyx_t_8 = 1;
6070     }
6071   }
6072   #if CYTHON_FAST_PYCALL
6073   if (PyFunction_Check(__pyx_t_6)) {
6074     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_n_s_uint64};
6075     __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 198, __pyx_L1_error)
6076     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
6077     __Pyx_GOTREF(__pyx_t_4);
6078     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6079   } else
6080   #endif
6081   #if CYTHON_FAST_PYCCALL
6082   if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
6083     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_n_s_uint64};
6084     __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 198, __pyx_L1_error)
6085     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
6086     __Pyx_GOTREF(__pyx_t_4);
6087     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6088   } else
6089   #endif
6090   {
6091     __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 198, __pyx_L1_error)
6092     __Pyx_GOTREF(__pyx_t_9);
6093     if (__pyx_t_7) {
6094       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
6095     }
6096     __Pyx_GIVEREF(__pyx_t_5);
6097     PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5);
6098     __Pyx_INCREF(__pyx_n_s_uint64);
6099     __Pyx_GIVEREF(__pyx_n_s_uint64);
6100     PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_n_s_uint64);
6101     __pyx_t_5 = 0;
6102     __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 198, __pyx_L1_error)
6103     __Pyx_GOTREF(__pyx_t_4);
6104     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6105   }
6106   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6107   __Pyx_GIVEREF(__pyx_t_4);
6108   __Pyx_GOTREF(__pyx_v_self->_idx);
6109   __Pyx_DECREF(__pyx_v_self->_idx);
6110   __pyx_v_self->_idx = __pyx_t_4;
6111   __pyx_t_4 = 0;
6112 
6113   /* "yt/utilities/lib/cykdtree/kdtree.pyx":200
6114  *         self._idx = np.empty(self.npts, 'uint64')
6115  *         cdef uint64_t i
6116  *         for i in range(self.npts):             # <<<<<<<<<<<<<<
6117  *             self._idx[i] = tree.all_idx[i]
6118  *
6119  */
6120   __pyx_t_3 = __pyx_v_self->npts;
6121   __pyx_t_10 = __pyx_t_3;
6122   for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
6123     __pyx_v_i = __pyx_t_11;
6124 
6125     /* "yt/utilities/lib/cykdtree/kdtree.pyx":201
6126  *         cdef uint64_t i
6127  *         for i in range(self.npts):
6128  *             self._idx[i] = tree.all_idx[i]             # <<<<<<<<<<<<<<
6129  *
6130  *     def __cinit__(self):
6131  */
6132     __pyx_t_4 = __Pyx_PyInt_From_uint64_t((__pyx_v_tree->all_idx[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error)
6133     __Pyx_GOTREF(__pyx_t_4);
6134     if (unlikely(__Pyx_SetItemInt(__pyx_v_self->_idx, __pyx_v_i, __pyx_t_4, uint64_t, 0, __Pyx_PyInt_From_uint64_t, 0, 0, 1) < 0)) __PYX_ERR(0, 201, __pyx_L1_error)
6135     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6136   }
6137 
6138   /* "yt/utilities/lib/cykdtree/kdtree.pyx":190
6139  *     """
6140  *
6141  *     cdef void _init_tree(self, KDTree* tree):             # <<<<<<<<<<<<<<
6142  *         self._tree = tree
6143  *         self.ndim = tree.ndim
6144  */
6145 
6146   /* function exit code */
6147   goto __pyx_L0;
6148   __pyx_L1_error:;
6149   __Pyx_XDECREF(__pyx_t_4);
6150   __Pyx_XDECREF(__pyx_t_5);
6151   __Pyx_XDECREF(__pyx_t_6);
6152   __Pyx_XDECREF(__pyx_t_7);
6153   __Pyx_XDECREF(__pyx_t_9);
6154   __Pyx_WriteUnraisable("yt.utilities.lib.cykdtree.kdtree.PyKDTree._init_tree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
6155   __pyx_L0:;
6156   __Pyx_RefNannyFinishContext();
6157 }
6158 
6159 /* "yt/utilities/lib/cykdtree/kdtree.pyx":203
6160  *             self._idx[i] = tree.all_idx[i]
6161  *
6162  *     def __cinit__(self):             # <<<<<<<<<<<<<<
6163  *         # Initialize everthing to NULL/0/None to prevent seg fault
6164  *         self._tree = NULL
6165  */
6166 
6167 /* Python wrapper */
6168 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_1__cinit__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)6169 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6170   int __pyx_r;
6171   __Pyx_RefNannyDeclarations
6172   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
6173   if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
6174     __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
6175   if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
6176   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree___cinit__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
6177 
6178   /* function exit code */
6179   __Pyx_RefNannyFinishContext();
6180   return __pyx_r;
6181 }
6182 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree___cinit__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)6183 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree___cinit__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
6184   int __pyx_r;
6185   __Pyx_RefNannyDeclarations
6186   __Pyx_RefNannySetupContext("__cinit__", 0);
6187 
6188   /* "yt/utilities/lib/cykdtree/kdtree.pyx":205
6189  *     def __cinit__(self):
6190  *         # Initialize everthing to NULL/0/None to prevent seg fault
6191  *         self._tree = NULL             # <<<<<<<<<<<<<<
6192  *         self.npts = 0
6193  *         self.ndim = 0
6194  */
6195   __pyx_v_self->_tree = NULL;
6196 
6197   /* "yt/utilities/lib/cykdtree/kdtree.pyx":206
6198  *         # Initialize everthing to NULL/0/None to prevent seg fault
6199  *         self._tree = NULL
6200  *         self.npts = 0             # <<<<<<<<<<<<<<
6201  *         self.ndim = 0
6202  *         self.num_leaves = 0
6203  */
6204   __pyx_v_self->npts = 0;
6205 
6206   /* "yt/utilities/lib/cykdtree/kdtree.pyx":207
6207  *         self._tree = NULL
6208  *         self.npts = 0
6209  *         self.ndim = 0             # <<<<<<<<<<<<<<
6210  *         self.num_leaves = 0
6211  *         self.leafsize = 0
6212  */
6213   __pyx_v_self->ndim = 0;
6214 
6215   /* "yt/utilities/lib/cykdtree/kdtree.pyx":208
6216  *         self.npts = 0
6217  *         self.ndim = 0
6218  *         self.num_leaves = 0             # <<<<<<<<<<<<<<
6219  *         self.leafsize = 0
6220  *         self._left_edge = NULL
6221  */
6222   __pyx_v_self->num_leaves = 0;
6223 
6224   /* "yt/utilities/lib/cykdtree/kdtree.pyx":209
6225  *         self.ndim = 0
6226  *         self.num_leaves = 0
6227  *         self.leafsize = 0             # <<<<<<<<<<<<<<
6228  *         self._left_edge = NULL
6229  *         self._right_edge = NULL
6230  */
6231   __pyx_v_self->leafsize = 0;
6232 
6233   /* "yt/utilities/lib/cykdtree/kdtree.pyx":210
6234  *         self.num_leaves = 0
6235  *         self.leafsize = 0
6236  *         self._left_edge = NULL             # <<<<<<<<<<<<<<
6237  *         self._right_edge = NULL
6238  *         self._periodic = NULL
6239  */
6240   __pyx_v_self->_left_edge = NULL;
6241 
6242   /* "yt/utilities/lib/cykdtree/kdtree.pyx":211
6243  *         self.leafsize = 0
6244  *         self._left_edge = NULL
6245  *         self._right_edge = NULL             # <<<<<<<<<<<<<<
6246  *         self._periodic = NULL
6247  *         self.leaves = None
6248  */
6249   __pyx_v_self->_right_edge = NULL;
6250 
6251   /* "yt/utilities/lib/cykdtree/kdtree.pyx":212
6252  *         self._left_edge = NULL
6253  *         self._right_edge = NULL
6254  *         self._periodic = NULL             # <<<<<<<<<<<<<<
6255  *         self.leaves = None
6256  *         self._idx = None
6257  */
6258   __pyx_v_self->_periodic = NULL;
6259 
6260   /* "yt/utilities/lib/cykdtree/kdtree.pyx":213
6261  *         self._right_edge = NULL
6262  *         self._periodic = NULL
6263  *         self.leaves = None             # <<<<<<<<<<<<<<
6264  *         self._idx = None
6265  *
6266  */
6267   __Pyx_INCREF(Py_None);
6268   __Pyx_GIVEREF(Py_None);
6269   __Pyx_GOTREF(__pyx_v_self->leaves);
6270   __Pyx_DECREF(__pyx_v_self->leaves);
6271   __pyx_v_self->leaves = Py_None;
6272 
6273   /* "yt/utilities/lib/cykdtree/kdtree.pyx":214
6274  *         self._periodic = NULL
6275  *         self.leaves = None
6276  *         self._idx = None             # <<<<<<<<<<<<<<
6277  *
6278  *     def __init__(self, np.ndarray[double, ndim=2] pts = None,
6279  */
6280   __Pyx_INCREF(Py_None);
6281   __Pyx_GIVEREF(Py_None);
6282   __Pyx_GOTREF(__pyx_v_self->_idx);
6283   __Pyx_DECREF(__pyx_v_self->_idx);
6284   __pyx_v_self->_idx = Py_None;
6285 
6286   /* "yt/utilities/lib/cykdtree/kdtree.pyx":203
6287  *             self._idx[i] = tree.all_idx[i]
6288  *
6289  *     def __cinit__(self):             # <<<<<<<<<<<<<<
6290  *         # Initialize everthing to NULL/0/None to prevent seg fault
6291  *         self._tree = NULL
6292  */
6293 
6294   /* function exit code */
6295   __pyx_r = 0;
6296   __Pyx_RefNannyFinishContext();
6297   return __pyx_r;
6298 }
6299 
6300 /* "yt/utilities/lib/cykdtree/kdtree.pyx":216
6301  *         self._idx = None
6302  *
6303  *     def __init__(self, np.ndarray[double, ndim=2] pts = None,             # <<<<<<<<<<<<<<
6304  *                  left_edge = None,
6305  *                  right_edge = None,
6306  */
6307 
6308 /* Python wrapper */
6309 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3__init__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)6310 static int __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6311   PyArrayObject *__pyx_v_pts = 0;
6312   PyObject *__pyx_v_left_edge = 0;
6313   PyObject *__pyx_v_right_edge = 0;
6314   PyObject *__pyx_v_periodic = 0;
6315   int __pyx_v_leafsize;
6316   int __pyx_v_nleaves;
6317   PyObject *__pyx_v_data_version = 0;
6318   PyObject *__pyx_v_use_sliding_midpoint = 0;
6319   int __pyx_r;
6320   __Pyx_RefNannyDeclarations
6321   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
6322   {
6323     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pts,&__pyx_n_s_left_edge,&__pyx_n_s_right_edge,&__pyx_n_s_periodic,&__pyx_n_s_leafsize,&__pyx_n_s_nleaves,&__pyx_n_s_data_version,&__pyx_n_s_use_sliding_midpoint,0};
6324     PyObject* values[8] = {0,0,0,0,0,0,0,0};
6325     values[0] = (PyObject *)((PyArrayObject *)Py_None);
6326 
6327     /* "yt/utilities/lib/cykdtree/kdtree.pyx":217
6328  *
6329  *     def __init__(self, np.ndarray[double, ndim=2] pts = None,
6330  *                  left_edge = None,             # <<<<<<<<<<<<<<
6331  *                  right_edge = None,
6332  *                  periodic = False,
6333  */
6334     values[1] = ((PyObject *)Py_None);
6335 
6336     /* "yt/utilities/lib/cykdtree/kdtree.pyx":218
6337  *     def __init__(self, np.ndarray[double, ndim=2] pts = None,
6338  *                  left_edge = None,
6339  *                  right_edge = None,             # <<<<<<<<<<<<<<
6340  *                  periodic = False,
6341  *                  int leafsize = 10000,
6342  */
6343     values[2] = ((PyObject *)Py_None);
6344 
6345     /* "yt/utilities/lib/cykdtree/kdtree.pyx":219
6346  *                  left_edge = None,
6347  *                  right_edge = None,
6348  *                  periodic = False,             # <<<<<<<<<<<<<<
6349  *                  int leafsize = 10000,
6350  *                  int nleaves = 0,
6351  */
6352     values[3] = ((PyObject *)Py_False);
6353 
6354     /* "yt/utilities/lib/cykdtree/kdtree.pyx":222
6355  *                  int leafsize = 10000,
6356  *                  int nleaves = 0,
6357  *                  data_version = None,             # <<<<<<<<<<<<<<
6358  *                  use_sliding_midpoint = False):
6359  *         # Return with nothing set if points not provided
6360  */
6361     values[6] = ((PyObject *)Py_None);
6362 
6363     /* "yt/utilities/lib/cykdtree/kdtree.pyx":223
6364  *                  int nleaves = 0,
6365  *                  data_version = None,
6366  *                  use_sliding_midpoint = False):             # <<<<<<<<<<<<<<
6367  *         # Return with nothing set if points not provided
6368  *         if pts is None:
6369  */
6370     values[7] = ((PyObject *)Py_False);
6371     if (unlikely(__pyx_kwds)) {
6372       Py_ssize_t kw_args;
6373       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6374       switch (pos_args) {
6375         case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
6376         CYTHON_FALLTHROUGH;
6377         case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
6378         CYTHON_FALLTHROUGH;
6379         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
6380         CYTHON_FALLTHROUGH;
6381         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6382         CYTHON_FALLTHROUGH;
6383         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6384         CYTHON_FALLTHROUGH;
6385         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6386         CYTHON_FALLTHROUGH;
6387         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6388         CYTHON_FALLTHROUGH;
6389         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6390         CYTHON_FALLTHROUGH;
6391         case  0: break;
6392         default: goto __pyx_L5_argtuple_error;
6393       }
6394       kw_args = PyDict_Size(__pyx_kwds);
6395       switch (pos_args) {
6396         case  0:
6397         if (kw_args > 0) {
6398           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pts);
6399           if (value) { values[0] = value; kw_args--; }
6400         }
6401         CYTHON_FALLTHROUGH;
6402         case  1:
6403         if (kw_args > 0) {
6404           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_left_edge);
6405           if (value) { values[1] = value; kw_args--; }
6406         }
6407         CYTHON_FALLTHROUGH;
6408         case  2:
6409         if (kw_args > 0) {
6410           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_right_edge);
6411           if (value) { values[2] = value; kw_args--; }
6412         }
6413         CYTHON_FALLTHROUGH;
6414         case  3:
6415         if (kw_args > 0) {
6416           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_periodic);
6417           if (value) { values[3] = value; kw_args--; }
6418         }
6419         CYTHON_FALLTHROUGH;
6420         case  4:
6421         if (kw_args > 0) {
6422           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_leafsize);
6423           if (value) { values[4] = value; kw_args--; }
6424         }
6425         CYTHON_FALLTHROUGH;
6426         case  5:
6427         if (kw_args > 0) {
6428           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nleaves);
6429           if (value) { values[5] = value; kw_args--; }
6430         }
6431         CYTHON_FALLTHROUGH;
6432         case  6:
6433         if (kw_args > 0) {
6434           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data_version);
6435           if (value) { values[6] = value; kw_args--; }
6436         }
6437         CYTHON_FALLTHROUGH;
6438         case  7:
6439         if (kw_args > 0) {
6440           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_use_sliding_midpoint);
6441           if (value) { values[7] = value; kw_args--; }
6442         }
6443       }
6444       if (unlikely(kw_args > 0)) {
6445         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 216, __pyx_L3_error)
6446       }
6447     } else {
6448       switch (PyTuple_GET_SIZE(__pyx_args)) {
6449         case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
6450         CYTHON_FALLTHROUGH;
6451         case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
6452         CYTHON_FALLTHROUGH;
6453         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
6454         CYTHON_FALLTHROUGH;
6455         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
6456         CYTHON_FALLTHROUGH;
6457         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6458         CYTHON_FALLTHROUGH;
6459         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6460         CYTHON_FALLTHROUGH;
6461         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6462         CYTHON_FALLTHROUGH;
6463         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6464         CYTHON_FALLTHROUGH;
6465         case  0: break;
6466         default: goto __pyx_L5_argtuple_error;
6467       }
6468     }
6469     __pyx_v_pts = ((PyArrayObject *)values[0]);
6470     __pyx_v_left_edge = values[1];
6471     __pyx_v_right_edge = values[2];
6472     __pyx_v_periodic = values[3];
6473     if (values[4]) {
6474       __pyx_v_leafsize = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_leafsize == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 220, __pyx_L3_error)
6475     } else {
6476       __pyx_v_leafsize = ((int)0x2710);
6477     }
6478     if (values[5]) {
6479       __pyx_v_nleaves = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_nleaves == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 221, __pyx_L3_error)
6480     } else {
6481       __pyx_v_nleaves = ((int)0);
6482     }
6483     __pyx_v_data_version = values[6];
6484     __pyx_v_use_sliding_midpoint = values[7];
6485   }
6486   goto __pyx_L4_argument_unpacking_done;
6487   __pyx_L5_argtuple_error:;
6488   __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 216, __pyx_L3_error)
6489   __pyx_L3_error:;
6490   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
6491   __Pyx_RefNannyFinishContext();
6492   return -1;
6493   __pyx_L4_argument_unpacking_done:;
6494   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pts), __pyx_ptype_5numpy_ndarray, 1, "pts", 0))) __PYX_ERR(0, 216, __pyx_L1_error)
6495   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_2__init__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), __pyx_v_pts, __pyx_v_left_edge, __pyx_v_right_edge, __pyx_v_periodic, __pyx_v_leafsize, __pyx_v_nleaves, __pyx_v_data_version, __pyx_v_use_sliding_midpoint);
6496 
6497   /* "yt/utilities/lib/cykdtree/kdtree.pyx":216
6498  *         self._idx = None
6499  *
6500  *     def __init__(self, np.ndarray[double, ndim=2] pts = None,             # <<<<<<<<<<<<<<
6501  *                  left_edge = None,
6502  *                  right_edge = None,
6503  */
6504 
6505   /* function exit code */
6506   goto __pyx_L0;
6507   __pyx_L1_error:;
6508   __pyx_r = -1;
6509   __pyx_L0:;
6510   __Pyx_RefNannyFinishContext();
6511   return __pyx_r;
6512 }
6513 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_2__init__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,PyArrayObject * __pyx_v_pts,PyObject * __pyx_v_left_edge,PyObject * __pyx_v_right_edge,PyObject * __pyx_v_periodic,int __pyx_v_leafsize,int __pyx_v_nleaves,PyObject * __pyx_v_data_version,PyObject * __pyx_v_use_sliding_midpoint)6514 static int __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_2__init__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pts, PyObject *__pyx_v_left_edge, PyObject *__pyx_v_right_edge, PyObject *__pyx_v_periodic, int __pyx_v_leafsize, int __pyx_v_nleaves, PyObject *__pyx_v_data_version, PyObject *__pyx_v_use_sliding_midpoint) {
6515   uint32_t __pyx_v_i;
6516   __Pyx_LocalBuf_ND __pyx_pybuffernd_pts;
6517   __Pyx_Buffer __pyx_pybuffer_pts;
6518   int __pyx_r;
6519   __Pyx_RefNannyDeclarations
6520   int __pyx_t_1;
6521   int __pyx_t_2;
6522   PyObject *__pyx_t_3 = NULL;
6523   PyObject *__pyx_t_4 = NULL;
6524   PyObject *__pyx_t_5 = NULL;
6525   PyObject *__pyx_t_6 = NULL;
6526   PyObject *__pyx_t_7 = NULL;
6527   PyObject *__pyx_t_8 = NULL;
6528   int __pyx_t_9;
6529   int64_t __pyx_t_10;
6530   uint32_t __pyx_t_11;
6531   uint32_t __pyx_t_12;
6532   uint32_t __pyx_t_13;
6533   double __pyx_t_14;
6534   bool __pyx_t_15;
6535   Py_ssize_t __pyx_t_16;
6536   Py_ssize_t __pyx_t_17;
6537   __Pyx_RefNannySetupContext("__init__", 0);
6538   __Pyx_INCREF(__pyx_v_left_edge);
6539   __Pyx_INCREF(__pyx_v_right_edge);
6540   __Pyx_INCREF(__pyx_v_data_version);
6541   __pyx_pybuffer_pts.pybuffer.buf = NULL;
6542   __pyx_pybuffer_pts.refcount = 0;
6543   __pyx_pybuffernd_pts.data = NULL;
6544   __pyx_pybuffernd_pts.rcbuffer = &__pyx_pybuffer_pts;
6545   {
6546     __Pyx_BufFmt_StackElem __pyx_stack[1];
6547     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pts.rcbuffer->pybuffer, (PyObject*)__pyx_v_pts, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 216, __pyx_L1_error)
6548   }
6549   __pyx_pybuffernd_pts.diminfo[0].strides = __pyx_pybuffernd_pts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pts.diminfo[0].shape = __pyx_pybuffernd_pts.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_pts.diminfo[1].strides = __pyx_pybuffernd_pts.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_pts.diminfo[1].shape = __pyx_pybuffernd_pts.rcbuffer->pybuffer.shape[1];
6550 
6551   /* "yt/utilities/lib/cykdtree/kdtree.pyx":225
6552  *                  use_sliding_midpoint = False):
6553  *         # Return with nothing set if points not provided
6554  *         if pts is None:             # <<<<<<<<<<<<<<
6555  *             return
6556  *         # Set leafsize of number of leaves provided
6557  */
6558   __pyx_t_1 = (((PyObject *)__pyx_v_pts) == Py_None);
6559   __pyx_t_2 = (__pyx_t_1 != 0);
6560   if (__pyx_t_2) {
6561 
6562     /* "yt/utilities/lib/cykdtree/kdtree.pyx":226
6563  *         # Return with nothing set if points not provided
6564  *         if pts is None:
6565  *             return             # <<<<<<<<<<<<<<
6566  *         # Set leafsize of number of leaves provided
6567  *         if nleaves > 0:
6568  */
6569     __pyx_r = 0;
6570     goto __pyx_L0;
6571 
6572     /* "yt/utilities/lib/cykdtree/kdtree.pyx":225
6573  *                  use_sliding_midpoint = False):
6574  *         # Return with nothing set if points not provided
6575  *         if pts is None:             # <<<<<<<<<<<<<<
6576  *             return
6577  *         # Set leafsize of number of leaves provided
6578  */
6579   }
6580 
6581   /* "yt/utilities/lib/cykdtree/kdtree.pyx":228
6582  *             return
6583  *         # Set leafsize of number of leaves provided
6584  *         if nleaves > 0:             # <<<<<<<<<<<<<<
6585  *             nleaves = <int>(2**np.ceil(np.log2(<float>nleaves)))
6586  *             leafsize = pts.shape[0]/nleaves + 1
6587  */
6588   __pyx_t_2 = ((__pyx_v_nleaves > 0) != 0);
6589   if (__pyx_t_2) {
6590 
6591     /* "yt/utilities/lib/cykdtree/kdtree.pyx":229
6592  *         # Set leafsize of number of leaves provided
6593  *         if nleaves > 0:
6594  *             nleaves = <int>(2**np.ceil(np.log2(<float>nleaves)))             # <<<<<<<<<<<<<<
6595  *             leafsize = pts.shape[0]/nleaves + 1
6596  *         if (leafsize < 2):
6597  */
6598     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error)
6599     __Pyx_GOTREF(__pyx_t_4);
6600     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
6601     __Pyx_GOTREF(__pyx_t_5);
6602     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6603     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 229, __pyx_L1_error)
6604     __Pyx_GOTREF(__pyx_t_6);
6605     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_log2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 229, __pyx_L1_error)
6606     __Pyx_GOTREF(__pyx_t_7);
6607     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6608     __pyx_t_6 = PyFloat_FromDouble(((float)__pyx_v_nleaves)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 229, __pyx_L1_error)
6609     __Pyx_GOTREF(__pyx_t_6);
6610     __pyx_t_8 = NULL;
6611     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
6612       __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
6613       if (likely(__pyx_t_8)) {
6614         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
6615         __Pyx_INCREF(__pyx_t_8);
6616         __Pyx_INCREF(function);
6617         __Pyx_DECREF_SET(__pyx_t_7, function);
6618       }
6619     }
6620     __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
6621     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
6622     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6623     if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error)
6624     __Pyx_GOTREF(__pyx_t_4);
6625     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6626     __pyx_t_7 = NULL;
6627     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
6628       __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
6629       if (likely(__pyx_t_7)) {
6630         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
6631         __Pyx_INCREF(__pyx_t_7);
6632         __Pyx_INCREF(function);
6633         __Pyx_DECREF_SET(__pyx_t_5, function);
6634       }
6635     }
6636     __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4);
6637     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
6638     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6639     if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
6640     __Pyx_GOTREF(__pyx_t_3);
6641     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6642     __pyx_t_5 = __Pyx_PyNumber_PowerOf2(__pyx_int_2, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
6643     __Pyx_GOTREF(__pyx_t_5);
6644     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6645     __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 229, __pyx_L1_error)
6646     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6647     __pyx_v_nleaves = ((int)__pyx_t_9);
6648 
6649     /* "yt/utilities/lib/cykdtree/kdtree.pyx":230
6650  *         if nleaves > 0:
6651  *             nleaves = <int>(2**np.ceil(np.log2(<float>nleaves)))
6652  *             leafsize = pts.shape[0]/nleaves + 1             # <<<<<<<<<<<<<<
6653  *         if (leafsize < 2):
6654  *             # This is here to prevent segfault. The cpp code needs modified to
6655  */
6656     if (unlikely(__pyx_v_nleaves == 0)) {
6657       PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
6658       __PYX_ERR(0, 230, __pyx_L1_error)
6659     }
6660     else if (sizeof(npy_intp) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_nleaves == (int)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW((__pyx_v_pts->dimensions[0])))) {
6661       PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
6662       __PYX_ERR(0, 230, __pyx_L1_error)
6663     }
6664     __pyx_v_leafsize = (__Pyx_div_npy_intp((__pyx_v_pts->dimensions[0]), __pyx_v_nleaves) + 1);
6665 
6666     /* "yt/utilities/lib/cykdtree/kdtree.pyx":228
6667  *             return
6668  *         # Set leafsize of number of leaves provided
6669  *         if nleaves > 0:             # <<<<<<<<<<<<<<
6670  *             nleaves = <int>(2**np.ceil(np.log2(<float>nleaves)))
6671  *             leafsize = pts.shape[0]/nleaves + 1
6672  */
6673   }
6674 
6675   /* "yt/utilities/lib/cykdtree/kdtree.pyx":231
6676  *             nleaves = <int>(2**np.ceil(np.log2(<float>nleaves)))
6677  *             leafsize = pts.shape[0]/nleaves + 1
6678  *         if (leafsize < 2):             # <<<<<<<<<<<<<<
6679  *             # This is here to prevent segfault. The cpp code needs modified to
6680  *             # support leafsize = 1
6681  */
6682   __pyx_t_2 = ((__pyx_v_leafsize < 2) != 0);
6683   if (unlikely(__pyx_t_2)) {
6684 
6685     /* "yt/utilities/lib/cykdtree/kdtree.pyx":234
6686  *             # This is here to prevent segfault. The cpp code needs modified to
6687  *             # support leafsize = 1
6688  *             raise ValueError("'leafsize' cannot be smaller than 2.")             # <<<<<<<<<<<<<<
6689  *         if left_edge is None:
6690  *             left_edge = np.min(pts, axis=0)
6691  */
6692     __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 234, __pyx_L1_error)
6693     __Pyx_GOTREF(__pyx_t_5);
6694     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
6695     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6696     __PYX_ERR(0, 234, __pyx_L1_error)
6697 
6698     /* "yt/utilities/lib/cykdtree/kdtree.pyx":231
6699  *             nleaves = <int>(2**np.ceil(np.log2(<float>nleaves)))
6700  *             leafsize = pts.shape[0]/nleaves + 1
6701  *         if (leafsize < 2):             # <<<<<<<<<<<<<<
6702  *             # This is here to prevent segfault. The cpp code needs modified to
6703  *             # support leafsize = 1
6704  */
6705   }
6706 
6707   /* "yt/utilities/lib/cykdtree/kdtree.pyx":235
6708  *             # support leafsize = 1
6709  *             raise ValueError("'leafsize' cannot be smaller than 2.")
6710  *         if left_edge is None:             # <<<<<<<<<<<<<<
6711  *             left_edge = np.min(pts, axis=0)
6712  *         else:
6713  */
6714   __pyx_t_2 = (__pyx_v_left_edge == Py_None);
6715   __pyx_t_1 = (__pyx_t_2 != 0);
6716   if (__pyx_t_1) {
6717 
6718     /* "yt/utilities/lib/cykdtree/kdtree.pyx":236
6719  *             raise ValueError("'leafsize' cannot be smaller than 2.")
6720  *         if left_edge is None:
6721  *             left_edge = np.min(pts, axis=0)             # <<<<<<<<<<<<<<
6722  *         else:
6723  *             left_edge = np.array(left_edge)
6724  */
6725     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L1_error)
6726     __Pyx_GOTREF(__pyx_t_5);
6727     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_min); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 236, __pyx_L1_error)
6728     __Pyx_GOTREF(__pyx_t_3);
6729     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6730     __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L1_error)
6731     __Pyx_GOTREF(__pyx_t_5);
6732     __Pyx_INCREF(((PyObject *)__pyx_v_pts));
6733     __Pyx_GIVEREF(((PyObject *)__pyx_v_pts));
6734     PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_pts));
6735     __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 236, __pyx_L1_error)
6736     __Pyx_GOTREF(__pyx_t_4);
6737     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 236, __pyx_L1_error)
6738     __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 236, __pyx_L1_error)
6739     __Pyx_GOTREF(__pyx_t_7);
6740     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6741     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6742     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6743     __Pyx_DECREF_SET(__pyx_v_left_edge, __pyx_t_7);
6744     __pyx_t_7 = 0;
6745 
6746     /* "yt/utilities/lib/cykdtree/kdtree.pyx":235
6747  *             # support leafsize = 1
6748  *             raise ValueError("'leafsize' cannot be smaller than 2.")
6749  *         if left_edge is None:             # <<<<<<<<<<<<<<
6750  *             left_edge = np.min(pts, axis=0)
6751  *         else:
6752  */
6753     goto __pyx_L6;
6754   }
6755 
6756   /* "yt/utilities/lib/cykdtree/kdtree.pyx":238
6757  *             left_edge = np.min(pts, axis=0)
6758  *         else:
6759  *             left_edge = np.array(left_edge)             # <<<<<<<<<<<<<<
6760  *         if right_edge is None:
6761  *             right_edge = np.max(pts, axis=0)
6762  */
6763   /*else*/ {
6764     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 238, __pyx_L1_error)
6765     __Pyx_GOTREF(__pyx_t_4);
6766     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 238, __pyx_L1_error)
6767     __Pyx_GOTREF(__pyx_t_5);
6768     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6769     __pyx_t_4 = NULL;
6770     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
6771       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
6772       if (likely(__pyx_t_4)) {
6773         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
6774         __Pyx_INCREF(__pyx_t_4);
6775         __Pyx_INCREF(function);
6776         __Pyx_DECREF_SET(__pyx_t_5, function);
6777       }
6778     }
6779     __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_left_edge) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_left_edge);
6780     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6781     if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 238, __pyx_L1_error)
6782     __Pyx_GOTREF(__pyx_t_7);
6783     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6784     __Pyx_DECREF_SET(__pyx_v_left_edge, __pyx_t_7);
6785     __pyx_t_7 = 0;
6786   }
6787   __pyx_L6:;
6788 
6789   /* "yt/utilities/lib/cykdtree/kdtree.pyx":239
6790  *         else:
6791  *             left_edge = np.array(left_edge)
6792  *         if right_edge is None:             # <<<<<<<<<<<<<<
6793  *             right_edge = np.max(pts, axis=0)
6794  *         else:
6795  */
6796   __pyx_t_1 = (__pyx_v_right_edge == Py_None);
6797   __pyx_t_2 = (__pyx_t_1 != 0);
6798   if (__pyx_t_2) {
6799 
6800     /* "yt/utilities/lib/cykdtree/kdtree.pyx":240
6801  *             left_edge = np.array(left_edge)
6802  *         if right_edge is None:
6803  *             right_edge = np.max(pts, axis=0)             # <<<<<<<<<<<<<<
6804  *         else:
6805  *             right_edge = np.array(right_edge)
6806  */
6807     __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error)
6808     __Pyx_GOTREF(__pyx_t_7);
6809     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_max); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 240, __pyx_L1_error)
6810     __Pyx_GOTREF(__pyx_t_5);
6811     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6812     __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error)
6813     __Pyx_GOTREF(__pyx_t_7);
6814     __Pyx_INCREF(((PyObject *)__pyx_v_pts));
6815     __Pyx_GIVEREF(((PyObject *)__pyx_v_pts));
6816     PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_pts));
6817     __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error)
6818     __Pyx_GOTREF(__pyx_t_4);
6819     if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 240, __pyx_L1_error)
6820     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
6821     __Pyx_GOTREF(__pyx_t_3);
6822     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6823     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6824     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6825     __Pyx_DECREF_SET(__pyx_v_right_edge, __pyx_t_3);
6826     __pyx_t_3 = 0;
6827 
6828     /* "yt/utilities/lib/cykdtree/kdtree.pyx":239
6829  *         else:
6830  *             left_edge = np.array(left_edge)
6831  *         if right_edge is None:             # <<<<<<<<<<<<<<
6832  *             right_edge = np.max(pts, axis=0)
6833  *         else:
6834  */
6835     goto __pyx_L7;
6836   }
6837 
6838   /* "yt/utilities/lib/cykdtree/kdtree.pyx":242
6839  *             right_edge = np.max(pts, axis=0)
6840  *         else:
6841  *             right_edge = np.array(right_edge)             # <<<<<<<<<<<<<<
6842  *         if data_version is None:
6843  *             data_version = 0
6844  */
6845   /*else*/ {
6846     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 242, __pyx_L1_error)
6847     __Pyx_GOTREF(__pyx_t_4);
6848     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
6849     __Pyx_GOTREF(__pyx_t_7);
6850     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6851     __pyx_t_4 = NULL;
6852     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
6853       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
6854       if (likely(__pyx_t_4)) {
6855         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
6856         __Pyx_INCREF(__pyx_t_4);
6857         __Pyx_INCREF(function);
6858         __Pyx_DECREF_SET(__pyx_t_7, function);
6859       }
6860     }
6861     __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_v_right_edge) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_right_edge);
6862     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6863     if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 242, __pyx_L1_error)
6864     __Pyx_GOTREF(__pyx_t_3);
6865     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6866     __Pyx_DECREF_SET(__pyx_v_right_edge, __pyx_t_3);
6867     __pyx_t_3 = 0;
6868   }
6869   __pyx_L7:;
6870 
6871   /* "yt/utilities/lib/cykdtree/kdtree.pyx":243
6872  *         else:
6873  *             right_edge = np.array(right_edge)
6874  *         if data_version is None:             # <<<<<<<<<<<<<<
6875  *             data_version = 0
6876  *         self.data_version = data_version
6877  */
6878   __pyx_t_2 = (__pyx_v_data_version == Py_None);
6879   __pyx_t_1 = (__pyx_t_2 != 0);
6880   if (__pyx_t_1) {
6881 
6882     /* "yt/utilities/lib/cykdtree/kdtree.pyx":244
6883  *             right_edge = np.array(right_edge)
6884  *         if data_version is None:
6885  *             data_version = 0             # <<<<<<<<<<<<<<
6886  *         self.data_version = data_version
6887  *         cdef uint32_t k,i,j
6888  */
6889     __Pyx_INCREF(__pyx_int_0);
6890     __Pyx_DECREF_SET(__pyx_v_data_version, __pyx_int_0);
6891 
6892     /* "yt/utilities/lib/cykdtree/kdtree.pyx":243
6893  *         else:
6894  *             right_edge = np.array(right_edge)
6895  *         if data_version is None:             # <<<<<<<<<<<<<<
6896  *             data_version = 0
6897  *         self.data_version = data_version
6898  */
6899   }
6900 
6901   /* "yt/utilities/lib/cykdtree/kdtree.pyx":245
6902  *         if data_version is None:
6903  *             data_version = 0
6904  *         self.data_version = data_version             # <<<<<<<<<<<<<<
6905  *         cdef uint32_t k,i,j
6906  *         self.npts = <uint64_t>pts.shape[0]
6907  */
6908   __pyx_t_10 = __Pyx_PyInt_As_int64_t(__pyx_v_data_version); if (unlikely((__pyx_t_10 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 245, __pyx_L1_error)
6909   __pyx_v_self->data_version = __pyx_t_10;
6910 
6911   /* "yt/utilities/lib/cykdtree/kdtree.pyx":247
6912  *         self.data_version = data_version
6913  *         cdef uint32_t k,i,j
6914  *         self.npts = <uint64_t>pts.shape[0]             # <<<<<<<<<<<<<<
6915  *         self.ndim = <uint32_t>pts.shape[1]
6916  *         assert(left_edge.size == self.ndim)
6917  */
6918   __pyx_v_self->npts = ((uint64_t)(__pyx_v_pts->dimensions[0]));
6919 
6920   /* "yt/utilities/lib/cykdtree/kdtree.pyx":248
6921  *         cdef uint32_t k,i,j
6922  *         self.npts = <uint64_t>pts.shape[0]
6923  *         self.ndim = <uint32_t>pts.shape[1]             # <<<<<<<<<<<<<<
6924  *         assert(left_edge.size == self.ndim)
6925  *         assert(right_edge.size == self.ndim)
6926  */
6927   __pyx_v_self->ndim = ((uint32_t)(__pyx_v_pts->dimensions[1]));
6928 
6929   /* "yt/utilities/lib/cykdtree/kdtree.pyx":249
6930  *         self.npts = <uint64_t>pts.shape[0]
6931  *         self.ndim = <uint32_t>pts.shape[1]
6932  *         assert(left_edge.size == self.ndim)             # <<<<<<<<<<<<<<
6933  *         assert(right_edge.size == self.ndim)
6934  *         self.leafsize = leafsize
6935  */
6936   #ifndef CYTHON_WITHOUT_ASSERTIONS
6937   if (unlikely(!Py_OptimizeFlag)) {
6938     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_left_edge, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 249, __pyx_L1_error)
6939     __Pyx_GOTREF(__pyx_t_3);
6940     __pyx_t_7 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 249, __pyx_L1_error)
6941     __Pyx_GOTREF(__pyx_t_7);
6942     __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
6943     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6944     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6945     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 249, __pyx_L1_error)
6946     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6947     if (unlikely(!__pyx_t_1)) {
6948       PyErr_SetNone(PyExc_AssertionError);
6949       __PYX_ERR(0, 249, __pyx_L1_error)
6950     }
6951   }
6952   #endif
6953 
6954   /* "yt/utilities/lib/cykdtree/kdtree.pyx":250
6955  *         self.ndim = <uint32_t>pts.shape[1]
6956  *         assert(left_edge.size == self.ndim)
6957  *         assert(right_edge.size == self.ndim)             # <<<<<<<<<<<<<<
6958  *         self.leafsize = leafsize
6959  *         self._left_edge = <double *>malloc(self.ndim*sizeof(double))
6960  */
6961   #ifndef CYTHON_WITHOUT_ASSERTIONS
6962   if (unlikely(!Py_OptimizeFlag)) {
6963     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_right_edge, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
6964     __Pyx_GOTREF(__pyx_t_4);
6965     __pyx_t_7 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 250, __pyx_L1_error)
6966     __Pyx_GOTREF(__pyx_t_7);
6967     __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 250, __pyx_L1_error)
6968     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6969     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6970     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 250, __pyx_L1_error)
6971     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6972     if (unlikely(!__pyx_t_1)) {
6973       PyErr_SetNone(PyExc_AssertionError);
6974       __PYX_ERR(0, 250, __pyx_L1_error)
6975     }
6976   }
6977   #endif
6978 
6979   /* "yt/utilities/lib/cykdtree/kdtree.pyx":251
6980  *         assert(left_edge.size == self.ndim)
6981  *         assert(right_edge.size == self.ndim)
6982  *         self.leafsize = leafsize             # <<<<<<<<<<<<<<
6983  *         self._left_edge = <double *>malloc(self.ndim*sizeof(double))
6984  *         self._right_edge = <double *>malloc(self.ndim*sizeof(double))
6985  */
6986   __pyx_v_self->leafsize = __pyx_v_leafsize;
6987 
6988   /* "yt/utilities/lib/cykdtree/kdtree.pyx":252
6989  *         assert(right_edge.size == self.ndim)
6990  *         self.leafsize = leafsize
6991  *         self._left_edge = <double *>malloc(self.ndim*sizeof(double))             # <<<<<<<<<<<<<<
6992  *         self._right_edge = <double *>malloc(self.ndim*sizeof(double))
6993  *         self._periodic = <cbool *>malloc(self.ndim*sizeof(cbool));
6994  */
6995   __pyx_v_self->_left_edge = ((double *)malloc((__pyx_v_self->ndim * (sizeof(double)))));
6996 
6997   /* "yt/utilities/lib/cykdtree/kdtree.pyx":253
6998  *         self.leafsize = leafsize
6999  *         self._left_edge = <double *>malloc(self.ndim*sizeof(double))
7000  *         self._right_edge = <double *>malloc(self.ndim*sizeof(double))             # <<<<<<<<<<<<<<
7001  *         self._periodic = <cbool *>malloc(self.ndim*sizeof(cbool));
7002  *         for i in range(self.ndim):
7003  */
7004   __pyx_v_self->_right_edge = ((double *)malloc((__pyx_v_self->ndim * (sizeof(double)))));
7005 
7006   /* "yt/utilities/lib/cykdtree/kdtree.pyx":254
7007  *         self._left_edge = <double *>malloc(self.ndim*sizeof(double))
7008  *         self._right_edge = <double *>malloc(self.ndim*sizeof(double))
7009  *         self._periodic = <cbool *>malloc(self.ndim*sizeof(cbool));             # <<<<<<<<<<<<<<
7010  *         for i in range(self.ndim):
7011  *             self._left_edge[i] = left_edge[i]
7012  */
7013   __pyx_v_self->_periodic = ((bool *)malloc((__pyx_v_self->ndim * (sizeof(bool)))));
7014 
7015   /* "yt/utilities/lib/cykdtree/kdtree.pyx":255
7016  *         self._right_edge = <double *>malloc(self.ndim*sizeof(double))
7017  *         self._periodic = <cbool *>malloc(self.ndim*sizeof(cbool));
7018  *         for i in range(self.ndim):             # <<<<<<<<<<<<<<
7019  *             self._left_edge[i] = left_edge[i]
7020  *             self._right_edge[i] = right_edge[i]
7021  */
7022   __pyx_t_11 = __pyx_v_self->ndim;
7023   __pyx_t_12 = __pyx_t_11;
7024   for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
7025     __pyx_v_i = __pyx_t_13;
7026 
7027     /* "yt/utilities/lib/cykdtree/kdtree.pyx":256
7028  *         self._periodic = <cbool *>malloc(self.ndim*sizeof(cbool));
7029  *         for i in range(self.ndim):
7030  *             self._left_edge[i] = left_edge[i]             # <<<<<<<<<<<<<<
7031  *             self._right_edge[i] = right_edge[i]
7032  *         if isinstance(periodic, pybool):
7033  */
7034     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_left_edge, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error)
7035     __Pyx_GOTREF(__pyx_t_3);
7036     __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 256, __pyx_L1_error)
7037     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7038     (__pyx_v_self->_left_edge[__pyx_v_i]) = __pyx_t_14;
7039 
7040     /* "yt/utilities/lib/cykdtree/kdtree.pyx":257
7041  *         for i in range(self.ndim):
7042  *             self._left_edge[i] = left_edge[i]
7043  *             self._right_edge[i] = right_edge[i]             # <<<<<<<<<<<<<<
7044  *         if isinstance(periodic, pybool):
7045  *             for i in range(self.ndim):
7046  */
7047     __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_right_edge, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 257, __pyx_L1_error)
7048     __Pyx_GOTREF(__pyx_t_3);
7049     __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 257, __pyx_L1_error)
7050     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7051     (__pyx_v_self->_right_edge[__pyx_v_i]) = __pyx_t_14;
7052   }
7053 
7054   /* "yt/utilities/lib/cykdtree/kdtree.pyx":258
7055  *             self._left_edge[i] = left_edge[i]
7056  *             self._right_edge[i] = right_edge[i]
7057  *         if isinstance(periodic, pybool):             # <<<<<<<<<<<<<<
7058  *             for i in range(self.ndim):
7059  *                 self._periodic[i] = <cbool>periodic
7060  */
7061   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_periodic, __pyx_ptype_7cpython_4bool_bool);
7062   __pyx_t_2 = (__pyx_t_1 != 0);
7063   if (__pyx_t_2) {
7064 
7065     /* "yt/utilities/lib/cykdtree/kdtree.pyx":259
7066  *             self._right_edge[i] = right_edge[i]
7067  *         if isinstance(periodic, pybool):
7068  *             for i in range(self.ndim):             # <<<<<<<<<<<<<<
7069  *                 self._periodic[i] = <cbool>periodic
7070  *         else:
7071  */
7072     __pyx_t_11 = __pyx_v_self->ndim;
7073     __pyx_t_12 = __pyx_t_11;
7074     for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
7075       __pyx_v_i = __pyx_t_13;
7076 
7077       /* "yt/utilities/lib/cykdtree/kdtree.pyx":260
7078  *         if isinstance(periodic, pybool):
7079  *             for i in range(self.ndim):
7080  *                 self._periodic[i] = <cbool>periodic             # <<<<<<<<<<<<<<
7081  *         else:
7082  *             for i in range(self.ndim):
7083  */
7084       __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_periodic); if (unlikely((__pyx_t_15 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
7085       (__pyx_v_self->_periodic[__pyx_v_i]) = ((bool)__pyx_t_15);
7086     }
7087 
7088     /* "yt/utilities/lib/cykdtree/kdtree.pyx":258
7089  *             self._left_edge[i] = left_edge[i]
7090  *             self._right_edge[i] = right_edge[i]
7091  *         if isinstance(periodic, pybool):             # <<<<<<<<<<<<<<
7092  *             for i in range(self.ndim):
7093  *                 self._periodic[i] = <cbool>periodic
7094  */
7095     goto __pyx_L11;
7096   }
7097 
7098   /* "yt/utilities/lib/cykdtree/kdtree.pyx":262
7099  *                 self._periodic[i] = <cbool>periodic
7100  *         else:
7101  *             for i in range(self.ndim):             # <<<<<<<<<<<<<<
7102  *                 self._periodic[i] = <cbool>periodic[i]
7103  *         # Create tree and leaves
7104  */
7105   /*else*/ {
7106     __pyx_t_11 = __pyx_v_self->ndim;
7107     __pyx_t_12 = __pyx_t_11;
7108     for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
7109       __pyx_v_i = __pyx_t_13;
7110 
7111       /* "yt/utilities/lib/cykdtree/kdtree.pyx":263
7112  *         else:
7113  *             for i in range(self.ndim):
7114  *                 self._periodic[i] = <cbool>periodic[i]             # <<<<<<<<<<<<<<
7115  *         # Create tree and leaves
7116  *         self._make_tree(&pts[0,0], <cbool>use_sliding_midpoint)
7117  */
7118       __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_periodic, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error)
7119       __Pyx_GOTREF(__pyx_t_3);
7120       __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_15 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 263, __pyx_L1_error)
7121       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7122       (__pyx_v_self->_periodic[__pyx_v_i]) = ((bool)__pyx_t_15);
7123     }
7124   }
7125   __pyx_L11:;
7126 
7127   /* "yt/utilities/lib/cykdtree/kdtree.pyx":265
7128  *                 self._periodic[i] = <cbool>periodic[i]
7129  *         # Create tree and leaves
7130  *         self._make_tree(&pts[0,0], <cbool>use_sliding_midpoint)             # <<<<<<<<<<<<<<
7131  *         self._make_leaves()
7132  *
7133  */
7134   __pyx_t_16 = 0;
7135   __pyx_t_17 = 0;
7136   __pyx_t_9 = -1;
7137   if (__pyx_t_16 < 0) {
7138     __pyx_t_16 += __pyx_pybuffernd_pts.diminfo[0].shape;
7139     if (unlikely(__pyx_t_16 < 0)) __pyx_t_9 = 0;
7140   } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_pts.diminfo[0].shape)) __pyx_t_9 = 0;
7141   if (__pyx_t_17 < 0) {
7142     __pyx_t_17 += __pyx_pybuffernd_pts.diminfo[1].shape;
7143     if (unlikely(__pyx_t_17 < 0)) __pyx_t_9 = 1;
7144   } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_pts.diminfo[1].shape)) __pyx_t_9 = 1;
7145   if (unlikely(__pyx_t_9 != -1)) {
7146     __Pyx_RaiseBufferIndexError(__pyx_t_9);
7147     __PYX_ERR(0, 265, __pyx_L1_error)
7148   }
7149   __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_use_sliding_midpoint); if (unlikely((__pyx_t_15 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 265, __pyx_L1_error)
7150   ((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self->__pyx_vtab)->_make_tree(__pyx_v_self, (&(*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_pts.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_pts.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_pts.diminfo[1].strides))), ((bool)__pyx_t_15));
7151 
7152   /* "yt/utilities/lib/cykdtree/kdtree.pyx":266
7153  *         # Create tree and leaves
7154  *         self._make_tree(&pts[0,0], <cbool>use_sliding_midpoint)
7155  *         self._make_leaves()             # <<<<<<<<<<<<<<
7156  *
7157  *     def __dealloc__(self):
7158  */
7159   ((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self->__pyx_vtab)->_make_leaves(__pyx_v_self);
7160 
7161   /* "yt/utilities/lib/cykdtree/kdtree.pyx":216
7162  *         self._idx = None
7163  *
7164  *     def __init__(self, np.ndarray[double, ndim=2] pts = None,             # <<<<<<<<<<<<<<
7165  *                  left_edge = None,
7166  *                  right_edge = None,
7167  */
7168 
7169   /* function exit code */
7170   __pyx_r = 0;
7171   goto __pyx_L0;
7172   __pyx_L1_error:;
7173   __Pyx_XDECREF(__pyx_t_3);
7174   __Pyx_XDECREF(__pyx_t_4);
7175   __Pyx_XDECREF(__pyx_t_5);
7176   __Pyx_XDECREF(__pyx_t_6);
7177   __Pyx_XDECREF(__pyx_t_7);
7178   __Pyx_XDECREF(__pyx_t_8);
7179   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
7180     __Pyx_PyThreadState_declare
7181     __Pyx_PyThreadState_assign
7182     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
7183     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pts.rcbuffer->pybuffer);
7184   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
7185   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7186   __pyx_r = -1;
7187   goto __pyx_L2;
7188   __pyx_L0:;
7189   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pts.rcbuffer->pybuffer);
7190   __pyx_L2:;
7191   __Pyx_XDECREF(__pyx_v_left_edge);
7192   __Pyx_XDECREF(__pyx_v_right_edge);
7193   __Pyx_XDECREF(__pyx_v_data_version);
7194   __Pyx_RefNannyFinishContext();
7195   return __pyx_r;
7196 }
7197 
7198 /* "yt/utilities/lib/cykdtree/kdtree.pyx":268
7199  *         self._make_leaves()
7200  *
7201  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
7202  *         if self._tree != NULL:
7203  *             del self._tree
7204  */
7205 
7206 /* Python wrapper */
7207 static void __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_5__dealloc__(PyObject * __pyx_v_self)7208 static void __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_5__dealloc__(PyObject *__pyx_v_self) {
7209   __Pyx_RefNannyDeclarations
7210   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
7211   __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4__dealloc__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
7212 
7213   /* function exit code */
7214   __Pyx_RefNannyFinishContext();
7215 }
7216 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4__dealloc__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)7217 static void __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4__dealloc__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
7218   __Pyx_RefNannyDeclarations
7219   int __pyx_t_1;
7220   __Pyx_RefNannySetupContext("__dealloc__", 0);
7221 
7222   /* "yt/utilities/lib/cykdtree/kdtree.pyx":269
7223  *
7224  *     def __dealloc__(self):
7225  *         if self._tree != NULL:             # <<<<<<<<<<<<<<
7226  *             del self._tree
7227  *         if self._left_edge != NULL:
7228  */
7229   __pyx_t_1 = ((__pyx_v_self->_tree != NULL) != 0);
7230   if (__pyx_t_1) {
7231 
7232     /* "yt/utilities/lib/cykdtree/kdtree.pyx":270
7233  *     def __dealloc__(self):
7234  *         if self._tree != NULL:
7235  *             del self._tree             # <<<<<<<<<<<<<<
7236  *         if self._left_edge != NULL:
7237  *             free(self._left_edge)
7238  */
7239     delete __pyx_v_self->_tree;
7240 
7241     /* "yt/utilities/lib/cykdtree/kdtree.pyx":269
7242  *
7243  *     def __dealloc__(self):
7244  *         if self._tree != NULL:             # <<<<<<<<<<<<<<
7245  *             del self._tree
7246  *         if self._left_edge != NULL:
7247  */
7248   }
7249 
7250   /* "yt/utilities/lib/cykdtree/kdtree.pyx":271
7251  *         if self._tree != NULL:
7252  *             del self._tree
7253  *         if self._left_edge != NULL:             # <<<<<<<<<<<<<<
7254  *             free(self._left_edge)
7255  *         if self._right_edge != NULL:
7256  */
7257   __pyx_t_1 = ((__pyx_v_self->_left_edge != NULL) != 0);
7258   if (__pyx_t_1) {
7259 
7260     /* "yt/utilities/lib/cykdtree/kdtree.pyx":272
7261  *             del self._tree
7262  *         if self._left_edge != NULL:
7263  *             free(self._left_edge)             # <<<<<<<<<<<<<<
7264  *         if self._right_edge != NULL:
7265  *             free(self._right_edge)
7266  */
7267     free(__pyx_v_self->_left_edge);
7268 
7269     /* "yt/utilities/lib/cykdtree/kdtree.pyx":271
7270  *         if self._tree != NULL:
7271  *             del self._tree
7272  *         if self._left_edge != NULL:             # <<<<<<<<<<<<<<
7273  *             free(self._left_edge)
7274  *         if self._right_edge != NULL:
7275  */
7276   }
7277 
7278   /* "yt/utilities/lib/cykdtree/kdtree.pyx":273
7279  *         if self._left_edge != NULL:
7280  *             free(self._left_edge)
7281  *         if self._right_edge != NULL:             # <<<<<<<<<<<<<<
7282  *             free(self._right_edge)
7283  *         if self._periodic != NULL:
7284  */
7285   __pyx_t_1 = ((__pyx_v_self->_right_edge != NULL) != 0);
7286   if (__pyx_t_1) {
7287 
7288     /* "yt/utilities/lib/cykdtree/kdtree.pyx":274
7289  *             free(self._left_edge)
7290  *         if self._right_edge != NULL:
7291  *             free(self._right_edge)             # <<<<<<<<<<<<<<
7292  *         if self._periodic != NULL:
7293  *             free(self._periodic)
7294  */
7295     free(__pyx_v_self->_right_edge);
7296 
7297     /* "yt/utilities/lib/cykdtree/kdtree.pyx":273
7298  *         if self._left_edge != NULL:
7299  *             free(self._left_edge)
7300  *         if self._right_edge != NULL:             # <<<<<<<<<<<<<<
7301  *             free(self._right_edge)
7302  *         if self._periodic != NULL:
7303  */
7304   }
7305 
7306   /* "yt/utilities/lib/cykdtree/kdtree.pyx":275
7307  *         if self._right_edge != NULL:
7308  *             free(self._right_edge)
7309  *         if self._periodic != NULL:             # <<<<<<<<<<<<<<
7310  *             free(self._periodic)
7311  *
7312  */
7313   __pyx_t_1 = ((__pyx_v_self->_periodic != NULL) != 0);
7314   if (__pyx_t_1) {
7315 
7316     /* "yt/utilities/lib/cykdtree/kdtree.pyx":276
7317  *             free(self._right_edge)
7318  *         if self._periodic != NULL:
7319  *             free(self._periodic)             # <<<<<<<<<<<<<<
7320  *
7321  *     def assert_equal(self, PyKDTree solf, pybool strict_idx = True):
7322  */
7323     free(__pyx_v_self->_periodic);
7324 
7325     /* "yt/utilities/lib/cykdtree/kdtree.pyx":275
7326  *         if self._right_edge != NULL:
7327  *             free(self._right_edge)
7328  *         if self._periodic != NULL:             # <<<<<<<<<<<<<<
7329  *             free(self._periodic)
7330  *
7331  */
7332   }
7333 
7334   /* "yt/utilities/lib/cykdtree/kdtree.pyx":268
7335  *         self._make_leaves()
7336  *
7337  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
7338  *         if self._tree != NULL:
7339  *             del self._tree
7340  */
7341 
7342   /* function exit code */
7343   __Pyx_RefNannyFinishContext();
7344 }
7345 
7346 /* "yt/utilities/lib/cykdtree/kdtree.pyx":278
7347  *             free(self._periodic)
7348  *
7349  *     def assert_equal(self, PyKDTree solf, pybool strict_idx = True):             # <<<<<<<<<<<<<<
7350  *         r"""Compare this tree to another tree.
7351  *
7352  */
7353 
7354 /* Python wrapper */
7355 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_7assert_equal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7356 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6assert_equal[] = "Compare this tree to another tree.\n\n        Args:\n            solf (PyKDTree): Another KDTree to compare with this one.\n            strict_idx (bool, optional): If True, the index vectors are\n                compared for equality element by element. If False,\n                corresponding leaves must contain the same indices, but they\n                can be in any order. Defaults to True.\n\n        Raises:\n            AssertionError: If there are missmatches between any of the two\n                trees' parameters.\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_7assert_equal(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)7357 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_7assert_equal(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7358   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_solf = 0;
7359   PyBoolObject *__pyx_v_strict_idx = 0;
7360   PyObject *__pyx_r = 0;
7361   __Pyx_RefNannyDeclarations
7362   __Pyx_RefNannySetupContext("assert_equal (wrapper)", 0);
7363   {
7364     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_solf,&__pyx_n_s_strict_idx,0};
7365     PyObject* values[2] = {0,0};
7366     values[1] = (PyObject *)((PyBoolObject *)Py_True);
7367     if (unlikely(__pyx_kwds)) {
7368       Py_ssize_t kw_args;
7369       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7370       switch (pos_args) {
7371         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7372         CYTHON_FALLTHROUGH;
7373         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7374         CYTHON_FALLTHROUGH;
7375         case  0: break;
7376         default: goto __pyx_L5_argtuple_error;
7377       }
7378       kw_args = PyDict_Size(__pyx_kwds);
7379       switch (pos_args) {
7380         case  0:
7381         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_solf)) != 0)) kw_args--;
7382         else goto __pyx_L5_argtuple_error;
7383         CYTHON_FALLTHROUGH;
7384         case  1:
7385         if (kw_args > 0) {
7386           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_strict_idx);
7387           if (value) { values[1] = value; kw_args--; }
7388         }
7389       }
7390       if (unlikely(kw_args > 0)) {
7391         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "assert_equal") < 0)) __PYX_ERR(0, 278, __pyx_L3_error)
7392       }
7393     } else {
7394       switch (PyTuple_GET_SIZE(__pyx_args)) {
7395         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7396         CYTHON_FALLTHROUGH;
7397         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7398         break;
7399         default: goto __pyx_L5_argtuple_error;
7400       }
7401     }
7402     __pyx_v_solf = ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)values[0]);
7403     __pyx_v_strict_idx = ((PyBoolObject *)values[1]);
7404   }
7405   goto __pyx_L4_argument_unpacking_done;
7406   __pyx_L5_argtuple_error:;
7407   __Pyx_RaiseArgtupleInvalid("assert_equal", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 278, __pyx_L3_error)
7408   __pyx_L3_error:;
7409   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.assert_equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
7410   __Pyx_RefNannyFinishContext();
7411   return NULL;
7412   __pyx_L4_argument_unpacking_done:;
7413   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_solf), __pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, 1, "solf", 0))) __PYX_ERR(0, 278, __pyx_L1_error)
7414   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_strict_idx), __pyx_ptype_7cpython_4bool_bool, 1, "strict_idx", 0))) __PYX_ERR(0, 278, __pyx_L1_error)
7415   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6assert_equal(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), __pyx_v_solf, __pyx_v_strict_idx);
7416 
7417   /* function exit code */
7418   goto __pyx_L0;
7419   __pyx_L1_error:;
7420   __pyx_r = NULL;
7421   __pyx_L0:;
7422   __Pyx_RefNannyFinishContext();
7423   return __pyx_r;
7424 }
7425 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6assert_equal(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_solf,PyBoolObject * __pyx_v_strict_idx)7426 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6assert_equal(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_solf, PyBoolObject *__pyx_v_strict_idx) {
7427   uint32_t __pyx_v_i;
7428   PyObject *__pyx_r = NULL;
7429   __Pyx_RefNannyDeclarations
7430   PyObject *__pyx_t_1 = NULL;
7431   PyObject *__pyx_t_2 = NULL;
7432   PyObject *__pyx_t_3 = NULL;
7433   PyObject *__pyx_t_4 = NULL;
7434   PyObject *__pyx_t_5 = NULL;
7435   int __pyx_t_6;
7436   PyObject *__pyx_t_7 = NULL;
7437   int __pyx_t_8;
7438   uint32_t __pyx_t_9;
7439   uint32_t __pyx_t_10;
7440   uint32_t __pyx_t_11;
7441   int __pyx_t_12;
7442   PyObject *__pyx_t_13 = NULL;
7443   __Pyx_RefNannySetupContext("assert_equal", 0);
7444 
7445   /* "yt/utilities/lib/cykdtree/kdtree.pyx":293
7446  *
7447  *         """
7448  *         np.testing.assert_equal(self.npts, solf.npts)             # <<<<<<<<<<<<<<
7449  *         np.testing.assert_equal(self.ndim, solf.ndim)
7450  *         np.testing.assert_equal(self.data_version, solf.data_version)
7451  */
7452   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error)
7453   __Pyx_GOTREF(__pyx_t_2);
7454   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
7455   __Pyx_GOTREF(__pyx_t_3);
7456   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7457   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error)
7458   __Pyx_GOTREF(__pyx_t_2);
7459   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7460   __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->npts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
7461   __Pyx_GOTREF(__pyx_t_3);
7462   __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_solf->npts); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 293, __pyx_L1_error)
7463   __Pyx_GOTREF(__pyx_t_4);
7464   __pyx_t_5 = NULL;
7465   __pyx_t_6 = 0;
7466   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7467     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
7468     if (likely(__pyx_t_5)) {
7469       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7470       __Pyx_INCREF(__pyx_t_5);
7471       __Pyx_INCREF(function);
7472       __Pyx_DECREF_SET(__pyx_t_2, function);
7473       __pyx_t_6 = 1;
7474     }
7475   }
7476   #if CYTHON_FAST_PYCALL
7477   if (PyFunction_Check(__pyx_t_2)) {
7478     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
7479     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error)
7480     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7481     __Pyx_GOTREF(__pyx_t_1);
7482     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7483     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7484   } else
7485   #endif
7486   #if CYTHON_FAST_PYCCALL
7487   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7488     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
7489     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error)
7490     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7491     __Pyx_GOTREF(__pyx_t_1);
7492     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7493     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7494   } else
7495   #endif
7496   {
7497     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 293, __pyx_L1_error)
7498     __Pyx_GOTREF(__pyx_t_7);
7499     if (__pyx_t_5) {
7500       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
7501     }
7502     __Pyx_GIVEREF(__pyx_t_3);
7503     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
7504     __Pyx_GIVEREF(__pyx_t_4);
7505     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
7506     __pyx_t_3 = 0;
7507     __pyx_t_4 = 0;
7508     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error)
7509     __Pyx_GOTREF(__pyx_t_1);
7510     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7511   }
7512   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7513   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7514 
7515   /* "yt/utilities/lib/cykdtree/kdtree.pyx":294
7516  *         """
7517  *         np.testing.assert_equal(self.npts, solf.npts)
7518  *         np.testing.assert_equal(self.ndim, solf.ndim)             # <<<<<<<<<<<<<<
7519  *         np.testing.assert_equal(self.data_version, solf.data_version)
7520  *         np.testing.assert_equal(self.leafsize, solf.leafsize)
7521  */
7522   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L1_error)
7523   __Pyx_GOTREF(__pyx_t_2);
7524   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 294, __pyx_L1_error)
7525   __Pyx_GOTREF(__pyx_t_7);
7526   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7527   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L1_error)
7528   __Pyx_GOTREF(__pyx_t_2);
7529   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7530   __pyx_t_7 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 294, __pyx_L1_error)
7531   __Pyx_GOTREF(__pyx_t_7);
7532   __pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_solf->ndim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L1_error)
7533   __Pyx_GOTREF(__pyx_t_4);
7534   __pyx_t_3 = NULL;
7535   __pyx_t_6 = 0;
7536   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7537     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
7538     if (likely(__pyx_t_3)) {
7539       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7540       __Pyx_INCREF(__pyx_t_3);
7541       __Pyx_INCREF(function);
7542       __Pyx_DECREF_SET(__pyx_t_2, function);
7543       __pyx_t_6 = 1;
7544     }
7545   }
7546   #if CYTHON_FAST_PYCALL
7547   if (PyFunction_Check(__pyx_t_2)) {
7548     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
7549     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error)
7550     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7551     __Pyx_GOTREF(__pyx_t_1);
7552     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7553     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7554   } else
7555   #endif
7556   #if CYTHON_FAST_PYCCALL
7557   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7558     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
7559     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error)
7560     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7561     __Pyx_GOTREF(__pyx_t_1);
7562     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7563     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7564   } else
7565   #endif
7566   {
7567     __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 294, __pyx_L1_error)
7568     __Pyx_GOTREF(__pyx_t_5);
7569     if (__pyx_t_3) {
7570       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7571     }
7572     __Pyx_GIVEREF(__pyx_t_7);
7573     PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
7574     __Pyx_GIVEREF(__pyx_t_4);
7575     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
7576     __pyx_t_7 = 0;
7577     __pyx_t_4 = 0;
7578     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error)
7579     __Pyx_GOTREF(__pyx_t_1);
7580     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7581   }
7582   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7583   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7584 
7585   /* "yt/utilities/lib/cykdtree/kdtree.pyx":295
7586  *         np.testing.assert_equal(self.npts, solf.npts)
7587  *         np.testing.assert_equal(self.ndim, solf.ndim)
7588  *         np.testing.assert_equal(self.data_version, solf.data_version)             # <<<<<<<<<<<<<<
7589  *         np.testing.assert_equal(self.leafsize, solf.leafsize)
7590  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
7591  */
7592   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L1_error)
7593   __Pyx_GOTREF(__pyx_t_2);
7594   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error)
7595   __Pyx_GOTREF(__pyx_t_5);
7596   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7597   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L1_error)
7598   __Pyx_GOTREF(__pyx_t_2);
7599   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7600   __pyx_t_5 = __Pyx_PyInt_From_int64_t(__pyx_v_self->data_version); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error)
7601   __Pyx_GOTREF(__pyx_t_5);
7602   __pyx_t_4 = __Pyx_PyInt_From_int64_t(__pyx_v_solf->data_version); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error)
7603   __Pyx_GOTREF(__pyx_t_4);
7604   __pyx_t_7 = NULL;
7605   __pyx_t_6 = 0;
7606   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7607     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
7608     if (likely(__pyx_t_7)) {
7609       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7610       __Pyx_INCREF(__pyx_t_7);
7611       __Pyx_INCREF(function);
7612       __Pyx_DECREF_SET(__pyx_t_2, function);
7613       __pyx_t_6 = 1;
7614     }
7615   }
7616   #if CYTHON_FAST_PYCALL
7617   if (PyFunction_Check(__pyx_t_2)) {
7618     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
7619     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error)
7620     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
7621     __Pyx_GOTREF(__pyx_t_1);
7622     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7623     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7624   } else
7625   #endif
7626   #if CYTHON_FAST_PYCCALL
7627   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7628     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
7629     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error)
7630     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
7631     __Pyx_GOTREF(__pyx_t_1);
7632     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7633     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7634   } else
7635   #endif
7636   {
7637     __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
7638     __Pyx_GOTREF(__pyx_t_3);
7639     if (__pyx_t_7) {
7640       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
7641     }
7642     __Pyx_GIVEREF(__pyx_t_5);
7643     PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
7644     __Pyx_GIVEREF(__pyx_t_4);
7645     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
7646     __pyx_t_5 = 0;
7647     __pyx_t_4 = 0;
7648     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error)
7649     __Pyx_GOTREF(__pyx_t_1);
7650     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7651   }
7652   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7653   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7654 
7655   /* "yt/utilities/lib/cykdtree/kdtree.pyx":296
7656  *         np.testing.assert_equal(self.ndim, solf.ndim)
7657  *         np.testing.assert_equal(self.data_version, solf.data_version)
7658  *         np.testing.assert_equal(self.leafsize, solf.leafsize)             # <<<<<<<<<<<<<<
7659  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
7660  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
7661  */
7662   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L1_error)
7663   __Pyx_GOTREF(__pyx_t_2);
7664   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L1_error)
7665   __Pyx_GOTREF(__pyx_t_3);
7666   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7667   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L1_error)
7668   __Pyx_GOTREF(__pyx_t_2);
7669   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7670   __pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->leafsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L1_error)
7671   __Pyx_GOTREF(__pyx_t_3);
7672   __pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_solf->leafsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error)
7673   __Pyx_GOTREF(__pyx_t_4);
7674   __pyx_t_5 = NULL;
7675   __pyx_t_6 = 0;
7676   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7677     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
7678     if (likely(__pyx_t_5)) {
7679       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7680       __Pyx_INCREF(__pyx_t_5);
7681       __Pyx_INCREF(function);
7682       __Pyx_DECREF_SET(__pyx_t_2, function);
7683       __pyx_t_6 = 1;
7684     }
7685   }
7686   #if CYTHON_FAST_PYCALL
7687   if (PyFunction_Check(__pyx_t_2)) {
7688     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
7689     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)
7690     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7691     __Pyx_GOTREF(__pyx_t_1);
7692     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7693     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7694   } else
7695   #endif
7696   #if CYTHON_FAST_PYCCALL
7697   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7698     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
7699     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)
7700     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7701     __Pyx_GOTREF(__pyx_t_1);
7702     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7703     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7704   } else
7705   #endif
7706   {
7707     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 296, __pyx_L1_error)
7708     __Pyx_GOTREF(__pyx_t_7);
7709     if (__pyx_t_5) {
7710       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
7711     }
7712     __Pyx_GIVEREF(__pyx_t_3);
7713     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
7714     __Pyx_GIVEREF(__pyx_t_4);
7715     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
7716     __pyx_t_3 = 0;
7717     __pyx_t_4 = 0;
7718     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)
7719     __Pyx_GOTREF(__pyx_t_1);
7720     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7721   }
7722   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7723   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7724 
7725   /* "yt/utilities/lib/cykdtree/kdtree.pyx":297
7726  *         np.testing.assert_equal(self.data_version, solf.data_version)
7727  *         np.testing.assert_equal(self.leafsize, solf.leafsize)
7728  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)             # <<<<<<<<<<<<<<
7729  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
7730  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
7731  */
7732   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error)
7733   __Pyx_GOTREF(__pyx_t_2);
7734   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 297, __pyx_L1_error)
7735   __Pyx_GOTREF(__pyx_t_7);
7736   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7737   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error)
7738   __Pyx_GOTREF(__pyx_t_2);
7739   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7740   __pyx_t_7 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->num_leaves); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 297, __pyx_L1_error)
7741   __Pyx_GOTREF(__pyx_t_7);
7742   __pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_solf->num_leaves); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 297, __pyx_L1_error)
7743   __Pyx_GOTREF(__pyx_t_4);
7744   __pyx_t_3 = NULL;
7745   __pyx_t_6 = 0;
7746   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7747     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
7748     if (likely(__pyx_t_3)) {
7749       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7750       __Pyx_INCREF(__pyx_t_3);
7751       __Pyx_INCREF(function);
7752       __Pyx_DECREF_SET(__pyx_t_2, function);
7753       __pyx_t_6 = 1;
7754     }
7755   }
7756   #if CYTHON_FAST_PYCALL
7757   if (PyFunction_Check(__pyx_t_2)) {
7758     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
7759     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
7760     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7761     __Pyx_GOTREF(__pyx_t_1);
7762     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7763     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7764   } else
7765   #endif
7766   #if CYTHON_FAST_PYCCALL
7767   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7768     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
7769     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
7770     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7771     __Pyx_GOTREF(__pyx_t_1);
7772     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7773     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7774   } else
7775   #endif
7776   {
7777     __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 297, __pyx_L1_error)
7778     __Pyx_GOTREF(__pyx_t_5);
7779     if (__pyx_t_3) {
7780       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7781     }
7782     __Pyx_GIVEREF(__pyx_t_7);
7783     PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
7784     __Pyx_GIVEREF(__pyx_t_4);
7785     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
7786     __pyx_t_7 = 0;
7787     __pyx_t_4 = 0;
7788     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
7789     __Pyx_GOTREF(__pyx_t_1);
7790     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7791   }
7792   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7793   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7794 
7795   /* "yt/utilities/lib/cykdtree/kdtree.pyx":298
7796  *         np.testing.assert_equal(self.leafsize, solf.leafsize)
7797  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
7798  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)             # <<<<<<<<<<<<<<
7799  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
7800  *         np.testing.assert_array_equal(self.periodic, solf.periodic)
7801  */
7802   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error)
7803   __Pyx_GOTREF(__pyx_t_2);
7804   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 298, __pyx_L1_error)
7805   __Pyx_GOTREF(__pyx_t_5);
7806   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7807   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 298, __pyx_L1_error)
7808   __Pyx_GOTREF(__pyx_t_2);
7809   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7810   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_left_edge); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 298, __pyx_L1_error)
7811   __Pyx_GOTREF(__pyx_t_5);
7812   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_left_edge); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
7813   __Pyx_GOTREF(__pyx_t_4);
7814   __pyx_t_7 = NULL;
7815   __pyx_t_6 = 0;
7816   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7817     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
7818     if (likely(__pyx_t_7)) {
7819       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7820       __Pyx_INCREF(__pyx_t_7);
7821       __Pyx_INCREF(function);
7822       __Pyx_DECREF_SET(__pyx_t_2, function);
7823       __pyx_t_6 = 1;
7824     }
7825   }
7826   #if CYTHON_FAST_PYCALL
7827   if (PyFunction_Check(__pyx_t_2)) {
7828     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
7829     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error)
7830     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
7831     __Pyx_GOTREF(__pyx_t_1);
7832     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7833     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7834   } else
7835   #endif
7836   #if CYTHON_FAST_PYCCALL
7837   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7838     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_4};
7839     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error)
7840     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
7841     __Pyx_GOTREF(__pyx_t_1);
7842     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7843     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7844   } else
7845   #endif
7846   {
7847     __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
7848     __Pyx_GOTREF(__pyx_t_3);
7849     if (__pyx_t_7) {
7850       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
7851     }
7852     __Pyx_GIVEREF(__pyx_t_5);
7853     PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
7854     __Pyx_GIVEREF(__pyx_t_4);
7855     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
7856     __pyx_t_5 = 0;
7857     __pyx_t_4 = 0;
7858     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 298, __pyx_L1_error)
7859     __Pyx_GOTREF(__pyx_t_1);
7860     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7861   }
7862   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7863   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7864 
7865   /* "yt/utilities/lib/cykdtree/kdtree.pyx":299
7866  *         np.testing.assert_equal(self.num_leaves, solf.num_leaves)
7867  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
7868  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)             # <<<<<<<<<<<<<<
7869  *         np.testing.assert_array_equal(self.periodic, solf.periodic)
7870  *         # Compare index at the leaf level since we only care that the leaves
7871  */
7872   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error)
7873   __Pyx_GOTREF(__pyx_t_2);
7874   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error)
7875   __Pyx_GOTREF(__pyx_t_3);
7876   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7877   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error)
7878   __Pyx_GOTREF(__pyx_t_2);
7879   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7880   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_right_edge); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error)
7881   __Pyx_GOTREF(__pyx_t_3);
7882   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_right_edge); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error)
7883   __Pyx_GOTREF(__pyx_t_4);
7884   __pyx_t_5 = NULL;
7885   __pyx_t_6 = 0;
7886   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7887     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
7888     if (likely(__pyx_t_5)) {
7889       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7890       __Pyx_INCREF(__pyx_t_5);
7891       __Pyx_INCREF(function);
7892       __Pyx_DECREF_SET(__pyx_t_2, function);
7893       __pyx_t_6 = 1;
7894     }
7895   }
7896   #if CYTHON_FAST_PYCALL
7897   if (PyFunction_Check(__pyx_t_2)) {
7898     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
7899     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
7900     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7901     __Pyx_GOTREF(__pyx_t_1);
7902     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7903     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7904   } else
7905   #endif
7906   #if CYTHON_FAST_PYCCALL
7907   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7908     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
7909     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
7910     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7911     __Pyx_GOTREF(__pyx_t_1);
7912     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7913     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7914   } else
7915   #endif
7916   {
7917     __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 299, __pyx_L1_error)
7918     __Pyx_GOTREF(__pyx_t_7);
7919     if (__pyx_t_5) {
7920       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
7921     }
7922     __Pyx_GIVEREF(__pyx_t_3);
7923     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
7924     __Pyx_GIVEREF(__pyx_t_4);
7925     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
7926     __pyx_t_3 = 0;
7927     __pyx_t_4 = 0;
7928     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
7929     __Pyx_GOTREF(__pyx_t_1);
7930     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7931   }
7932   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7933   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7934 
7935   /* "yt/utilities/lib/cykdtree/kdtree.pyx":300
7936  *         np.testing.assert_array_equal(self.left_edge, solf.left_edge)
7937  *         np.testing.assert_array_equal(self.right_edge, solf.right_edge)
7938  *         np.testing.assert_array_equal(self.periodic, solf.periodic)             # <<<<<<<<<<<<<<
7939  *         # Compare index at the leaf level since we only care that the leaves
7940  *         # contain the same points
7941  */
7942   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
7943   __Pyx_GOTREF(__pyx_t_2);
7944   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 300, __pyx_L1_error)
7945   __Pyx_GOTREF(__pyx_t_7);
7946   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7947   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
7948   __Pyx_GOTREF(__pyx_t_2);
7949   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7950   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_periodic); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 300, __pyx_L1_error)
7951   __Pyx_GOTREF(__pyx_t_7);
7952   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_solf), __pyx_n_s_periodic); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 300, __pyx_L1_error)
7953   __Pyx_GOTREF(__pyx_t_4);
7954   __pyx_t_3 = NULL;
7955   __pyx_t_6 = 0;
7956   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7957     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
7958     if (likely(__pyx_t_3)) {
7959       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7960       __Pyx_INCREF(__pyx_t_3);
7961       __Pyx_INCREF(function);
7962       __Pyx_DECREF_SET(__pyx_t_2, function);
7963       __pyx_t_6 = 1;
7964     }
7965   }
7966   #if CYTHON_FAST_PYCALL
7967   if (PyFunction_Check(__pyx_t_2)) {
7968     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
7969     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error)
7970     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7971     __Pyx_GOTREF(__pyx_t_1);
7972     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7973     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7974   } else
7975   #endif
7976   #if CYTHON_FAST_PYCCALL
7977   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
7978     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
7979     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error)
7980     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7981     __Pyx_GOTREF(__pyx_t_1);
7982     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7983     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7984   } else
7985   #endif
7986   {
7987     __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 300, __pyx_L1_error)
7988     __Pyx_GOTREF(__pyx_t_5);
7989     if (__pyx_t_3) {
7990       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7991     }
7992     __Pyx_GIVEREF(__pyx_t_7);
7993     PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7);
7994     __Pyx_GIVEREF(__pyx_t_4);
7995     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4);
7996     __pyx_t_7 = 0;
7997     __pyx_t_4 = 0;
7998     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error)
7999     __Pyx_GOTREF(__pyx_t_1);
8000     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8001   }
8002   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8003   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8004 
8005   /* "yt/utilities/lib/cykdtree/kdtree.pyx":303
8006  *         # Compare index at the leaf level since we only care that the leaves
8007  *         # contain the same points
8008  *         if strict_idx:             # <<<<<<<<<<<<<<
8009  *             np.testing.assert_array_equal(self._idx, solf._idx)
8010  *         for i in range(self.num_leaves):
8011  */
8012   __pyx_t_8 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strict_idx)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 303, __pyx_L1_error)
8013   if (__pyx_t_8) {
8014 
8015     /* "yt/utilities/lib/cykdtree/kdtree.pyx":304
8016  *         # contain the same points
8017  *         if strict_idx:
8018  *             np.testing.assert_array_equal(self._idx, solf._idx)             # <<<<<<<<<<<<<<
8019  *         for i in range(self.num_leaves):
8020  *             self.leaves[i].assert_equal(solf.leaves[i])
8021  */
8022     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error)
8023     __Pyx_GOTREF(__pyx_t_2);
8024     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_testing); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 304, __pyx_L1_error)
8025     __Pyx_GOTREF(__pyx_t_5);
8026     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8027     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error)
8028     __Pyx_GOTREF(__pyx_t_2);
8029     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8030     __pyx_t_5 = NULL;
8031     __pyx_t_6 = 0;
8032     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
8033       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
8034       if (likely(__pyx_t_5)) {
8035         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
8036         __Pyx_INCREF(__pyx_t_5);
8037         __Pyx_INCREF(function);
8038         __Pyx_DECREF_SET(__pyx_t_2, function);
8039         __pyx_t_6 = 1;
8040       }
8041     }
8042     #if CYTHON_FAST_PYCALL
8043     if (PyFunction_Check(__pyx_t_2)) {
8044       PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_idx, __pyx_v_solf->_idx};
8045       __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
8046       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
8047       __Pyx_GOTREF(__pyx_t_1);
8048     } else
8049     #endif
8050     #if CYTHON_FAST_PYCCALL
8051     if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
8052       PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_idx, __pyx_v_solf->_idx};
8053       __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
8054       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
8055       __Pyx_GOTREF(__pyx_t_1);
8056     } else
8057     #endif
8058     {
8059       __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 304, __pyx_L1_error)
8060       __Pyx_GOTREF(__pyx_t_4);
8061       if (__pyx_t_5) {
8062         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
8063       }
8064       __Pyx_INCREF(__pyx_v_self->_idx);
8065       __Pyx_GIVEREF(__pyx_v_self->_idx);
8066       PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_self->_idx);
8067       __Pyx_INCREF(__pyx_v_solf->_idx);
8068       __Pyx_GIVEREF(__pyx_v_solf->_idx);
8069       PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_solf->_idx);
8070       __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error)
8071       __Pyx_GOTREF(__pyx_t_1);
8072       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8073     }
8074     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8075     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8076 
8077     /* "yt/utilities/lib/cykdtree/kdtree.pyx":303
8078  *         # Compare index at the leaf level since we only care that the leaves
8079  *         # contain the same points
8080  *         if strict_idx:             # <<<<<<<<<<<<<<
8081  *             np.testing.assert_array_equal(self._idx, solf._idx)
8082  *         for i in range(self.num_leaves):
8083  */
8084   }
8085 
8086   /* "yt/utilities/lib/cykdtree/kdtree.pyx":305
8087  *         if strict_idx:
8088  *             np.testing.assert_array_equal(self._idx, solf._idx)
8089  *         for i in range(self.num_leaves):             # <<<<<<<<<<<<<<
8090  *             self.leaves[i].assert_equal(solf.leaves[i])
8091  *             if not strict_idx:
8092  */
8093   __pyx_t_9 = __pyx_v_self->num_leaves;
8094   __pyx_t_10 = __pyx_t_9;
8095   for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
8096     __pyx_v_i = __pyx_t_11;
8097 
8098     /* "yt/utilities/lib/cykdtree/kdtree.pyx":306
8099  *             np.testing.assert_array_equal(self._idx, solf._idx)
8100  *         for i in range(self.num_leaves):
8101  *             self.leaves[i].assert_equal(solf.leaves[i])             # <<<<<<<<<<<<<<
8102  *             if not strict_idx:
8103  *                 np.testing.assert_array_equal(
8104  */
8105     __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->leaves, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error)
8106     __Pyx_GOTREF(__pyx_t_2);
8107     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_assert_equal); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error)
8108     __Pyx_GOTREF(__pyx_t_4);
8109     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8110     __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_solf->leaves, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error)
8111     __Pyx_GOTREF(__pyx_t_2);
8112     __pyx_t_5 = NULL;
8113     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
8114       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
8115       if (likely(__pyx_t_5)) {
8116         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
8117         __Pyx_INCREF(__pyx_t_5);
8118         __Pyx_INCREF(function);
8119         __Pyx_DECREF_SET(__pyx_t_4, function);
8120       }
8121     }
8122     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2);
8123     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
8124     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8125     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 306, __pyx_L1_error)
8126     __Pyx_GOTREF(__pyx_t_1);
8127     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8128     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8129 
8130     /* "yt/utilities/lib/cykdtree/kdtree.pyx":307
8131  *         for i in range(self.num_leaves):
8132  *             self.leaves[i].assert_equal(solf.leaves[i])
8133  *             if not strict_idx:             # <<<<<<<<<<<<<<
8134  *                 np.testing.assert_array_equal(
8135  *                     np.sort(self._idx[self.leaves[i].slice]),
8136  */
8137     __pyx_t_8 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_strict_idx)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 307, __pyx_L1_error)
8138     __pyx_t_12 = ((!__pyx_t_8) != 0);
8139     if (__pyx_t_12) {
8140 
8141       /* "yt/utilities/lib/cykdtree/kdtree.pyx":308
8142  *             self.leaves[i].assert_equal(solf.leaves[i])
8143  *             if not strict_idx:
8144  *                 np.testing.assert_array_equal(             # <<<<<<<<<<<<<<
8145  *                     np.sort(self._idx[self.leaves[i].slice]),
8146  *                     np.sort(solf._idx[solf.leaves[i].slice]))
8147  */
8148       __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
8149       __Pyx_GOTREF(__pyx_t_4);
8150       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_testing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 308, __pyx_L1_error)
8151       __Pyx_GOTREF(__pyx_t_2);
8152       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8153       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_assert_array_equal); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
8154       __Pyx_GOTREF(__pyx_t_4);
8155       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8156 
8157       /* "yt/utilities/lib/cykdtree/kdtree.pyx":309
8158  *             if not strict_idx:
8159  *                 np.testing.assert_array_equal(
8160  *                     np.sort(self._idx[self.leaves[i].slice]),             # <<<<<<<<<<<<<<
8161  *                     np.sort(solf._idx[solf.leaves[i].slice]))
8162  *
8163  */
8164       __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error)
8165       __Pyx_GOTREF(__pyx_t_5);
8166       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sort); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 309, __pyx_L1_error)
8167       __Pyx_GOTREF(__pyx_t_7);
8168       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8169       __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_self->leaves, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error)
8170       __Pyx_GOTREF(__pyx_t_5);
8171       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_slice); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L1_error)
8172       __Pyx_GOTREF(__pyx_t_3);
8173       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8174       __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_self->_idx, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error)
8175       __Pyx_GOTREF(__pyx_t_5);
8176       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8177       __pyx_t_3 = NULL;
8178       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
8179         __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
8180         if (likely(__pyx_t_3)) {
8181           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
8182           __Pyx_INCREF(__pyx_t_3);
8183           __Pyx_INCREF(function);
8184           __Pyx_DECREF_SET(__pyx_t_7, function);
8185         }
8186       }
8187       __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5);
8188       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8189       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8190       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error)
8191       __Pyx_GOTREF(__pyx_t_2);
8192       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8193 
8194       /* "yt/utilities/lib/cykdtree/kdtree.pyx":310
8195  *                 np.testing.assert_array_equal(
8196  *                     np.sort(self._idx[self.leaves[i].slice]),
8197  *                     np.sort(solf._idx[solf.leaves[i].slice]))             # <<<<<<<<<<<<<<
8198  *
8199  *     cdef void _make_tree(self, double *pts, bool use_sliding_midpoint):
8200  */
8201       __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error)
8202       __Pyx_GOTREF(__pyx_t_5);
8203       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sort); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L1_error)
8204       __Pyx_GOTREF(__pyx_t_3);
8205       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8206       __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_solf->leaves, __pyx_v_i, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error)
8207       __Pyx_GOTREF(__pyx_t_5);
8208       __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_slice); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 310, __pyx_L1_error)
8209       __Pyx_GOTREF(__pyx_t_13);
8210       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8211       __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_solf->_idx, __pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L1_error)
8212       __Pyx_GOTREF(__pyx_t_5);
8213       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
8214       __pyx_t_13 = NULL;
8215       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
8216         __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_3);
8217         if (likely(__pyx_t_13)) {
8218           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8219           __Pyx_INCREF(__pyx_t_13);
8220           __Pyx_INCREF(function);
8221           __Pyx_DECREF_SET(__pyx_t_3, function);
8222         }
8223       }
8224       __pyx_t_7 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_13, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5);
8225       __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
8226       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8227       if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 310, __pyx_L1_error)
8228       __Pyx_GOTREF(__pyx_t_7);
8229       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8230       __pyx_t_3 = NULL;
8231       __pyx_t_6 = 0;
8232       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
8233         __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
8234         if (likely(__pyx_t_3)) {
8235           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
8236           __Pyx_INCREF(__pyx_t_3);
8237           __Pyx_INCREF(function);
8238           __Pyx_DECREF_SET(__pyx_t_4, function);
8239           __pyx_t_6 = 1;
8240         }
8241       }
8242       #if CYTHON_FAST_PYCALL
8243       if (PyFunction_Check(__pyx_t_4)) {
8244         PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_t_7};
8245         __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error)
8246         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8247         __Pyx_GOTREF(__pyx_t_1);
8248         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8249         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8250       } else
8251       #endif
8252       #if CYTHON_FAST_PYCCALL
8253       if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
8254         PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_t_7};
8255         __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error)
8256         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8257         __Pyx_GOTREF(__pyx_t_1);
8258         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8259         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8260       } else
8261       #endif
8262       {
8263         __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error)
8264         __Pyx_GOTREF(__pyx_t_5);
8265         if (__pyx_t_3) {
8266           __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
8267         }
8268         __Pyx_GIVEREF(__pyx_t_2);
8269         PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_2);
8270         __Pyx_GIVEREF(__pyx_t_7);
8271         PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_7);
8272         __pyx_t_2 = 0;
8273         __pyx_t_7 = 0;
8274         __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error)
8275         __Pyx_GOTREF(__pyx_t_1);
8276         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8277       }
8278       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8279       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8280 
8281       /* "yt/utilities/lib/cykdtree/kdtree.pyx":307
8282  *         for i in range(self.num_leaves):
8283  *             self.leaves[i].assert_equal(solf.leaves[i])
8284  *             if not strict_idx:             # <<<<<<<<<<<<<<
8285  *                 np.testing.assert_array_equal(
8286  *                     np.sort(self._idx[self.leaves[i].slice]),
8287  */
8288     }
8289   }
8290 
8291   /* "yt/utilities/lib/cykdtree/kdtree.pyx":278
8292  *             free(self._periodic)
8293  *
8294  *     def assert_equal(self, PyKDTree solf, pybool strict_idx = True):             # <<<<<<<<<<<<<<
8295  *         r"""Compare this tree to another tree.
8296  *
8297  */
8298 
8299   /* function exit code */
8300   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8301   goto __pyx_L0;
8302   __pyx_L1_error:;
8303   __Pyx_XDECREF(__pyx_t_1);
8304   __Pyx_XDECREF(__pyx_t_2);
8305   __Pyx_XDECREF(__pyx_t_3);
8306   __Pyx_XDECREF(__pyx_t_4);
8307   __Pyx_XDECREF(__pyx_t_5);
8308   __Pyx_XDECREF(__pyx_t_7);
8309   __Pyx_XDECREF(__pyx_t_13);
8310   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.assert_equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
8311   __pyx_r = NULL;
8312   __pyx_L0:;
8313   __Pyx_XGIVEREF(__pyx_r);
8314   __Pyx_RefNannyFinishContext();
8315   return __pyx_r;
8316 }
8317 
8318 /* "yt/utilities/lib/cykdtree/kdtree.pyx":312
8319  *                     np.sort(solf._idx[solf.leaves[i].slice]))
8320  *
8321  *     cdef void _make_tree(self, double *pts, bool use_sliding_midpoint):             # <<<<<<<<<<<<<<
8322  *         r"""Carry out creation of KDTree at C++ level."""
8323  *         cdef uint64_t[:] idx = np.arange(self.npts).astype('uint64')
8324  */
8325 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_tree(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,double * __pyx_v_pts,bool __pyx_v_use_sliding_midpoint)8326 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_tree(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, double *__pyx_v_pts, bool __pyx_v_use_sliding_midpoint) {
8327   __Pyx_memviewslice __pyx_v_idx = { 0, 0, { 0 }, { 0 }, { 0 } };
8328   __Pyx_RefNannyDeclarations
8329   PyObject *__pyx_t_1 = NULL;
8330   PyObject *__pyx_t_2 = NULL;
8331   PyObject *__pyx_t_3 = NULL;
8332   PyObject *__pyx_t_4 = NULL;
8333   PyObject *__pyx_t_5 = NULL;
8334   __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } };
8335   Py_ssize_t __pyx_t_7;
8336   int __pyx_t_8;
8337   __Pyx_RefNannySetupContext("_make_tree", 0);
8338 
8339   /* "yt/utilities/lib/cykdtree/kdtree.pyx":314
8340  *     cdef void _make_tree(self, double *pts, bool use_sliding_midpoint):
8341  *         r"""Carry out creation of KDTree at C++ level."""
8342  *         cdef uint64_t[:] idx = np.arange(self.npts).astype('uint64')             # <<<<<<<<<<<<<<
8343  *         self._tree = new KDTree(pts, &idx[0], self.npts, self.ndim, self.leafsize,
8344  *                                 self._left_edge, self._right_edge, self._periodic,
8345  */
8346   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error)
8347   __Pyx_GOTREF(__pyx_t_3);
8348   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_arange); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
8349   __Pyx_GOTREF(__pyx_t_4);
8350   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8351   __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->npts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error)
8352   __Pyx_GOTREF(__pyx_t_3);
8353   __pyx_t_5 = NULL;
8354   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
8355     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
8356     if (likely(__pyx_t_5)) {
8357       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
8358       __Pyx_INCREF(__pyx_t_5);
8359       __Pyx_INCREF(function);
8360       __Pyx_DECREF_SET(__pyx_t_4, function);
8361     }
8362   }
8363   __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
8364   __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
8365   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8366   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error)
8367   __Pyx_GOTREF(__pyx_t_2);
8368   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8369   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
8370   __Pyx_GOTREF(__pyx_t_4);
8371   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8372   __pyx_t_2 = NULL;
8373   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
8374     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
8375     if (likely(__pyx_t_2)) {
8376       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
8377       __Pyx_INCREF(__pyx_t_2);
8378       __Pyx_INCREF(function);
8379       __Pyx_DECREF_SET(__pyx_t_4, function);
8380     }
8381   }
8382   __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_n_s_uint64) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_n_s_uint64);
8383   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
8384   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 314, __pyx_L1_error)
8385   __Pyx_GOTREF(__pyx_t_1);
8386   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8387   __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_uint64_t(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 314, __pyx_L1_error)
8388   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8389   __pyx_v_idx = __pyx_t_6;
8390   __pyx_t_6.memview = NULL;
8391   __pyx_t_6.data = NULL;
8392 
8393   /* "yt/utilities/lib/cykdtree/kdtree.pyx":315
8394  *         r"""Carry out creation of KDTree at C++ level."""
8395  *         cdef uint64_t[:] idx = np.arange(self.npts).astype('uint64')
8396  *         self._tree = new KDTree(pts, &idx[0], self.npts, self.ndim, self.leafsize,             # <<<<<<<<<<<<<<
8397  *                                 self._left_edge, self._right_edge, self._periodic,
8398  *                                 self.data_version, use_sliding_midpoint)
8399  */
8400   __pyx_t_7 = 0;
8401   __pyx_t_8 = -1;
8402   if (__pyx_t_7 < 0) {
8403     __pyx_t_7 += __pyx_v_idx.shape[0];
8404     if (unlikely(__pyx_t_7 < 0)) __pyx_t_8 = 0;
8405   } else if (unlikely(__pyx_t_7 >= __pyx_v_idx.shape[0])) __pyx_t_8 = 0;
8406   if (unlikely(__pyx_t_8 != -1)) {
8407     __Pyx_RaiseBufferIndexError(__pyx_t_8);
8408     __PYX_ERR(0, 315, __pyx_L1_error)
8409   }
8410 
8411   /* "yt/utilities/lib/cykdtree/kdtree.pyx":317
8412  *         self._tree = new KDTree(pts, &idx[0], self.npts, self.ndim, self.leafsize,
8413  *                                 self._left_edge, self._right_edge, self._periodic,
8414  *                                 self.data_version, use_sliding_midpoint)             # <<<<<<<<<<<<<<
8415  *         self._idx = idx
8416  *
8417  */
8418   __pyx_v_self->_tree = new KDTree(__pyx_v_pts, (&(*((uint64_t *) ( /* dim=0 */ (__pyx_v_idx.data + __pyx_t_7 * __pyx_v_idx.strides[0]) )))), __pyx_v_self->npts, __pyx_v_self->ndim, __pyx_v_self->leafsize, __pyx_v_self->_left_edge, __pyx_v_self->_right_edge, __pyx_v_self->_periodic, __pyx_v_self->data_version, __pyx_v_use_sliding_midpoint);
8419 
8420   /* "yt/utilities/lib/cykdtree/kdtree.pyx":318
8421  *                                 self._left_edge, self._right_edge, self._periodic,
8422  *                                 self.data_version, use_sliding_midpoint)
8423  *         self._idx = idx             # <<<<<<<<<<<<<<
8424  *
8425  *     cdef void _make_leaves(self):
8426  */
8427   __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_idx, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn_uint64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn_uint64_t, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error)
8428   __Pyx_GOTREF(__pyx_t_1);
8429   __Pyx_GIVEREF(__pyx_t_1);
8430   __Pyx_GOTREF(__pyx_v_self->_idx);
8431   __Pyx_DECREF(__pyx_v_self->_idx);
8432   __pyx_v_self->_idx = __pyx_t_1;
8433   __pyx_t_1 = 0;
8434 
8435   /* "yt/utilities/lib/cykdtree/kdtree.pyx":312
8436  *                     np.sort(solf._idx[solf.leaves[i].slice]))
8437  *
8438  *     cdef void _make_tree(self, double *pts, bool use_sliding_midpoint):             # <<<<<<<<<<<<<<
8439  *         r"""Carry out creation of KDTree at C++ level."""
8440  *         cdef uint64_t[:] idx = np.arange(self.npts).astype('uint64')
8441  */
8442 
8443   /* function exit code */
8444   goto __pyx_L0;
8445   __pyx_L1_error:;
8446   __Pyx_XDECREF(__pyx_t_1);
8447   __Pyx_XDECREF(__pyx_t_2);
8448   __Pyx_XDECREF(__pyx_t_3);
8449   __Pyx_XDECREF(__pyx_t_4);
8450   __Pyx_XDECREF(__pyx_t_5);
8451   __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
8452   __Pyx_WriteUnraisable("yt.utilities.lib.cykdtree.kdtree.PyKDTree._make_tree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
8453   __pyx_L0:;
8454   __PYX_XDEC_MEMVIEW(&__pyx_v_idx, 1);
8455   __Pyx_RefNannyFinishContext();
8456 }
8457 
8458 /* "yt/utilities/lib/cykdtree/kdtree.pyx":320
8459  *         self._idx = idx
8460  *
8461  *     cdef void _make_leaves(self):             # <<<<<<<<<<<<<<
8462  *         r"""Create a list of Python leaf objects from C++ leaves."""
8463  *         self.num_leaves = <uint32_t>self._tree.leaves.size()
8464  */
8465 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_leaves(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)8466 static void __pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_leaves(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
8467   Node *__pyx_v_leafnode;
8468   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_leafnode_py = 0;
8469   CYTHON_UNUSED PyObject *__pyx_v_leaf_neighbors = 0;
8470   uint32_t __pyx_v_k;
8471   CYTHON_UNUSED uint32_t __pyx_v__;
8472   __Pyx_RefNannyDeclarations
8473   PyObject *__pyx_t_1 = NULL;
8474   uint32_t __pyx_t_2;
8475   uint32_t __pyx_t_3;
8476   uint32_t __pyx_t_4;
8477   __Pyx_RefNannySetupContext("_make_leaves", 0);
8478 
8479   /* "yt/utilities/lib/cykdtree/kdtree.pyx":322
8480  *     cdef void _make_leaves(self):
8481  *         r"""Create a list of Python leaf objects from C++ leaves."""
8482  *         self.num_leaves = <uint32_t>self._tree.leaves.size()             # <<<<<<<<<<<<<<
8483  *         self.leaves = [None for _ in xrange(self.num_leaves)]
8484  *         cdef Node* leafnode
8485  */
8486   __pyx_v_self->num_leaves = ((uint32_t)__pyx_v_self->_tree->leaves.size());
8487 
8488   /* "yt/utilities/lib/cykdtree/kdtree.pyx":323
8489  *         r"""Create a list of Python leaf objects from C++ leaves."""
8490  *         self.num_leaves = <uint32_t>self._tree.leaves.size()
8491  *         self.leaves = [None for _ in xrange(self.num_leaves)]             # <<<<<<<<<<<<<<
8492  *         cdef Node* leafnode
8493  *         cdef PyNode leafnode_py
8494  */
8495   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
8496   __Pyx_GOTREF(__pyx_t_1);
8497   __pyx_t_2 = __pyx_v_self->num_leaves;
8498   __pyx_t_3 = __pyx_t_2;
8499   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
8500     __pyx_v__ = __pyx_t_4;
8501     if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)Py_None))) __PYX_ERR(0, 323, __pyx_L1_error)
8502   }
8503   __Pyx_GIVEREF(__pyx_t_1);
8504   __Pyx_GOTREF(__pyx_v_self->leaves);
8505   __Pyx_DECREF(__pyx_v_self->leaves);
8506   __pyx_v_self->leaves = __pyx_t_1;
8507   __pyx_t_1 = 0;
8508 
8509   /* "yt/utilities/lib/cykdtree/kdtree.pyx":326
8510  *         cdef Node* leafnode
8511  *         cdef PyNode leafnode_py
8512  *         cdef object leaf_neighbors = None             # <<<<<<<<<<<<<<
8513  *         for k in xrange(self.num_leaves):
8514  *             leafnode = self._tree.leaves[k]
8515  */
8516   __Pyx_INCREF(Py_None);
8517   __pyx_v_leaf_neighbors = Py_None;
8518 
8519   /* "yt/utilities/lib/cykdtree/kdtree.pyx":327
8520  *         cdef PyNode leafnode_py
8521  *         cdef object leaf_neighbors = None
8522  *         for k in xrange(self.num_leaves):             # <<<<<<<<<<<<<<
8523  *             leafnode = self._tree.leaves[k]
8524  *             leafnode_py = PyNode()
8525  */
8526   __pyx_t_2 = __pyx_v_self->num_leaves;
8527   __pyx_t_3 = __pyx_t_2;
8528   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
8529     __pyx_v_k = __pyx_t_4;
8530 
8531     /* "yt/utilities/lib/cykdtree/kdtree.pyx":328
8532  *         cdef object leaf_neighbors = None
8533  *         for k in xrange(self.num_leaves):
8534  *             leafnode = self._tree.leaves[k]             # <<<<<<<<<<<<<<
8535  *             leafnode_py = PyNode()
8536  *             leafnode_py._init_node(leafnode, self.num_leaves,
8537  */
8538     __pyx_v_leafnode = (__pyx_v_self->_tree->leaves[__pyx_v_k]);
8539 
8540     /* "yt/utilities/lib/cykdtree/kdtree.pyx":329
8541  *         for k in xrange(self.num_leaves):
8542  *             leafnode = self._tree.leaves[k]
8543  *             leafnode_py = PyNode()             # <<<<<<<<<<<<<<
8544  *             leafnode_py._init_node(leafnode, self.num_leaves,
8545  *                                    self._tree.domain_width)
8546  */
8547     __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
8548     __Pyx_GOTREF(__pyx_t_1);
8549     __Pyx_XDECREF_SET(__pyx_v_leafnode_py, ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_t_1));
8550     __pyx_t_1 = 0;
8551 
8552     /* "yt/utilities/lib/cykdtree/kdtree.pyx":330
8553  *             leafnode = self._tree.leaves[k]
8554  *             leafnode_py = PyNode()
8555  *             leafnode_py._init_node(leafnode, self.num_leaves,             # <<<<<<<<<<<<<<
8556  *                                    self._tree.domain_width)
8557  *             self.leaves[leafnode.leafid] = leafnode_py
8558  */
8559     ((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_v_leafnode_py->__pyx_vtab)->_init_node(__pyx_v_leafnode_py, __pyx_v_leafnode, __pyx_v_self->num_leaves, __pyx_v_self->_tree->domain_width);
8560 
8561     /* "yt/utilities/lib/cykdtree/kdtree.pyx":332
8562  *             leafnode_py._init_node(leafnode, self.num_leaves,
8563  *                                    self._tree.domain_width)
8564  *             self.leaves[leafnode.leafid] = leafnode_py             # <<<<<<<<<<<<<<
8565  *
8566  *     @property
8567  */
8568     if (unlikely(__Pyx_SetItemInt(__pyx_v_self->leaves, __pyx_v_leafnode->leafid, ((PyObject *)__pyx_v_leafnode_py), uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1) < 0)) __PYX_ERR(0, 332, __pyx_L1_error)
8569   }
8570 
8571   /* "yt/utilities/lib/cykdtree/kdtree.pyx":320
8572  *         self._idx = idx
8573  *
8574  *     cdef void _make_leaves(self):             # <<<<<<<<<<<<<<
8575  *         r"""Create a list of Python leaf objects from C++ leaves."""
8576  *         self.num_leaves = <uint32_t>self._tree.leaves.size()
8577  */
8578 
8579   /* function exit code */
8580   goto __pyx_L0;
8581   __pyx_L1_error:;
8582   __Pyx_XDECREF(__pyx_t_1);
8583   __Pyx_WriteUnraisable("yt.utilities.lib.cykdtree.kdtree.PyKDTree._make_leaves", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
8584   __pyx_L0:;
8585   __Pyx_XDECREF((PyObject *)__pyx_v_leafnode_py);
8586   __Pyx_XDECREF(__pyx_v_leaf_neighbors);
8587   __Pyx_RefNannyFinishContext();
8588 }
8589 
8590 /* "yt/utilities/lib/cykdtree/kdtree.pyx":335
8591  *
8592  *     @property
8593  *     def left_edge(self):             # <<<<<<<<<<<<<<
8594  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_left_edge
8595  *         return np.asarray(view)
8596  */
8597 
8598 /* Python wrapper */
8599 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge_1__get__(PyObject * __pyx_v_self)8600 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge_1__get__(PyObject *__pyx_v_self) {
8601   PyObject *__pyx_r = 0;
8602   __Pyx_RefNannyDeclarations
8603   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
8604   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
8605 
8606   /* function exit code */
8607   __Pyx_RefNannyFinishContext();
8608   return __pyx_r;
8609 }
8610 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)8611 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
8612   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
8613   PyObject *__pyx_r = NULL;
8614   __Pyx_RefNannyDeclarations
8615   double *__pyx_t_1;
8616   struct __pyx_array_obj *__pyx_t_2 = NULL;
8617   PyObject *__pyx_t_3 = NULL;
8618   PyObject *__pyx_t_4 = NULL;
8619   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
8620   PyObject *__pyx_t_6 = NULL;
8621   PyObject *__pyx_t_7 = NULL;
8622   __Pyx_RefNannySetupContext("__get__", 0);
8623 
8624   /* "yt/utilities/lib/cykdtree/kdtree.pyx":336
8625  *     @property
8626  *     def left_edge(self):
8627  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_left_edge             # <<<<<<<<<<<<<<
8628  *         return np.asarray(view)
8629  *     @property
8630  */
8631   __pyx_t_1 = __pyx_v_self->_tree->domain_left_edge;
8632   if (!__pyx_t_1) {
8633     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
8634     __PYX_ERR(0, 336, __pyx_L1_error)
8635   }
8636   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t);
8637   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
8638   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 336, __pyx_L1_error)
8639   __Pyx_GOTREF(__pyx_t_4);
8640   __Pyx_GOTREF(__pyx_t_3);
8641   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(__pyx_t_5numpy_float64_t), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
8642   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error)
8643   __Pyx_GOTREF(__pyx_t_2);
8644   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8645   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8646   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 336, __pyx_L1_error)
8647   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
8648   __pyx_v_view = __pyx_t_5;
8649   __pyx_t_5.memview = NULL;
8650   __pyx_t_5.data = NULL;
8651 
8652   /* "yt/utilities/lib/cykdtree/kdtree.pyx":337
8653  *     def left_edge(self):
8654  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_left_edge
8655  *         return np.asarray(view)             # <<<<<<<<<<<<<<
8656  *     @property
8657  *     def right_edge(self):
8658  */
8659   __Pyx_XDECREF(__pyx_r);
8660   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error)
8661   __Pyx_GOTREF(__pyx_t_3);
8662   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 337, __pyx_L1_error)
8663   __Pyx_GOTREF(__pyx_t_6);
8664   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8665   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error)
8666   __Pyx_GOTREF(__pyx_t_3);
8667   __pyx_t_7 = NULL;
8668   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
8669     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
8670     if (likely(__pyx_t_7)) {
8671       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
8672       __Pyx_INCREF(__pyx_t_7);
8673       __Pyx_INCREF(function);
8674       __Pyx_DECREF_SET(__pyx_t_6, function);
8675     }
8676   }
8677   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
8678   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8679   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8680   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error)
8681   __Pyx_GOTREF(__pyx_t_4);
8682   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8683   __pyx_r = __pyx_t_4;
8684   __pyx_t_4 = 0;
8685   goto __pyx_L0;
8686 
8687   /* "yt/utilities/lib/cykdtree/kdtree.pyx":335
8688  *
8689  *     @property
8690  *     def left_edge(self):             # <<<<<<<<<<<<<<
8691  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_left_edge
8692  *         return np.asarray(view)
8693  */
8694 
8695   /* function exit code */
8696   __pyx_L1_error:;
8697   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
8698   __Pyx_XDECREF(__pyx_t_3);
8699   __Pyx_XDECREF(__pyx_t_4);
8700   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
8701   __Pyx_XDECREF(__pyx_t_6);
8702   __Pyx_XDECREF(__pyx_t_7);
8703   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.left_edge.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8704   __pyx_r = NULL;
8705   __pyx_L0:;
8706   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
8707   __Pyx_XGIVEREF(__pyx_r);
8708   __Pyx_RefNannyFinishContext();
8709   return __pyx_r;
8710 }
8711 
8712 /* "yt/utilities/lib/cykdtree/kdtree.pyx":339
8713  *         return np.asarray(view)
8714  *     @property
8715  *     def right_edge(self):             # <<<<<<<<<<<<<<
8716  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_right_edge
8717  *         return np.asarray(view)
8718  */
8719 
8720 /* Python wrapper */
8721 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge_1__get__(PyObject * __pyx_v_self)8722 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge_1__get__(PyObject *__pyx_v_self) {
8723   PyObject *__pyx_r = 0;
8724   __Pyx_RefNannyDeclarations
8725   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
8726   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
8727 
8728   /* function exit code */
8729   __Pyx_RefNannyFinishContext();
8730   return __pyx_r;
8731 }
8732 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)8733 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
8734   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
8735   PyObject *__pyx_r = NULL;
8736   __Pyx_RefNannyDeclarations
8737   double *__pyx_t_1;
8738   struct __pyx_array_obj *__pyx_t_2 = NULL;
8739   PyObject *__pyx_t_3 = NULL;
8740   PyObject *__pyx_t_4 = NULL;
8741   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
8742   PyObject *__pyx_t_6 = NULL;
8743   PyObject *__pyx_t_7 = NULL;
8744   __Pyx_RefNannySetupContext("__get__", 0);
8745 
8746   /* "yt/utilities/lib/cykdtree/kdtree.pyx":340
8747  *     @property
8748  *     def right_edge(self):
8749  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_right_edge             # <<<<<<<<<<<<<<
8750  *         return np.asarray(view)
8751  *     @property
8752  */
8753   __pyx_t_1 = __pyx_v_self->_tree->domain_right_edge;
8754   if (!__pyx_t_1) {
8755     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
8756     __PYX_ERR(0, 340, __pyx_L1_error)
8757   }
8758   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t);
8759   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
8760   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 340, __pyx_L1_error)
8761   __Pyx_GOTREF(__pyx_t_4);
8762   __Pyx_GOTREF(__pyx_t_3);
8763   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(__pyx_t_5numpy_float64_t), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
8764   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error)
8765   __Pyx_GOTREF(__pyx_t_2);
8766   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8767   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8768   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 340, __pyx_L1_error)
8769   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
8770   __pyx_v_view = __pyx_t_5;
8771   __pyx_t_5.memview = NULL;
8772   __pyx_t_5.data = NULL;
8773 
8774   /* "yt/utilities/lib/cykdtree/kdtree.pyx":341
8775  *     def right_edge(self):
8776  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_right_edge
8777  *         return np.asarray(view)             # <<<<<<<<<<<<<<
8778  *     @property
8779  *     def domain_width(self):
8780  */
8781   __Pyx_XDECREF(__pyx_r);
8782   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error)
8783   __Pyx_GOTREF(__pyx_t_3);
8784   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error)
8785   __Pyx_GOTREF(__pyx_t_6);
8786   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8787   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error)
8788   __Pyx_GOTREF(__pyx_t_3);
8789   __pyx_t_7 = NULL;
8790   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
8791     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
8792     if (likely(__pyx_t_7)) {
8793       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
8794       __Pyx_INCREF(__pyx_t_7);
8795       __Pyx_INCREF(function);
8796       __Pyx_DECREF_SET(__pyx_t_6, function);
8797     }
8798   }
8799   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
8800   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8801   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8802   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L1_error)
8803   __Pyx_GOTREF(__pyx_t_4);
8804   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8805   __pyx_r = __pyx_t_4;
8806   __pyx_t_4 = 0;
8807   goto __pyx_L0;
8808 
8809   /* "yt/utilities/lib/cykdtree/kdtree.pyx":339
8810  *         return np.asarray(view)
8811  *     @property
8812  *     def right_edge(self):             # <<<<<<<<<<<<<<
8813  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_right_edge
8814  *         return np.asarray(view)
8815  */
8816 
8817   /* function exit code */
8818   __pyx_L1_error:;
8819   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
8820   __Pyx_XDECREF(__pyx_t_3);
8821   __Pyx_XDECREF(__pyx_t_4);
8822   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
8823   __Pyx_XDECREF(__pyx_t_6);
8824   __Pyx_XDECREF(__pyx_t_7);
8825   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.right_edge.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8826   __pyx_r = NULL;
8827   __pyx_L0:;
8828   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
8829   __Pyx_XGIVEREF(__pyx_r);
8830   __Pyx_RefNannyFinishContext();
8831   return __pyx_r;
8832 }
8833 
8834 /* "yt/utilities/lib/cykdtree/kdtree.pyx":343
8835  *         return np.asarray(view)
8836  *     @property
8837  *     def domain_width(self):             # <<<<<<<<<<<<<<
8838  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_width
8839  *         return np.asarray(view)
8840  */
8841 
8842 /* Python wrapper */
8843 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width_1__get__(PyObject * __pyx_v_self)8844 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width_1__get__(PyObject *__pyx_v_self) {
8845   PyObject *__pyx_r = 0;
8846   __Pyx_RefNannyDeclarations
8847   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
8848   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
8849 
8850   /* function exit code */
8851   __Pyx_RefNannyFinishContext();
8852   return __pyx_r;
8853 }
8854 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)8855 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
8856   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
8857   PyObject *__pyx_r = NULL;
8858   __Pyx_RefNannyDeclarations
8859   double *__pyx_t_1;
8860   struct __pyx_array_obj *__pyx_t_2 = NULL;
8861   PyObject *__pyx_t_3 = NULL;
8862   PyObject *__pyx_t_4 = NULL;
8863   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
8864   PyObject *__pyx_t_6 = NULL;
8865   PyObject *__pyx_t_7 = NULL;
8866   __Pyx_RefNannySetupContext("__get__", 0);
8867 
8868   /* "yt/utilities/lib/cykdtree/kdtree.pyx":344
8869  *     @property
8870  *     def domain_width(self):
8871  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_width             # <<<<<<<<<<<<<<
8872  *         return np.asarray(view)
8873  *     @property
8874  */
8875   __pyx_t_1 = __pyx_v_self->_tree->domain_width;
8876   if (!__pyx_t_1) {
8877     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
8878     __PYX_ERR(0, 344, __pyx_L1_error)
8879   }
8880   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t);
8881   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
8882   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 344, __pyx_L1_error)
8883   __Pyx_GOTREF(__pyx_t_4);
8884   __Pyx_GOTREF(__pyx_t_3);
8885   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(__pyx_t_5numpy_float64_t), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
8886   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error)
8887   __Pyx_GOTREF(__pyx_t_2);
8888   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8889   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
8890   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 344, __pyx_L1_error)
8891   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
8892   __pyx_v_view = __pyx_t_5;
8893   __pyx_t_5.memview = NULL;
8894   __pyx_t_5.data = NULL;
8895 
8896   /* "yt/utilities/lib/cykdtree/kdtree.pyx":345
8897  *     def domain_width(self):
8898  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_width
8899  *         return np.asarray(view)             # <<<<<<<<<<<<<<
8900  *     @property
8901  *     def periodic(self):
8902  */
8903   __Pyx_XDECREF(__pyx_r);
8904   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error)
8905   __Pyx_GOTREF(__pyx_t_3);
8906   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L1_error)
8907   __Pyx_GOTREF(__pyx_t_6);
8908   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8909   __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_view, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 345, __pyx_L1_error)
8910   __Pyx_GOTREF(__pyx_t_3);
8911   __pyx_t_7 = NULL;
8912   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
8913     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
8914     if (likely(__pyx_t_7)) {
8915       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
8916       __Pyx_INCREF(__pyx_t_7);
8917       __Pyx_INCREF(function);
8918       __Pyx_DECREF_SET(__pyx_t_6, function);
8919     }
8920   }
8921   __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
8922   __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8923   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8924   if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 345, __pyx_L1_error)
8925   __Pyx_GOTREF(__pyx_t_4);
8926   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8927   __pyx_r = __pyx_t_4;
8928   __pyx_t_4 = 0;
8929   goto __pyx_L0;
8930 
8931   /* "yt/utilities/lib/cykdtree/kdtree.pyx":343
8932  *         return np.asarray(view)
8933  *     @property
8934  *     def domain_width(self):             # <<<<<<<<<<<<<<
8935  *         cdef np.float64_t[:] view = <np.float64_t[:self.ndim]> self._tree.domain_width
8936  *         return np.asarray(view)
8937  */
8938 
8939   /* function exit code */
8940   __pyx_L1_error:;
8941   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
8942   __Pyx_XDECREF(__pyx_t_3);
8943   __Pyx_XDECREF(__pyx_t_4);
8944   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
8945   __Pyx_XDECREF(__pyx_t_6);
8946   __Pyx_XDECREF(__pyx_t_7);
8947   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.domain_width.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8948   __pyx_r = NULL;
8949   __pyx_L0:;
8950   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
8951   __Pyx_XGIVEREF(__pyx_r);
8952   __Pyx_RefNannyFinishContext();
8953   return __pyx_r;
8954 }
8955 
8956 /* "yt/utilities/lib/cykdtree/kdtree.pyx":347
8957  *         return np.asarray(view)
8958  *     @property
8959  *     def periodic(self):             # <<<<<<<<<<<<<<
8960  *         cdef cbool[:] view = <cbool[:self.ndim]> self._tree.periodic
8961  *         # return np.asarray(view)
8962  */
8963 
8964 /* Python wrapper */
8965 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic_1__get__(PyObject * __pyx_v_self)8966 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic_1__get__(PyObject *__pyx_v_self) {
8967   PyObject *__pyx_r = 0;
8968   __Pyx_RefNannyDeclarations
8969   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
8970   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
8971 
8972   /* function exit code */
8973   __Pyx_RefNannyFinishContext();
8974   return __pyx_r;
8975 }
8976 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)8977 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
8978   __Pyx_memviewslice __pyx_v_view = { 0, 0, { 0 }, { 0 }, { 0 } };
8979   PyObject *__pyx_v_out = 0;
8980   __pyx_t_5numpy_uint32_t __pyx_v_i;
8981   PyObject *__pyx_r = NULL;
8982   __Pyx_RefNannyDeclarations
8983   bool *__pyx_t_1;
8984   struct __pyx_array_obj *__pyx_t_2 = NULL;
8985   PyObject *__pyx_t_3 = NULL;
8986   PyObject *__pyx_t_4 = NULL;
8987   __Pyx_memviewslice __pyx_t_5 = { 0, 0, { 0 }, { 0 }, { 0 } };
8988   PyObject *__pyx_t_6 = NULL;
8989   PyObject *__pyx_t_7 = NULL;
8990   int __pyx_t_8;
8991   PyObject *__pyx_t_9 = NULL;
8992   uint32_t __pyx_t_10;
8993   uint32_t __pyx_t_11;
8994   __pyx_t_5numpy_uint32_t __pyx_t_12;
8995   size_t __pyx_t_13;
8996   __Pyx_RefNannySetupContext("__get__", 0);
8997 
8998   /* "yt/utilities/lib/cykdtree/kdtree.pyx":348
8999  *     @property
9000  *     def periodic(self):
9001  *         cdef cbool[:] view = <cbool[:self.ndim]> self._tree.periodic             # <<<<<<<<<<<<<<
9002  *         # return np.asarray(view)
9003  *         cdef object out = np.empty(self.ndim, 'bool')
9004  */
9005   __pyx_t_1 = __pyx_v_self->_tree->periodic;
9006   if (!__pyx_t_1) {
9007     PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
9008     __PYX_ERR(0, 348, __pyx_L1_error)
9009   }
9010   __pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_nn_bool);
9011   __pyx_t_3 = Py_BuildValue((char*) "("  __PYX_BUILD_PY_SSIZE_T  ")", ((Py_ssize_t)__pyx_v_self->ndim));
9012   if (unlikely(!__pyx_t_4 || !__pyx_t_3 || !PyBytes_AsString(__pyx_t_4))) __PYX_ERR(0, 348, __pyx_L1_error)
9013   __Pyx_GOTREF(__pyx_t_4);
9014   __Pyx_GOTREF(__pyx_t_3);
9015   __pyx_t_2 = __pyx_array_new(__pyx_t_3, sizeof(bool), PyBytes_AS_STRING(__pyx_t_4), (char *) "c", (char *) __pyx_t_1);
9016   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 348, __pyx_L1_error)
9017   __Pyx_GOTREF(__pyx_t_2);
9018   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9019   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9020   __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn_bool(((PyObject *)__pyx_t_2), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 348, __pyx_L1_error)
9021   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
9022   __pyx_v_view = __pyx_t_5;
9023   __pyx_t_5.memview = NULL;
9024   __pyx_t_5.data = NULL;
9025 
9026   /* "yt/utilities/lib/cykdtree/kdtree.pyx":350
9027  *         cdef cbool[:] view = <cbool[:self.ndim]> self._tree.periodic
9028  *         # return np.asarray(view)
9029  *         cdef object out = np.empty(self.ndim, 'bool')             # <<<<<<<<<<<<<<
9030  *         cdef np.uint32_t i
9031  *         for i in range(self.ndim):
9032  */
9033   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L1_error)
9034   __Pyx_GOTREF(__pyx_t_3);
9035   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 350, __pyx_L1_error)
9036   __Pyx_GOTREF(__pyx_t_6);
9037   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9038   __pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L1_error)
9039   __Pyx_GOTREF(__pyx_t_3);
9040   __pyx_t_7 = NULL;
9041   __pyx_t_8 = 0;
9042   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
9043     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
9044     if (likely(__pyx_t_7)) {
9045       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
9046       __Pyx_INCREF(__pyx_t_7);
9047       __Pyx_INCREF(function);
9048       __Pyx_DECREF_SET(__pyx_t_6, function);
9049       __pyx_t_8 = 1;
9050     }
9051   }
9052   #if CYTHON_FAST_PYCALL
9053   if (PyFunction_Check(__pyx_t_6)) {
9054     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_n_s_bool};
9055     __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 350, __pyx_L1_error)
9056     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9057     __Pyx_GOTREF(__pyx_t_4);
9058     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9059   } else
9060   #endif
9061   #if CYTHON_FAST_PYCCALL
9062   if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
9063     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_n_s_bool};
9064     __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 350, __pyx_L1_error)
9065     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9066     __Pyx_GOTREF(__pyx_t_4);
9067     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9068   } else
9069   #endif
9070   {
9071     __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 350, __pyx_L1_error)
9072     __Pyx_GOTREF(__pyx_t_9);
9073     if (__pyx_t_7) {
9074       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
9075     }
9076     __Pyx_GIVEREF(__pyx_t_3);
9077     PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3);
9078     __Pyx_INCREF(__pyx_n_s_bool);
9079     __Pyx_GIVEREF(__pyx_n_s_bool);
9080     PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_n_s_bool);
9081     __pyx_t_3 = 0;
9082     __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 350, __pyx_L1_error)
9083     __Pyx_GOTREF(__pyx_t_4);
9084     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9085   }
9086   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
9087   __pyx_v_out = __pyx_t_4;
9088   __pyx_t_4 = 0;
9089 
9090   /* "yt/utilities/lib/cykdtree/kdtree.pyx":352
9091  *         cdef object out = np.empty(self.ndim, 'bool')
9092  *         cdef np.uint32_t i
9093  *         for i in range(self.ndim):             # <<<<<<<<<<<<<<
9094  *             out[i] = view[i]
9095  *         return out
9096  */
9097   __pyx_t_10 = __pyx_v_self->ndim;
9098   __pyx_t_11 = __pyx_t_10;
9099   for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
9100     __pyx_v_i = __pyx_t_12;
9101 
9102     /* "yt/utilities/lib/cykdtree/kdtree.pyx":353
9103  *         cdef np.uint32_t i
9104  *         for i in range(self.ndim):
9105  *             out[i] = view[i]             # <<<<<<<<<<<<<<
9106  *         return out
9107  *
9108  */
9109     __pyx_t_13 = __pyx_v_i;
9110     __pyx_t_8 = -1;
9111     if (unlikely(__pyx_t_13 >= (size_t)__pyx_v_view.shape[0])) __pyx_t_8 = 0;
9112     if (unlikely(__pyx_t_8 != -1)) {
9113       __Pyx_RaiseBufferIndexError(__pyx_t_8);
9114       __PYX_ERR(0, 353, __pyx_L1_error)
9115     }
9116     __pyx_t_4 = __Pyx_PyBool_FromLong((*((bool *) ( /* dim=0 */ (__pyx_v_view.data + __pyx_t_13 * __pyx_v_view.strides[0]) )))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 353, __pyx_L1_error)
9117     __Pyx_GOTREF(__pyx_t_4);
9118     if (unlikely(__Pyx_SetItemInt(__pyx_v_out, __pyx_v_i, __pyx_t_4, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1) < 0)) __PYX_ERR(0, 353, __pyx_L1_error)
9119     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9120   }
9121 
9122   /* "yt/utilities/lib/cykdtree/kdtree.pyx":354
9123  *         for i in range(self.ndim):
9124  *             out[i] = view[i]
9125  *         return out             # <<<<<<<<<<<<<<
9126  *
9127  *     def leaf_idx(self, np.uint32_t leafid):
9128  */
9129   __Pyx_XDECREF(__pyx_r);
9130   __Pyx_INCREF(__pyx_v_out);
9131   __pyx_r = __pyx_v_out;
9132   goto __pyx_L0;
9133 
9134   /* "yt/utilities/lib/cykdtree/kdtree.pyx":347
9135  *         return np.asarray(view)
9136  *     @property
9137  *     def periodic(self):             # <<<<<<<<<<<<<<
9138  *         cdef cbool[:] view = <cbool[:self.ndim]> self._tree.periodic
9139  *         # return np.asarray(view)
9140  */
9141 
9142   /* function exit code */
9143   __pyx_L1_error:;
9144   __Pyx_XDECREF(((PyObject *)__pyx_t_2));
9145   __Pyx_XDECREF(__pyx_t_3);
9146   __Pyx_XDECREF(__pyx_t_4);
9147   __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
9148   __Pyx_XDECREF(__pyx_t_6);
9149   __Pyx_XDECREF(__pyx_t_7);
9150   __Pyx_XDECREF(__pyx_t_9);
9151   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.periodic.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9152   __pyx_r = NULL;
9153   __pyx_L0:;
9154   __PYX_XDEC_MEMVIEW(&__pyx_v_view, 1);
9155   __Pyx_XDECREF(__pyx_v_out);
9156   __Pyx_XGIVEREF(__pyx_r);
9157   __Pyx_RefNannyFinishContext();
9158   return __pyx_r;
9159 }
9160 
9161 /* "yt/utilities/lib/cykdtree/kdtree.pyx":356
9162  *         return out
9163  *
9164  *     def leaf_idx(self, np.uint32_t leafid):             # <<<<<<<<<<<<<<
9165  *         r"""Get array of indices for points in a leaf.
9166  *
9167  */
9168 
9169 /* Python wrapper */
9170 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9leaf_idx(PyObject *__pyx_v_self, PyObject *__pyx_arg_leafid); /*proto*/
9171 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leaf_idx[] = "Get array of indices for points in a leaf.\n\n        Args:\n            leafid (np.uint32_t): Unique index of the leaf in question.\n\n        Returns:\n            np.ndarray of np.uint64_t: Indices of points belonging to leaf.\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9leaf_idx(PyObject * __pyx_v_self,PyObject * __pyx_arg_leafid)9172 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9leaf_idx(PyObject *__pyx_v_self, PyObject *__pyx_arg_leafid) {
9173   __pyx_t_5numpy_uint32_t __pyx_v_leafid;
9174   PyObject *__pyx_r = 0;
9175   __Pyx_RefNannyDeclarations
9176   __Pyx_RefNannySetupContext("leaf_idx (wrapper)", 0);
9177   assert(__pyx_arg_leafid); {
9178     __pyx_v_leafid = __Pyx_PyInt_As_npy_uint32(__pyx_arg_leafid); if (unlikely((__pyx_v_leafid == ((npy_uint32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L3_error)
9179   }
9180   goto __pyx_L4_argument_unpacking_done;
9181   __pyx_L3_error:;
9182   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.leaf_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
9183   __Pyx_RefNannyFinishContext();
9184   return NULL;
9185   __pyx_L4_argument_unpacking_done:;
9186   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leaf_idx(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), ((__pyx_t_5numpy_uint32_t)__pyx_v_leafid));
9187 
9188   /* function exit code */
9189   __Pyx_RefNannyFinishContext();
9190   return __pyx_r;
9191 }
9192 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leaf_idx(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,__pyx_t_5numpy_uint32_t __pyx_v_leafid)9193 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leaf_idx(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, __pyx_t_5numpy_uint32_t __pyx_v_leafid) {
9194   PyArrayObject *__pyx_v_out = 0;
9195   __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
9196   __Pyx_Buffer __pyx_pybuffer_out;
9197   PyObject *__pyx_r = NULL;
9198   __Pyx_RefNannyDeclarations
9199   PyObject *__pyx_t_1 = NULL;
9200   PyObject *__pyx_t_2 = NULL;
9201   PyArrayObject *__pyx_t_3 = NULL;
9202   __Pyx_RefNannySetupContext("leaf_idx", 0);
9203   __pyx_pybuffer_out.pybuffer.buf = NULL;
9204   __pyx_pybuffer_out.refcount = 0;
9205   __pyx_pybuffernd_out.data = NULL;
9206   __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
9207 
9208   /* "yt/utilities/lib/cykdtree/kdtree.pyx":366
9209  *
9210  *         """
9211  *         cdef np.ndarray[np.uint64_t] out = self._idx[self.leaves[leafid].slice]             # <<<<<<<<<<<<<<
9212  *         return out
9213  *
9214  */
9215   __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->leaves, __pyx_v_leafid, __pyx_t_5numpy_uint32_t, 0, __Pyx_PyInt_From_npy_uint32, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
9216   __Pyx_GOTREF(__pyx_t_1);
9217   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_slice); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
9218   __Pyx_GOTREF(__pyx_t_2);
9219   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9220   __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->_idx, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
9221   __Pyx_GOTREF(__pyx_t_1);
9222   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9223   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 366, __pyx_L1_error)
9224   __pyx_t_3 = ((PyArrayObject *)__pyx_t_1);
9225   {
9226     __Pyx_BufFmt_StackElem __pyx_stack[1];
9227     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_3, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
9228       __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL;
9229       __PYX_ERR(0, 366, __pyx_L1_error)
9230     } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
9231     }
9232   }
9233   __pyx_t_3 = 0;
9234   __pyx_v_out = ((PyArrayObject *)__pyx_t_1);
9235   __pyx_t_1 = 0;
9236 
9237   /* "yt/utilities/lib/cykdtree/kdtree.pyx":367
9238  *         """
9239  *         cdef np.ndarray[np.uint64_t] out = self._idx[self.leaves[leafid].slice]
9240  *         return out             # <<<<<<<<<<<<<<
9241  *
9242  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):
9243  */
9244   __Pyx_XDECREF(__pyx_r);
9245   __Pyx_INCREF(((PyObject *)__pyx_v_out));
9246   __pyx_r = ((PyObject *)__pyx_v_out);
9247   goto __pyx_L0;
9248 
9249   /* "yt/utilities/lib/cykdtree/kdtree.pyx":356
9250  *         return out
9251  *
9252  *     def leaf_idx(self, np.uint32_t leafid):             # <<<<<<<<<<<<<<
9253  *         r"""Get array of indices for points in a leaf.
9254  *
9255  */
9256 
9257   /* function exit code */
9258   __pyx_L1_error:;
9259   __Pyx_XDECREF(__pyx_t_1);
9260   __Pyx_XDECREF(__pyx_t_2);
9261   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
9262     __Pyx_PyThreadState_declare
9263     __Pyx_PyThreadState_assign
9264     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
9265     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
9266   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
9267   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.leaf_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
9268   __pyx_r = NULL;
9269   goto __pyx_L2;
9270   __pyx_L0:;
9271   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
9272   __pyx_L2:;
9273   __Pyx_XDECREF((PyObject *)__pyx_v_out);
9274   __Pyx_XGIVEREF(__pyx_r);
9275   __Pyx_RefNannyFinishContext();
9276   return __pyx_r;
9277 }
9278 
9279 /* "yt/utilities/lib/cykdtree/kdtree.pyx":369
9280  *         return out
9281  *
9282  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
9283  *         cdef np.uint32_t i
9284  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9285  */
9286 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,PyArrayObject * __pyx_v_pos)9287 static PyArrayObject *__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos) {
9288   __pyx_t_5numpy_uint32_t __pyx_v_i;
9289   std::vector<uint32_t>  __pyx_v_vout;
9290   PyArrayObject *__pyx_v_out = 0;
9291   __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
9292   __Pyx_Buffer __pyx_pybuffer_out;
9293   __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
9294   __Pyx_Buffer __pyx_pybuffer_pos;
9295   PyArrayObject *__pyx_r = NULL;
9296   __Pyx_RefNannyDeclarations
9297   Py_ssize_t __pyx_t_1;
9298   int __pyx_t_2;
9299   PyObject *__pyx_t_3 = NULL;
9300   PyObject *__pyx_t_4 = NULL;
9301   PyObject *__pyx_t_5 = NULL;
9302   PyObject *__pyx_t_6 = NULL;
9303   PyObject *__pyx_t_7 = NULL;
9304   PyArrayObject *__pyx_t_8 = NULL;
9305   std::vector<uint32_t> ::size_type __pyx_t_9;
9306   std::vector<uint32_t> ::size_type __pyx_t_10;
9307   __pyx_t_5numpy_uint32_t __pyx_t_11;
9308   size_t __pyx_t_12;
9309   __Pyx_RefNannySetupContext("_get_neighbor_ids", 0);
9310   __pyx_pybuffer_out.pybuffer.buf = NULL;
9311   __pyx_pybuffer_out.refcount = 0;
9312   __pyx_pybuffernd_out.data = NULL;
9313   __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
9314   __pyx_pybuffer_pos.pybuffer.buf = NULL;
9315   __pyx_pybuffer_pos.refcount = 0;
9316   __pyx_pybuffernd_pos.data = NULL;
9317   __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
9318   {
9319     __Pyx_BufFmt_StackElem __pyx_stack[1];
9320     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 369, __pyx_L1_error)
9321   }
9322   __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
9323 
9324   /* "yt/utilities/lib/cykdtree/kdtree.pyx":371
9325  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):
9326  *         cdef np.uint32_t i
9327  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);             # <<<<<<<<<<<<<<
9328  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')
9329  *         for i in xrange(vout.size()):
9330  */
9331   __pyx_t_1 = 0;
9332   __pyx_t_2 = -1;
9333   if (__pyx_t_1 < 0) {
9334     __pyx_t_1 += __pyx_pybuffernd_pos.diminfo[0].shape;
9335     if (unlikely(__pyx_t_1 < 0)) __pyx_t_2 = 0;
9336   } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_pos.diminfo[0].shape)) __pyx_t_2 = 0;
9337   if (unlikely(__pyx_t_2 != -1)) {
9338     __Pyx_RaiseBufferIndexError(__pyx_t_2);
9339     __PYX_ERR(0, 371, __pyx_L1_error)
9340   }
9341   __pyx_v_vout = __pyx_v_self->_tree->get_neighbor_ids((&(*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_pos.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_pos.diminfo[0].strides))));
9342 
9343   /* "yt/utilities/lib/cykdtree/kdtree.pyx":372
9344  *         cdef np.uint32_t i
9345  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9346  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')             # <<<<<<<<<<<<<<
9347  *         for i in xrange(vout.size()):
9348  *             out[i] = vout[i]
9349  */
9350   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error)
9351   __Pyx_GOTREF(__pyx_t_4);
9352   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 372, __pyx_L1_error)
9353   __Pyx_GOTREF(__pyx_t_5);
9354   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9355   __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_vout.size()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error)
9356   __Pyx_GOTREF(__pyx_t_4);
9357   __pyx_t_6 = NULL;
9358   __pyx_t_2 = 0;
9359   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
9360     __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
9361     if (likely(__pyx_t_6)) {
9362       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
9363       __Pyx_INCREF(__pyx_t_6);
9364       __Pyx_INCREF(function);
9365       __Pyx_DECREF_SET(__pyx_t_5, function);
9366       __pyx_t_2 = 1;
9367     }
9368   }
9369   #if CYTHON_FAST_PYCALL
9370   if (PyFunction_Check(__pyx_t_5)) {
9371     PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_n_s_uint32};
9372     __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error)
9373     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
9374     __Pyx_GOTREF(__pyx_t_3);
9375     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9376   } else
9377   #endif
9378   #if CYTHON_FAST_PYCCALL
9379   if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
9380     PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_n_s_uint32};
9381     __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error)
9382     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
9383     __Pyx_GOTREF(__pyx_t_3);
9384     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9385   } else
9386   #endif
9387   {
9388     __pyx_t_7 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 372, __pyx_L1_error)
9389     __Pyx_GOTREF(__pyx_t_7);
9390     if (__pyx_t_6) {
9391       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
9392     }
9393     __Pyx_GIVEREF(__pyx_t_4);
9394     PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_2, __pyx_t_4);
9395     __Pyx_INCREF(__pyx_n_s_uint32);
9396     __Pyx_GIVEREF(__pyx_n_s_uint32);
9397     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_2, __pyx_n_s_uint32);
9398     __pyx_t_4 = 0;
9399     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error)
9400     __Pyx_GOTREF(__pyx_t_3);
9401     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9402   }
9403   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9404   if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 372, __pyx_L1_error)
9405   __pyx_t_8 = ((PyArrayObject *)__pyx_t_3);
9406   {
9407     __Pyx_BufFmt_StackElem __pyx_stack[1];
9408     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
9409       __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL;
9410       __PYX_ERR(0, 372, __pyx_L1_error)
9411     } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
9412     }
9413   }
9414   __pyx_t_8 = 0;
9415   __pyx_v_out = ((PyArrayObject *)__pyx_t_3);
9416   __pyx_t_3 = 0;
9417 
9418   /* "yt/utilities/lib/cykdtree/kdtree.pyx":373
9419  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9420  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')
9421  *         for i in xrange(vout.size()):             # <<<<<<<<<<<<<<
9422  *             out[i] = vout[i]
9423  *         return out
9424  */
9425   __pyx_t_9 = __pyx_v_vout.size();
9426   __pyx_t_10 = __pyx_t_9;
9427   for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
9428     __pyx_v_i = __pyx_t_11;
9429 
9430     /* "yt/utilities/lib/cykdtree/kdtree.pyx":374
9431  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')
9432  *         for i in xrange(vout.size()):
9433  *             out[i] = vout[i]             # <<<<<<<<<<<<<<
9434  *         return out
9435  *
9436  */
9437     __pyx_t_12 = __pyx_v_i;
9438     __pyx_t_2 = -1;
9439     if (unlikely(__pyx_t_12 >= (size_t)__pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_2 = 0;
9440     if (unlikely(__pyx_t_2 != -1)) {
9441       __Pyx_RaiseBufferIndexError(__pyx_t_2);
9442       __PYX_ERR(0, 374, __pyx_L1_error)
9443     }
9444     *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_vout[__pyx_v_i]);
9445   }
9446 
9447   /* "yt/utilities/lib/cykdtree/kdtree.pyx":375
9448  *         for i in xrange(vout.size()):
9449  *             out[i] = vout[i]
9450  *         return out             # <<<<<<<<<<<<<<
9451  *
9452  *     @property
9453  */
9454   __Pyx_XDECREF(((PyObject *)__pyx_r));
9455   __Pyx_INCREF(((PyObject *)__pyx_v_out));
9456   __pyx_r = ((PyArrayObject *)__pyx_v_out);
9457   goto __pyx_L0;
9458 
9459   /* "yt/utilities/lib/cykdtree/kdtree.pyx":369
9460  *         return out
9461  *
9462  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
9463  *         cdef np.uint32_t i
9464  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9465  */
9466 
9467   /* function exit code */
9468   __pyx_L1_error:;
9469   __Pyx_XDECREF(__pyx_t_3);
9470   __Pyx_XDECREF(__pyx_t_4);
9471   __Pyx_XDECREF(__pyx_t_5);
9472   __Pyx_XDECREF(__pyx_t_6);
9473   __Pyx_XDECREF(__pyx_t_7);
9474   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
9475     __Pyx_PyThreadState_declare
9476     __Pyx_PyThreadState_assign
9477     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
9478     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
9479     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
9480   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
9481   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree._get_neighbor_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
9482   __pyx_r = 0;
9483   goto __pyx_L2;
9484   __pyx_L0:;
9485   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
9486   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
9487   __pyx_L2:;
9488   __Pyx_XDECREF((PyObject *)__pyx_v_out);
9489   __Pyx_XGIVEREF((PyObject *)__pyx_r);
9490   __Pyx_RefNannyFinishContext();
9491   return __pyx_r;
9492 }
9493 
9494 /* "yt/utilities/lib/cykdtree/kdtree.pyx":378
9495  *
9496  *     @property
9497  *     def idx(self):             # <<<<<<<<<<<<<<
9498  *         return np.asarray(self._idx)
9499  *
9500  */
9501 
9502 /* Python wrapper */
9503 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx_1__get__(PyObject * __pyx_v_self)9504 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx_1__get__(PyObject *__pyx_v_self) {
9505   PyObject *__pyx_r = 0;
9506   __Pyx_RefNannyDeclarations
9507   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
9508   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
9509 
9510   /* function exit code */
9511   __Pyx_RefNannyFinishContext();
9512   return __pyx_r;
9513 }
9514 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)9515 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
9516   PyObject *__pyx_r = NULL;
9517   __Pyx_RefNannyDeclarations
9518   PyObject *__pyx_t_1 = NULL;
9519   PyObject *__pyx_t_2 = NULL;
9520   PyObject *__pyx_t_3 = NULL;
9521   __Pyx_RefNannySetupContext("__get__", 0);
9522 
9523   /* "yt/utilities/lib/cykdtree/kdtree.pyx":379
9524  *     @property
9525  *     def idx(self):
9526  *         return np.asarray(self._idx)             # <<<<<<<<<<<<<<
9527  *
9528  *     def get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):
9529  */
9530   __Pyx_XDECREF(__pyx_r);
9531   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
9532   __Pyx_GOTREF(__pyx_t_2);
9533   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error)
9534   __Pyx_GOTREF(__pyx_t_3);
9535   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9536   __pyx_t_2 = NULL;
9537   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
9538     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
9539     if (likely(__pyx_t_2)) {
9540       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
9541       __Pyx_INCREF(__pyx_t_2);
9542       __Pyx_INCREF(function);
9543       __Pyx_DECREF_SET(__pyx_t_3, function);
9544     }
9545   }
9546   __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self->_idx) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->_idx);
9547   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
9548   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error)
9549   __Pyx_GOTREF(__pyx_t_1);
9550   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9551   __pyx_r = __pyx_t_1;
9552   __pyx_t_1 = 0;
9553   goto __pyx_L0;
9554 
9555   /* "yt/utilities/lib/cykdtree/kdtree.pyx":378
9556  *
9557  *     @property
9558  *     def idx(self):             # <<<<<<<<<<<<<<
9559  *         return np.asarray(self._idx)
9560  *
9561  */
9562 
9563   /* function exit code */
9564   __pyx_L1_error:;
9565   __Pyx_XDECREF(__pyx_t_1);
9566   __Pyx_XDECREF(__pyx_t_2);
9567   __Pyx_XDECREF(__pyx_t_3);
9568   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.idx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
9569   __pyx_r = NULL;
9570   __pyx_L0:;
9571   __Pyx_XGIVEREF(__pyx_r);
9572   __Pyx_RefNannyFinishContext();
9573   return __pyx_r;
9574 }
9575 
9576 /* "yt/utilities/lib/cykdtree/kdtree.pyx":381
9577  *         return np.asarray(self._idx)
9578  *
9579  *     def get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
9580  *         r"""Return the IDs of leaves containing & neighboring a given position.
9581  *
9582  */
9583 
9584 /* Python wrapper */
9585 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_11get_neighbor_ids(PyObject *__pyx_v_self, PyObject *__pyx_v_pos); /*proto*/
9586 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10get_neighbor_ids[] = "Return the IDs of leaves containing & neighboring a given position.\n\n        Args:\n            pos (np.ndarray of double): Coordinates.\n\n        Returns:\n            np.ndarray of uint32: Leaves containing/neighboring `pos`.\n\n        Raises:\n            ValueError: If pos is not contained withing the KDTree.\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_11get_neighbor_ids(PyObject * __pyx_v_self,PyObject * __pyx_v_pos)9587 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_11get_neighbor_ids(PyObject *__pyx_v_self, PyObject *__pyx_v_pos) {
9588   PyObject *__pyx_r = 0;
9589   __Pyx_RefNannyDeclarations
9590   __Pyx_RefNannySetupContext("get_neighbor_ids (wrapper)", 0);
9591   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 381, __pyx_L1_error)
9592   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10get_neighbor_ids(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), ((PyArrayObject *)__pyx_v_pos));
9593 
9594   /* function exit code */
9595   goto __pyx_L0;
9596   __pyx_L1_error:;
9597   __pyx_r = NULL;
9598   __pyx_L0:;
9599   __Pyx_RefNannyFinishContext();
9600   return __pyx_r;
9601 }
9602 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10get_neighbor_ids(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,PyArrayObject * __pyx_v_pos)9603 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10get_neighbor_ids(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos) {
9604   __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
9605   __Pyx_Buffer __pyx_pybuffer_pos;
9606   PyObject *__pyx_r = NULL;
9607   __Pyx_RefNannyDeclarations
9608   PyObject *__pyx_t_1 = NULL;
9609   __Pyx_RefNannySetupContext("get_neighbor_ids", 0);
9610   __pyx_pybuffer_pos.pybuffer.buf = NULL;
9611   __pyx_pybuffer_pos.refcount = 0;
9612   __pyx_pybuffernd_pos.data = NULL;
9613   __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
9614   {
9615     __Pyx_BufFmt_StackElem __pyx_stack[1];
9616     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 381, __pyx_L1_error)
9617   }
9618   __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
9619 
9620   /* "yt/utilities/lib/cykdtree/kdtree.pyx":394
9621  *
9622  *         """
9623  *         return self._get_neighbor_ids(pos)             # <<<<<<<<<<<<<<
9624  *
9625  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids_3(self, np.float64_t pos[3]):
9626  */
9627   __Pyx_XDECREF(__pyx_r);
9628   __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self->__pyx_vtab)->_get_neighbor_ids(__pyx_v_self, ((PyArrayObject *)__pyx_v_pos))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
9629   __Pyx_GOTREF(__pyx_t_1);
9630   __pyx_r = __pyx_t_1;
9631   __pyx_t_1 = 0;
9632   goto __pyx_L0;
9633 
9634   /* "yt/utilities/lib/cykdtree/kdtree.pyx":381
9635  *         return np.asarray(self._idx)
9636  *
9637  *     def get_neighbor_ids(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
9638  *         r"""Return the IDs of leaves containing & neighboring a given position.
9639  *
9640  */
9641 
9642   /* function exit code */
9643   __pyx_L1_error:;
9644   __Pyx_XDECREF(__pyx_t_1);
9645   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
9646     __Pyx_PyThreadState_declare
9647     __Pyx_PyThreadState_assign
9648     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
9649     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
9650   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
9651   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.get_neighbor_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
9652   __pyx_r = NULL;
9653   goto __pyx_L2;
9654   __pyx_L0:;
9655   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
9656   __pyx_L2:;
9657   __Pyx_XGIVEREF(__pyx_r);
9658   __Pyx_RefNannyFinishContext();
9659   return __pyx_r;
9660 }
9661 
9662 /* "yt/utilities/lib/cykdtree/kdtree.pyx":396
9663  *         return self._get_neighbor_ids(pos)
9664  *
9665  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids_3(self, np.float64_t pos[3]):             # <<<<<<<<<<<<<<
9666  *         cdef np.uint32_t i
9667  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9668  */
9669 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids_3(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,__pyx_t_5numpy_float64_t * __pyx_v_pos)9670 static PyArrayObject *__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids_3(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, __pyx_t_5numpy_float64_t *__pyx_v_pos) {
9671   __pyx_t_5numpy_uint32_t __pyx_v_i;
9672   std::vector<uint32_t>  __pyx_v_vout;
9673   PyArrayObject *__pyx_v_out = 0;
9674   __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
9675   __Pyx_Buffer __pyx_pybuffer_out;
9676   PyArrayObject *__pyx_r = NULL;
9677   __Pyx_RefNannyDeclarations
9678   PyObject *__pyx_t_1 = NULL;
9679   PyObject *__pyx_t_2 = NULL;
9680   PyObject *__pyx_t_3 = NULL;
9681   PyObject *__pyx_t_4 = NULL;
9682   int __pyx_t_5;
9683   PyObject *__pyx_t_6 = NULL;
9684   PyArrayObject *__pyx_t_7 = NULL;
9685   std::vector<uint32_t> ::size_type __pyx_t_8;
9686   std::vector<uint32_t> ::size_type __pyx_t_9;
9687   __pyx_t_5numpy_uint32_t __pyx_t_10;
9688   size_t __pyx_t_11;
9689   __Pyx_RefNannySetupContext("_get_neighbor_ids_3", 0);
9690   __pyx_pybuffer_out.pybuffer.buf = NULL;
9691   __pyx_pybuffer_out.refcount = 0;
9692   __pyx_pybuffernd_out.data = NULL;
9693   __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
9694 
9695   /* "yt/utilities/lib/cykdtree/kdtree.pyx":398
9696  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids_3(self, np.float64_t pos[3]):
9697  *         cdef np.uint32_t i
9698  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);             # <<<<<<<<<<<<<<
9699  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')
9700  *         for i in xrange(vout.size()):
9701  */
9702   __pyx_v_vout = __pyx_v_self->_tree->get_neighbor_ids((&(__pyx_v_pos[0])));
9703 
9704   /* "yt/utilities/lib/cykdtree/kdtree.pyx":399
9705  *         cdef np.uint32_t i
9706  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9707  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')             # <<<<<<<<<<<<<<
9708  *         for i in xrange(vout.size()):
9709  *             out[i] = vout[i]
9710  */
9711   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error)
9712   __Pyx_GOTREF(__pyx_t_2);
9713   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
9714   __Pyx_GOTREF(__pyx_t_3);
9715   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9716   __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_vout.size()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error)
9717   __Pyx_GOTREF(__pyx_t_2);
9718   __pyx_t_4 = NULL;
9719   __pyx_t_5 = 0;
9720   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
9721     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
9722     if (likely(__pyx_t_4)) {
9723       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
9724       __Pyx_INCREF(__pyx_t_4);
9725       __Pyx_INCREF(function);
9726       __Pyx_DECREF_SET(__pyx_t_3, function);
9727       __pyx_t_5 = 1;
9728     }
9729   }
9730   #if CYTHON_FAST_PYCALL
9731   if (PyFunction_Check(__pyx_t_3)) {
9732     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_n_s_uint32};
9733     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
9734     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
9735     __Pyx_GOTREF(__pyx_t_1);
9736     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9737   } else
9738   #endif
9739   #if CYTHON_FAST_PYCCALL
9740   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
9741     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_n_s_uint32};
9742     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
9743     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
9744     __Pyx_GOTREF(__pyx_t_1);
9745     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9746   } else
9747   #endif
9748   {
9749     __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 399, __pyx_L1_error)
9750     __Pyx_GOTREF(__pyx_t_6);
9751     if (__pyx_t_4) {
9752       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
9753     }
9754     __Pyx_GIVEREF(__pyx_t_2);
9755     PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
9756     __Pyx_INCREF(__pyx_n_s_uint32);
9757     __Pyx_GIVEREF(__pyx_n_s_uint32);
9758     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_n_s_uint32);
9759     __pyx_t_2 = 0;
9760     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
9761     __Pyx_GOTREF(__pyx_t_1);
9762     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
9763   }
9764   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9765   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 399, __pyx_L1_error)
9766   __pyx_t_7 = ((PyArrayObject *)__pyx_t_1);
9767   {
9768     __Pyx_BufFmt_StackElem __pyx_stack[1];
9769     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
9770       __pyx_v_out = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_out.rcbuffer->pybuffer.buf = NULL;
9771       __PYX_ERR(0, 399, __pyx_L1_error)
9772     } else {__pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
9773     }
9774   }
9775   __pyx_t_7 = 0;
9776   __pyx_v_out = ((PyArrayObject *)__pyx_t_1);
9777   __pyx_t_1 = 0;
9778 
9779   /* "yt/utilities/lib/cykdtree/kdtree.pyx":400
9780  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9781  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')
9782  *         for i in xrange(vout.size()):             # <<<<<<<<<<<<<<
9783  *             out[i] = vout[i]
9784  *         return out
9785  */
9786   __pyx_t_8 = __pyx_v_vout.size();
9787   __pyx_t_9 = __pyx_t_8;
9788   for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
9789     __pyx_v_i = __pyx_t_10;
9790 
9791     /* "yt/utilities/lib/cykdtree/kdtree.pyx":401
9792  *         cdef np.ndarray[np.uint32_t, ndim=1] out = np.empty(vout.size(), 'uint32')
9793  *         for i in xrange(vout.size()):
9794  *             out[i] = vout[i]             # <<<<<<<<<<<<<<
9795  *         return out
9796  *
9797  */
9798     __pyx_t_11 = __pyx_v_i;
9799     __pyx_t_5 = -1;
9800     if (unlikely(__pyx_t_11 >= (size_t)__pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_5 = 0;
9801     if (unlikely(__pyx_t_5 != -1)) {
9802       __Pyx_RaiseBufferIndexError(__pyx_t_5);
9803       __PYX_ERR(0, 401, __pyx_L1_error)
9804     }
9805     *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint32_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_vout[__pyx_v_i]);
9806   }
9807 
9808   /* "yt/utilities/lib/cykdtree/kdtree.pyx":402
9809  *         for i in xrange(vout.size()):
9810  *             out[i] = vout[i]
9811  *         return out             # <<<<<<<<<<<<<<
9812  *
9813  *     cdef PyNode _get(self, np.ndarray[double, ndim=1] pos):
9814  */
9815   __Pyx_XDECREF(((PyObject *)__pyx_r));
9816   __Pyx_INCREF(((PyObject *)__pyx_v_out));
9817   __pyx_r = ((PyArrayObject *)__pyx_v_out);
9818   goto __pyx_L0;
9819 
9820   /* "yt/utilities/lib/cykdtree/kdtree.pyx":396
9821  *         return self._get_neighbor_ids(pos)
9822  *
9823  *     cdef np.ndarray[np.uint32_t, ndim=1] _get_neighbor_ids_3(self, np.float64_t pos[3]):             # <<<<<<<<<<<<<<
9824  *         cdef np.uint32_t i
9825  *         cdef vector[uint32_t] vout = self._tree.get_neighbor_ids(&pos[0]);
9826  */
9827 
9828   /* function exit code */
9829   __pyx_L1_error:;
9830   __Pyx_XDECREF(__pyx_t_1);
9831   __Pyx_XDECREF(__pyx_t_2);
9832   __Pyx_XDECREF(__pyx_t_3);
9833   __Pyx_XDECREF(__pyx_t_4);
9834   __Pyx_XDECREF(__pyx_t_6);
9835   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
9836     __Pyx_PyThreadState_declare
9837     __Pyx_PyThreadState_assign
9838     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
9839     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
9840   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
9841   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree._get_neighbor_ids_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
9842   __pyx_r = 0;
9843   goto __pyx_L2;
9844   __pyx_L0:;
9845   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
9846   __pyx_L2:;
9847   __Pyx_XDECREF((PyObject *)__pyx_v_out);
9848   __Pyx_XGIVEREF((PyObject *)__pyx_r);
9849   __Pyx_RefNannyFinishContext();
9850   return __pyx_r;
9851 }
9852 
9853 /* "yt/utilities/lib/cykdtree/kdtree.pyx":404
9854  *         return out
9855  *
9856  *     cdef PyNode _get(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
9857  *         assert(<uint32_t>len(pos) == self.ndim)
9858  *         cdef Node* leafnode = self._tree.search(&pos[0])
9859  */
9860 
__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,PyArrayObject * __pyx_v_pos)9861 static struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos) {
9862   Node *__pyx_v_leafnode;
9863   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_v_out = 0;
9864   __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
9865   __Pyx_Buffer __pyx_pybuffer_pos;
9866   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *__pyx_r = NULL;
9867   __Pyx_RefNannyDeclarations
9868   Py_ssize_t __pyx_t_1;
9869   Py_ssize_t __pyx_t_2;
9870   int __pyx_t_3;
9871   int __pyx_t_4;
9872   PyObject *__pyx_t_5 = NULL;
9873   __Pyx_RefNannySetupContext("_get", 0);
9874   __pyx_pybuffer_pos.pybuffer.buf = NULL;
9875   __pyx_pybuffer_pos.refcount = 0;
9876   __pyx_pybuffernd_pos.data = NULL;
9877   __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
9878   {
9879     __Pyx_BufFmt_StackElem __pyx_stack[1];
9880     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 404, __pyx_L1_error)
9881   }
9882   __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
9883 
9884   /* "yt/utilities/lib/cykdtree/kdtree.pyx":405
9885  *
9886  *     cdef PyNode _get(self, np.ndarray[double, ndim=1] pos):
9887  *         assert(<uint32_t>len(pos) == self.ndim)             # <<<<<<<<<<<<<<
9888  *         cdef Node* leafnode = self._tree.search(&pos[0])
9889  *         if leafnode == NULL:
9890  */
9891   #ifndef CYTHON_WITHOUT_ASSERTIONS
9892   if (unlikely(!Py_OptimizeFlag)) {
9893     __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_pos)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 405, __pyx_L1_error)
9894     if (unlikely(!((((uint32_t)__pyx_t_1) == __pyx_v_self->ndim) != 0))) {
9895       PyErr_SetNone(PyExc_AssertionError);
9896       __PYX_ERR(0, 405, __pyx_L1_error)
9897     }
9898   }
9899   #endif
9900 
9901   /* "yt/utilities/lib/cykdtree/kdtree.pyx":406
9902  *     cdef PyNode _get(self, np.ndarray[double, ndim=1] pos):
9903  *         assert(<uint32_t>len(pos) == self.ndim)
9904  *         cdef Node* leafnode = self._tree.search(&pos[0])             # <<<<<<<<<<<<<<
9905  *         if leafnode == NULL:
9906  *             raise ValueError("Position is not within the kdtree root node.")
9907  */
9908   __pyx_t_2 = 0;
9909   __pyx_t_3 = -1;
9910   if (__pyx_t_2 < 0) {
9911     __pyx_t_2 += __pyx_pybuffernd_pos.diminfo[0].shape;
9912     if (unlikely(__pyx_t_2 < 0)) __pyx_t_3 = 0;
9913   } else if (unlikely(__pyx_t_2 >= __pyx_pybuffernd_pos.diminfo[0].shape)) __pyx_t_3 = 0;
9914   if (unlikely(__pyx_t_3 != -1)) {
9915     __Pyx_RaiseBufferIndexError(__pyx_t_3);
9916     __PYX_ERR(0, 406, __pyx_L1_error)
9917   }
9918   __pyx_v_leafnode = __pyx_v_self->_tree->search((&(*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_pos.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_pos.diminfo[0].strides))));
9919 
9920   /* "yt/utilities/lib/cykdtree/kdtree.pyx":407
9921  *         assert(<uint32_t>len(pos) == self.ndim)
9922  *         cdef Node* leafnode = self._tree.search(&pos[0])
9923  *         if leafnode == NULL:             # <<<<<<<<<<<<<<
9924  *             raise ValueError("Position is not within the kdtree root node.")
9925  *         cdef PyNode out = self.leaves[leafnode.leafid]
9926  */
9927   __pyx_t_4 = ((__pyx_v_leafnode == NULL) != 0);
9928   if (unlikely(__pyx_t_4)) {
9929 
9930     /* "yt/utilities/lib/cykdtree/kdtree.pyx":408
9931  *         cdef Node* leafnode = self._tree.search(&pos[0])
9932  *         if leafnode == NULL:
9933  *             raise ValueError("Position is not within the kdtree root node.")             # <<<<<<<<<<<<<<
9934  *         cdef PyNode out = self.leaves[leafnode.leafid]
9935  *         return out
9936  */
9937     __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error)
9938     __Pyx_GOTREF(__pyx_t_5);
9939     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
9940     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
9941     __PYX_ERR(0, 408, __pyx_L1_error)
9942 
9943     /* "yt/utilities/lib/cykdtree/kdtree.pyx":407
9944  *         assert(<uint32_t>len(pos) == self.ndim)
9945  *         cdef Node* leafnode = self._tree.search(&pos[0])
9946  *         if leafnode == NULL:             # <<<<<<<<<<<<<<
9947  *             raise ValueError("Position is not within the kdtree root node.")
9948  *         cdef PyNode out = self.leaves[leafnode.leafid]
9949  */
9950   }
9951 
9952   /* "yt/utilities/lib/cykdtree/kdtree.pyx":409
9953  *         if leafnode == NULL:
9954  *             raise ValueError("Position is not within the kdtree root node.")
9955  *         cdef PyNode out = self.leaves[leafnode.leafid]             # <<<<<<<<<<<<<<
9956  *         return out
9957  *
9958  */
9959   __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_self->leaves, __pyx_v_leafnode->leafid, uint32_t, 0, __Pyx_PyInt_From_uint32_t, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 409, __pyx_L1_error)
9960   __Pyx_GOTREF(__pyx_t_5);
9961   if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode))))) __PYX_ERR(0, 409, __pyx_L1_error)
9962   __pyx_v_out = ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)__pyx_t_5);
9963   __pyx_t_5 = 0;
9964 
9965   /* "yt/utilities/lib/cykdtree/kdtree.pyx":410
9966  *             raise ValueError("Position is not within the kdtree root node.")
9967  *         cdef PyNode out = self.leaves[leafnode.leafid]
9968  *         return out             # <<<<<<<<<<<<<<
9969  *
9970  *     def get(self, np.ndarray[double, ndim=1] pos):
9971  */
9972   __Pyx_XDECREF(((PyObject *)__pyx_r));
9973   __Pyx_INCREF(((PyObject *)__pyx_v_out));
9974   __pyx_r = __pyx_v_out;
9975   goto __pyx_L0;
9976 
9977   /* "yt/utilities/lib/cykdtree/kdtree.pyx":404
9978  *         return out
9979  *
9980  *     cdef PyNode _get(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
9981  *         assert(<uint32_t>len(pos) == self.ndim)
9982  *         cdef Node* leafnode = self._tree.search(&pos[0])
9983  */
9984 
9985   /* function exit code */
9986   __pyx_L1_error:;
9987   __Pyx_XDECREF(__pyx_t_5);
9988   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
9989     __Pyx_PyThreadState_declare
9990     __Pyx_PyThreadState_assign
9991     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
9992     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
9993   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
9994   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree._get", __pyx_clineno, __pyx_lineno, __pyx_filename);
9995   __pyx_r = 0;
9996   goto __pyx_L2;
9997   __pyx_L0:;
9998   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
9999   __pyx_L2:;
10000   __Pyx_XDECREF((PyObject *)__pyx_v_out);
10001   __Pyx_XGIVEREF((PyObject *)__pyx_r);
10002   __Pyx_RefNannyFinishContext();
10003   return __pyx_r;
10004 }
10005 
10006 /* "yt/utilities/lib/cykdtree/kdtree.pyx":412
10007  *         return out
10008  *
10009  *     def get(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
10010  *         r"""Return the leaf containing a given position.
10011  *
10012  */
10013 
10014 /* Python wrapper */
10015 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_13get(PyObject *__pyx_v_self, PyObject *__pyx_v_pos); /*proto*/
10016 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12get[] = "Return the leaf containing a given position.\n\n        Args:\n            pos (np.ndarray of double): Coordinates.\n\n        Returns:\n            :class:`cykdtree.PyNode`: Leaf containing `pos`.\n\n        Raises:\n            ValueError: If pos is not contained withing the KDTree.\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_13get(PyObject * __pyx_v_self,PyObject * __pyx_v_pos)10017 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_13get(PyObject *__pyx_v_self, PyObject *__pyx_v_pos) {
10018   PyObject *__pyx_r = 0;
10019   __Pyx_RefNannyDeclarations
10020   __Pyx_RefNannySetupContext("get (wrapper)", 0);
10021   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 412, __pyx_L1_error)
10022   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12get(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), ((PyArrayObject *)__pyx_v_pos));
10023 
10024   /* function exit code */
10025   goto __pyx_L0;
10026   __pyx_L1_error:;
10027   __pyx_r = NULL;
10028   __pyx_L0:;
10029   __Pyx_RefNannyFinishContext();
10030   return __pyx_r;
10031 }
10032 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12get(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,PyArrayObject * __pyx_v_pos)10033 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12get(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyArrayObject *__pyx_v_pos) {
10034   __Pyx_LocalBuf_ND __pyx_pybuffernd_pos;
10035   __Pyx_Buffer __pyx_pybuffer_pos;
10036   PyObject *__pyx_r = NULL;
10037   __Pyx_RefNannyDeclarations
10038   PyObject *__pyx_t_1 = NULL;
10039   __Pyx_RefNannySetupContext("get", 0);
10040   __pyx_pybuffer_pos.pybuffer.buf = NULL;
10041   __pyx_pybuffer_pos.refcount = 0;
10042   __pyx_pybuffernd_pos.data = NULL;
10043   __pyx_pybuffernd_pos.rcbuffer = &__pyx_pybuffer_pos;
10044   {
10045     __Pyx_BufFmt_StackElem __pyx_stack[1];
10046     if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 412, __pyx_L1_error)
10047   }
10048   __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0];
10049 
10050   /* "yt/utilities/lib/cykdtree/kdtree.pyx":425
10051  *
10052  *         """
10053  *         return self._get(pos)             # <<<<<<<<<<<<<<
10054  *
10055  *     def consolidate_edges(self):
10056  */
10057   __Pyx_XDECREF(__pyx_r);
10058   __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self->__pyx_vtab)->_get(__pyx_v_self, ((PyArrayObject *)__pyx_v_pos))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
10059   __Pyx_GOTREF(__pyx_t_1);
10060   __pyx_r = __pyx_t_1;
10061   __pyx_t_1 = 0;
10062   goto __pyx_L0;
10063 
10064   /* "yt/utilities/lib/cykdtree/kdtree.pyx":412
10065  *         return out
10066  *
10067  *     def get(self, np.ndarray[double, ndim=1] pos):             # <<<<<<<<<<<<<<
10068  *         r"""Return the leaf containing a given position.
10069  *
10070  */
10071 
10072   /* function exit code */
10073   __pyx_L1_error:;
10074   __Pyx_XDECREF(__pyx_t_1);
10075   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
10076     __Pyx_PyThreadState_declare
10077     __Pyx_PyThreadState_assign
10078     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
10079     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
10080   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
10081   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
10082   __pyx_r = NULL;
10083   goto __pyx_L2;
10084   __pyx_L0:;
10085   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_pos.rcbuffer->pybuffer);
10086   __pyx_L2:;
10087   __Pyx_XGIVEREF(__pyx_r);
10088   __Pyx_RefNannyFinishContext();
10089   return __pyx_r;
10090 }
10091 
10092 /* "yt/utilities/lib/cykdtree/kdtree.pyx":427
10093  *         return self._get(pos)
10094  *
10095  *     def consolidate_edges(self):             # <<<<<<<<<<<<<<
10096  *         r"""Return arrays of the left and right edges for all leaves in the
10097  *         tree on each process.
10098  */
10099 
10100 /* Python wrapper */
10101 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_15consolidate_edges(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
10102 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_14consolidate_edges[] = "Return arrays of the left and right edges for all leaves in the\n        tree on each process.\n\n        Returns:\n            tuple(np.ndarray of double, np.ndarray of double): The left (first\n                array) and right (second array) edges of each leaf (1st array\n                dimension), in each dimension (2nd array dimension).\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_15consolidate_edges(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)10103 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_15consolidate_edges(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
10104   PyObject *__pyx_r = 0;
10105   __Pyx_RefNannyDeclarations
10106   __Pyx_RefNannySetupContext("consolidate_edges (wrapper)", 0);
10107   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_14consolidate_edges(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
10108 
10109   /* function exit code */
10110   __Pyx_RefNannyFinishContext();
10111   return __pyx_r;
10112 }
10113 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_14consolidate_edges(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)10114 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_14consolidate_edges(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
10115   PyArrayObject *__pyx_v_leaves_le = 0;
10116   PyArrayObject *__pyx_v_leaves_re = 0;
10117   __Pyx_LocalBuf_ND __pyx_pybuffernd_leaves_le;
10118   __Pyx_Buffer __pyx_pybuffer_leaves_le;
10119   __Pyx_LocalBuf_ND __pyx_pybuffernd_leaves_re;
10120   __Pyx_Buffer __pyx_pybuffer_leaves_re;
10121   PyObject *__pyx_r = NULL;
10122   __Pyx_RefNannyDeclarations
10123   PyObject *__pyx_t_1 = NULL;
10124   PyObject *__pyx_t_2 = NULL;
10125   PyObject *__pyx_t_3 = NULL;
10126   PyObject *__pyx_t_4 = NULL;
10127   PyObject *__pyx_t_5 = NULL;
10128   int __pyx_t_6;
10129   PyArrayObject *__pyx_t_7 = NULL;
10130   PyObject *__pyx_t_8 = NULL;
10131   PyObject *__pyx_t_9 = NULL;
10132   PyObject *__pyx_t_10 = NULL;
10133   PyArrayObject *__pyx_t_11 = NULL;
10134   Py_ssize_t __pyx_t_12;
10135   Py_ssize_t __pyx_t_13;
10136   Py_ssize_t __pyx_t_14;
10137   Py_ssize_t __pyx_t_15;
10138   __Pyx_RefNannySetupContext("consolidate_edges", 0);
10139   __pyx_pybuffer_leaves_le.pybuffer.buf = NULL;
10140   __pyx_pybuffer_leaves_le.refcount = 0;
10141   __pyx_pybuffernd_leaves_le.data = NULL;
10142   __pyx_pybuffernd_leaves_le.rcbuffer = &__pyx_pybuffer_leaves_le;
10143   __pyx_pybuffer_leaves_re.pybuffer.buf = NULL;
10144   __pyx_pybuffer_leaves_re.refcount = 0;
10145   __pyx_pybuffernd_leaves_re.data = NULL;
10146   __pyx_pybuffernd_leaves_re.rcbuffer = &__pyx_pybuffer_leaves_re;
10147 
10148   /* "yt/utilities/lib/cykdtree/kdtree.pyx":439
10149  *         cdef np.ndarray[np.float64_t, ndim=2] leaves_le
10150  *         cdef np.ndarray[np.float64_t, ndim=2] leaves_re
10151  *         leaves_le = np.empty((self.num_leaves, self.ndim), 'float64')             # <<<<<<<<<<<<<<
10152  *         leaves_re = np.empty((self.num_leaves, self.ndim), 'float64')
10153  *         self._tree.consolidate_edges(&leaves_le[0,0], &leaves_re[0,0])
10154  */
10155   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error)
10156   __Pyx_GOTREF(__pyx_t_2);
10157   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error)
10158   __Pyx_GOTREF(__pyx_t_3);
10159   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10160   __pyx_t_2 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->num_leaves); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error)
10161   __Pyx_GOTREF(__pyx_t_2);
10162   __pyx_t_4 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 439, __pyx_L1_error)
10163   __Pyx_GOTREF(__pyx_t_4);
10164   __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 439, __pyx_L1_error)
10165   __Pyx_GOTREF(__pyx_t_5);
10166   __Pyx_GIVEREF(__pyx_t_2);
10167   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
10168   __Pyx_GIVEREF(__pyx_t_4);
10169   PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
10170   __pyx_t_2 = 0;
10171   __pyx_t_4 = 0;
10172   __pyx_t_4 = NULL;
10173   __pyx_t_6 = 0;
10174   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
10175     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
10176     if (likely(__pyx_t_4)) {
10177       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
10178       __Pyx_INCREF(__pyx_t_4);
10179       __Pyx_INCREF(function);
10180       __Pyx_DECREF_SET(__pyx_t_3, function);
10181       __pyx_t_6 = 1;
10182     }
10183   }
10184   #if CYTHON_FAST_PYCALL
10185   if (PyFunction_Check(__pyx_t_3)) {
10186     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_n_s_float64};
10187     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error)
10188     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
10189     __Pyx_GOTREF(__pyx_t_1);
10190     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10191   } else
10192   #endif
10193   #if CYTHON_FAST_PYCCALL
10194   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
10195     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, __pyx_n_s_float64};
10196     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error)
10197     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
10198     __Pyx_GOTREF(__pyx_t_1);
10199     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10200   } else
10201   #endif
10202   {
10203     __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error)
10204     __Pyx_GOTREF(__pyx_t_2);
10205     if (__pyx_t_4) {
10206       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
10207     }
10208     __Pyx_GIVEREF(__pyx_t_5);
10209     PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_t_5);
10210     __Pyx_INCREF(__pyx_n_s_float64);
10211     __Pyx_GIVEREF(__pyx_n_s_float64);
10212     PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_n_s_float64);
10213     __pyx_t_5 = 0;
10214     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error)
10215     __Pyx_GOTREF(__pyx_t_1);
10216     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10217   }
10218   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10219   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 439, __pyx_L1_error)
10220   __pyx_t_7 = ((PyArrayObject *)__pyx_t_1);
10221   {
10222     __Pyx_BufFmt_StackElem __pyx_stack[1];
10223     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_leaves_le.rcbuffer->pybuffer);
10224     __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_leaves_le.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
10225     if (unlikely(__pyx_t_6 < 0)) {
10226       PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
10227       if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_leaves_le.rcbuffer->pybuffer, (PyObject*)__pyx_v_leaves_le, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
10228         Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
10229         __Pyx_RaiseBufferFallbackError();
10230       } else {
10231         PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
10232       }
10233       __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
10234     }
10235     __pyx_pybuffernd_leaves_le.diminfo[0].strides = __pyx_pybuffernd_leaves_le.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_leaves_le.diminfo[0].shape = __pyx_pybuffernd_leaves_le.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_leaves_le.diminfo[1].strides = __pyx_pybuffernd_leaves_le.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_leaves_le.diminfo[1].shape = __pyx_pybuffernd_leaves_le.rcbuffer->pybuffer.shape[1];
10236     if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
10237   }
10238   __pyx_t_7 = 0;
10239   __pyx_v_leaves_le = ((PyArrayObject *)__pyx_t_1);
10240   __pyx_t_1 = 0;
10241 
10242   /* "yt/utilities/lib/cykdtree/kdtree.pyx":440
10243  *         cdef np.ndarray[np.float64_t, ndim=2] leaves_re
10244  *         leaves_le = np.empty((self.num_leaves, self.ndim), 'float64')
10245  *         leaves_re = np.empty((self.num_leaves, self.ndim), 'float64')             # <<<<<<<<<<<<<<
10246  *         self._tree.consolidate_edges(&leaves_le[0,0], &leaves_re[0,0])
10247  *         return (leaves_le, leaves_re)
10248  */
10249   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error)
10250   __Pyx_GOTREF(__pyx_t_3);
10251   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error)
10252   __Pyx_GOTREF(__pyx_t_2);
10253   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10254   __pyx_t_3 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->num_leaves); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error)
10255   __Pyx_GOTREF(__pyx_t_3);
10256   __pyx_t_5 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 440, __pyx_L1_error)
10257   __Pyx_GOTREF(__pyx_t_5);
10258   __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 440, __pyx_L1_error)
10259   __Pyx_GOTREF(__pyx_t_4);
10260   __Pyx_GIVEREF(__pyx_t_3);
10261   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
10262   __Pyx_GIVEREF(__pyx_t_5);
10263   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
10264   __pyx_t_3 = 0;
10265   __pyx_t_5 = 0;
10266   __pyx_t_5 = NULL;
10267   __pyx_t_6 = 0;
10268   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
10269     __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
10270     if (likely(__pyx_t_5)) {
10271       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10272       __Pyx_INCREF(__pyx_t_5);
10273       __Pyx_INCREF(function);
10274       __Pyx_DECREF_SET(__pyx_t_2, function);
10275       __pyx_t_6 = 1;
10276     }
10277   }
10278   #if CYTHON_FAST_PYCALL
10279   if (PyFunction_Check(__pyx_t_2)) {
10280     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_n_s_float64};
10281     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error)
10282     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10283     __Pyx_GOTREF(__pyx_t_1);
10284     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
10285   } else
10286   #endif
10287   #if CYTHON_FAST_PYCCALL
10288   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
10289     PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_n_s_float64};
10290     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error)
10291     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10292     __Pyx_GOTREF(__pyx_t_1);
10293     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
10294   } else
10295   #endif
10296   {
10297     __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error)
10298     __Pyx_GOTREF(__pyx_t_3);
10299     if (__pyx_t_5) {
10300       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
10301     }
10302     __Pyx_GIVEREF(__pyx_t_4);
10303     PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_4);
10304     __Pyx_INCREF(__pyx_n_s_float64);
10305     __Pyx_GIVEREF(__pyx_n_s_float64);
10306     PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_n_s_float64);
10307     __pyx_t_4 = 0;
10308     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error)
10309     __Pyx_GOTREF(__pyx_t_1);
10310     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10311   }
10312   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10313   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 440, __pyx_L1_error)
10314   __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
10315   {
10316     __Pyx_BufFmt_StackElem __pyx_stack[1];
10317     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_leaves_re.rcbuffer->pybuffer);
10318     __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_leaves_re.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
10319     if (unlikely(__pyx_t_6 < 0)) {
10320       PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
10321       if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_leaves_re.rcbuffer->pybuffer, (PyObject*)__pyx_v_leaves_re, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
10322         Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
10323         __Pyx_RaiseBufferFallbackError();
10324       } else {
10325         PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
10326       }
10327       __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
10328     }
10329     __pyx_pybuffernd_leaves_re.diminfo[0].strides = __pyx_pybuffernd_leaves_re.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_leaves_re.diminfo[0].shape = __pyx_pybuffernd_leaves_re.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_leaves_re.diminfo[1].strides = __pyx_pybuffernd_leaves_re.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_leaves_re.diminfo[1].shape = __pyx_pybuffernd_leaves_re.rcbuffer->pybuffer.shape[1];
10330     if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 440, __pyx_L1_error)
10331   }
10332   __pyx_t_11 = 0;
10333   __pyx_v_leaves_re = ((PyArrayObject *)__pyx_t_1);
10334   __pyx_t_1 = 0;
10335 
10336   /* "yt/utilities/lib/cykdtree/kdtree.pyx":441
10337  *         leaves_le = np.empty((self.num_leaves, self.ndim), 'float64')
10338  *         leaves_re = np.empty((self.num_leaves, self.ndim), 'float64')
10339  *         self._tree.consolidate_edges(&leaves_le[0,0], &leaves_re[0,0])             # <<<<<<<<<<<<<<
10340  *         return (leaves_le, leaves_re)
10341  *
10342  */
10343   __pyx_t_12 = 0;
10344   __pyx_t_13 = 0;
10345   __pyx_t_6 = -1;
10346   if (__pyx_t_12 < 0) {
10347     __pyx_t_12 += __pyx_pybuffernd_leaves_le.diminfo[0].shape;
10348     if (unlikely(__pyx_t_12 < 0)) __pyx_t_6 = 0;
10349   } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_leaves_le.diminfo[0].shape)) __pyx_t_6 = 0;
10350   if (__pyx_t_13 < 0) {
10351     __pyx_t_13 += __pyx_pybuffernd_leaves_le.diminfo[1].shape;
10352     if (unlikely(__pyx_t_13 < 0)) __pyx_t_6 = 1;
10353   } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_leaves_le.diminfo[1].shape)) __pyx_t_6 = 1;
10354   if (unlikely(__pyx_t_6 != -1)) {
10355     __Pyx_RaiseBufferIndexError(__pyx_t_6);
10356     __PYX_ERR(0, 441, __pyx_L1_error)
10357   }
10358   __pyx_t_14 = 0;
10359   __pyx_t_15 = 0;
10360   __pyx_t_6 = -1;
10361   if (__pyx_t_14 < 0) {
10362     __pyx_t_14 += __pyx_pybuffernd_leaves_re.diminfo[0].shape;
10363     if (unlikely(__pyx_t_14 < 0)) __pyx_t_6 = 0;
10364   } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_leaves_re.diminfo[0].shape)) __pyx_t_6 = 0;
10365   if (__pyx_t_15 < 0) {
10366     __pyx_t_15 += __pyx_pybuffernd_leaves_re.diminfo[1].shape;
10367     if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 1;
10368   } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_leaves_re.diminfo[1].shape)) __pyx_t_6 = 1;
10369   if (unlikely(__pyx_t_6 != -1)) {
10370     __Pyx_RaiseBufferIndexError(__pyx_t_6);
10371     __PYX_ERR(0, 441, __pyx_L1_error)
10372   }
10373   __pyx_v_self->_tree->consolidate_edges((&(*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_leaves_le.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_leaves_le.diminfo[0].strides, __pyx_t_13, __pyx_pybuffernd_leaves_le.diminfo[1].strides))), (&(*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_leaves_re.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_leaves_re.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_leaves_re.diminfo[1].strides))));
10374 
10375   /* "yt/utilities/lib/cykdtree/kdtree.pyx":442
10376  *         leaves_re = np.empty((self.num_leaves, self.ndim), 'float64')
10377  *         self._tree.consolidate_edges(&leaves_le[0,0], &leaves_re[0,0])
10378  *         return (leaves_le, leaves_re)             # <<<<<<<<<<<<<<
10379  *
10380  *     def save(self, str filename):
10381  */
10382   __Pyx_XDECREF(__pyx_r);
10383   __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error)
10384   __Pyx_GOTREF(__pyx_t_1);
10385   __Pyx_INCREF(((PyObject *)__pyx_v_leaves_le));
10386   __Pyx_GIVEREF(((PyObject *)__pyx_v_leaves_le));
10387   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_leaves_le));
10388   __Pyx_INCREF(((PyObject *)__pyx_v_leaves_re));
10389   __Pyx_GIVEREF(((PyObject *)__pyx_v_leaves_re));
10390   PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_leaves_re));
10391   __pyx_r = __pyx_t_1;
10392   __pyx_t_1 = 0;
10393   goto __pyx_L0;
10394 
10395   /* "yt/utilities/lib/cykdtree/kdtree.pyx":427
10396  *         return self._get(pos)
10397  *
10398  *     def consolidate_edges(self):             # <<<<<<<<<<<<<<
10399  *         r"""Return arrays of the left and right edges for all leaves in the
10400  *         tree on each process.
10401  */
10402 
10403   /* function exit code */
10404   __pyx_L1_error:;
10405   __Pyx_XDECREF(__pyx_t_1);
10406   __Pyx_XDECREF(__pyx_t_2);
10407   __Pyx_XDECREF(__pyx_t_3);
10408   __Pyx_XDECREF(__pyx_t_4);
10409   __Pyx_XDECREF(__pyx_t_5);
10410   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
10411     __Pyx_PyThreadState_declare
10412     __Pyx_PyThreadState_assign
10413     __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
10414     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_leaves_le.rcbuffer->pybuffer);
10415     __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_leaves_re.rcbuffer->pybuffer);
10416   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
10417   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.consolidate_edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
10418   __pyx_r = NULL;
10419   goto __pyx_L2;
10420   __pyx_L0:;
10421   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_leaves_le.rcbuffer->pybuffer);
10422   __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_leaves_re.rcbuffer->pybuffer);
10423   __pyx_L2:;
10424   __Pyx_XDECREF((PyObject *)__pyx_v_leaves_le);
10425   __Pyx_XDECREF((PyObject *)__pyx_v_leaves_re);
10426   __Pyx_XGIVEREF(__pyx_r);
10427   __Pyx_RefNannyFinishContext();
10428   return __pyx_r;
10429 }
10430 
10431 /* "yt/utilities/lib/cykdtree/kdtree.pyx":444
10432  *         return (leaves_le, leaves_re)
10433  *
10434  *     def save(self, str filename):             # <<<<<<<<<<<<<<
10435  *         r"""Saves the PyKDTree to disk as raw binary data.
10436  *
10437  */
10438 
10439 /* Python wrapper */
10440 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_17save(PyObject *__pyx_v_self, PyObject *__pyx_v_filename); /*proto*/
10441 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_16save[] = "Saves the PyKDTree to disk as raw binary data.\n\n        Note that this file may not necessarily be portable.\n\n        Args:\n            filename (string): Name of the file to serialize the kdtree to\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_17save(PyObject * __pyx_v_self,PyObject * __pyx_v_filename)10442 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_17save(PyObject *__pyx_v_self, PyObject *__pyx_v_filename) {
10443   PyObject *__pyx_r = 0;
10444   __Pyx_RefNannyDeclarations
10445   __Pyx_RefNannySetupContext("save (wrapper)", 0);
10446   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyString_Type), 1, "filename", 1))) __PYX_ERR(0, 444, __pyx_L1_error)
10447   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_16save(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), ((PyObject*)__pyx_v_filename));
10448 
10449   /* function exit code */
10450   goto __pyx_L0;
10451   __pyx_L1_error:;
10452   __pyx_r = NULL;
10453   __pyx_L0:;
10454   __Pyx_RefNannyFinishContext();
10455   return __pyx_r;
10456 }
10457 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_16save(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,PyObject * __pyx_v_filename)10458 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_16save(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, PyObject *__pyx_v_filename) {
10459   KDTree *__pyx_v_my_tree;
10460   std::ofstream *__pyx_v_outputter;
10461   PyObject *__pyx_r = NULL;
10462   __Pyx_RefNannyDeclarations
10463   KDTree *__pyx_t_1;
10464   PyObject *__pyx_t_2 = NULL;
10465   char const *__pyx_t_3;
10466   std::ofstream *__pyx_t_4;
10467   __Pyx_RefNannySetupContext("save", 0);
10468 
10469   /* "yt/utilities/lib/cykdtree/kdtree.pyx":453
10470  *
10471  *         """
10472  *         cdef KDTree* my_tree = self._tree             # <<<<<<<<<<<<<<
10473  *         cdef ofstream* outputter = new ofstream(filename.encode('utf8'), binary)
10474  *         try:
10475  */
10476   __pyx_t_1 = __pyx_v_self->_tree;
10477   __pyx_v_my_tree = __pyx_t_1;
10478 
10479   /* "yt/utilities/lib/cykdtree/kdtree.pyx":454
10480  *         """
10481  *         cdef KDTree* my_tree = self._tree
10482  *         cdef ofstream* outputter = new ofstream(filename.encode('utf8'), binary)             # <<<<<<<<<<<<<<
10483  *         try:
10484  *             my_tree.serialize(dereference(outputter))
10485  */
10486   __pyx_t_2 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyString_Type_encode, __pyx_v_filename, __pyx_n_s_utf8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 454, __pyx_L1_error)
10487   __Pyx_GOTREF(__pyx_t_2);
10488   __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 454, __pyx_L1_error)
10489   try {
10490     __pyx_t_4 = new std::ofstream(__pyx_t_3, std::ios_base::binary);
10491   } catch(...) {
10492     __Pyx_CppExn2PyErr();
10493     __PYX_ERR(0, 454, __pyx_L1_error)
10494   }
10495   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10496   __pyx_v_outputter = __pyx_t_4;
10497 
10498   /* "yt/utilities/lib/cykdtree/kdtree.pyx":455
10499  *         cdef KDTree* my_tree = self._tree
10500  *         cdef ofstream* outputter = new ofstream(filename.encode('utf8'), binary)
10501  *         try:             # <<<<<<<<<<<<<<
10502  *             my_tree.serialize(dereference(outputter))
10503  *         finally:
10504  */
10505   /*try:*/ {
10506 
10507     /* "yt/utilities/lib/cykdtree/kdtree.pyx":456
10508  *         cdef ofstream* outputter = new ofstream(filename.encode('utf8'), binary)
10509  *         try:
10510  *             my_tree.serialize(dereference(outputter))             # <<<<<<<<<<<<<<
10511  *         finally:
10512  *             del outputter
10513  */
10514     __pyx_v_my_tree->serialize((*__pyx_v_outputter));
10515   }
10516 
10517   /* "yt/utilities/lib/cykdtree/kdtree.pyx":458
10518  *             my_tree.serialize(dereference(outputter))
10519  *         finally:
10520  *             del outputter             # <<<<<<<<<<<<<<
10521  *
10522  *     @classmethod
10523  */
10524   /*finally:*/ {
10525     /*normal exit:*/{
10526       delete __pyx_v_outputter;
10527       goto __pyx_L5;
10528     }
10529     __pyx_L5:;
10530   }
10531 
10532   /* "yt/utilities/lib/cykdtree/kdtree.pyx":444
10533  *         return (leaves_le, leaves_re)
10534  *
10535  *     def save(self, str filename):             # <<<<<<<<<<<<<<
10536  *         r"""Saves the PyKDTree to disk as raw binary data.
10537  *
10538  */
10539 
10540   /* function exit code */
10541   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
10542   goto __pyx_L0;
10543   __pyx_L1_error:;
10544   __Pyx_XDECREF(__pyx_t_2);
10545   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.save", __pyx_clineno, __pyx_lineno, __pyx_filename);
10546   __pyx_r = NULL;
10547   __pyx_L0:;
10548   __Pyx_XGIVEREF(__pyx_r);
10549   __Pyx_RefNannyFinishContext();
10550   return __pyx_r;
10551 }
10552 
10553 /* "yt/utilities/lib/cykdtree/kdtree.pyx":461
10554  *
10555  *     @classmethod
10556  *     def from_file(cls, str filename, data_version=None):             # <<<<<<<<<<<<<<
10557  *         r"""Create a PyKDTree from a binary file created by ``PyKDTree.save()``
10558  *
10559  */
10560 
10561 /* Python wrapper */
10562 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_19from_file(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
10563 static char __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_18from_file[] = "Create a PyKDTree from a binary file created by ``PyKDTree.save()``\n\n        Note that loading a file created on another machine may create\n        a corrupted PyKDTree instance.\n\n        Args:\n            filename (string): Name of the file to load the kdtree from\n            data_version (int): A unique integer corresponding to the data\n                                being loaded. If the loaded data_version does\n                                not match the data_version supplied here then\n                                an OSError is raised. Optional.\n\n        Returns:\n            :class:`cykdtree.PyKDTree`: A KDTree restored from the file\n\n        ";
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_19from_file(PyObject * __pyx_v_cls,PyObject * __pyx_args,PyObject * __pyx_kwds)10564 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_19from_file(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
10565   PyObject *__pyx_v_filename = 0;
10566   PyObject *__pyx_v_data_version = 0;
10567   PyObject *__pyx_r = 0;
10568   __Pyx_RefNannyDeclarations
10569   __Pyx_RefNannySetupContext("from_file (wrapper)", 0);
10570   {
10571     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_data_version,0};
10572     PyObject* values[2] = {0,0};
10573     values[1] = ((PyObject *)Py_None);
10574     if (unlikely(__pyx_kwds)) {
10575       Py_ssize_t kw_args;
10576       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
10577       switch (pos_args) {
10578         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10579         CYTHON_FALLTHROUGH;
10580         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10581         CYTHON_FALLTHROUGH;
10582         case  0: break;
10583         default: goto __pyx_L5_argtuple_error;
10584       }
10585       kw_args = PyDict_Size(__pyx_kwds);
10586       switch (pos_args) {
10587         case  0:
10588         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
10589         else goto __pyx_L5_argtuple_error;
10590         CYTHON_FALLTHROUGH;
10591         case  1:
10592         if (kw_args > 0) {
10593           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data_version);
10594           if (value) { values[1] = value; kw_args--; }
10595         }
10596       }
10597       if (unlikely(kw_args > 0)) {
10598         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "from_file") < 0)) __PYX_ERR(0, 461, __pyx_L3_error)
10599       }
10600     } else {
10601       switch (PyTuple_GET_SIZE(__pyx_args)) {
10602         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10603         CYTHON_FALLTHROUGH;
10604         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10605         break;
10606         default: goto __pyx_L5_argtuple_error;
10607       }
10608     }
10609     __pyx_v_filename = ((PyObject*)values[0]);
10610     __pyx_v_data_version = values[1];
10611   }
10612   goto __pyx_L4_argument_unpacking_done;
10613   __pyx_L5_argtuple_error:;
10614   __Pyx_RaiseArgtupleInvalid("from_file", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 461, __pyx_L3_error)
10615   __pyx_L3_error:;
10616   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.from_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
10617   __Pyx_RefNannyFinishContext();
10618   return NULL;
10619   __pyx_L4_argument_unpacking_done:;
10620   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filename), (&PyString_Type), 1, "filename", 1))) __PYX_ERR(0, 461, __pyx_L1_error)
10621   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_18from_file(((PyTypeObject*)__pyx_v_cls), __pyx_v_filename, __pyx_v_data_version);
10622 
10623   /* function exit code */
10624   goto __pyx_L0;
10625   __pyx_L1_error:;
10626   __pyx_r = NULL;
10627   __pyx_L0:;
10628   __Pyx_RefNannyFinishContext();
10629   return __pyx_r;
10630 }
10631 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_18from_file(PyTypeObject * __pyx_v_cls,PyObject * __pyx_v_filename,PyObject * __pyx_v_data_version)10632 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_18from_file(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_filename, PyObject *__pyx_v_data_version) {
10633   std::ifstream *__pyx_v_inputter;
10634   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_ret = 0;
10635   PyObject *__pyx_r = NULL;
10636   __Pyx_RefNannyDeclarations
10637   PyObject *__pyx_t_1 = NULL;
10638   char const *__pyx_t_2;
10639   std::ifstream *__pyx_t_3;
10640   int __pyx_t_4;
10641   int __pyx_t_5;
10642   __Pyx_RefNannySetupContext("from_file", 0);
10643   __Pyx_INCREF(__pyx_v_data_version);
10644 
10645   /* "yt/utilities/lib/cykdtree/kdtree.pyx":478
10646  *
10647  *         """
10648  *         cdef ifstream* inputter = new ifstream(filename.encode(), binary)             # <<<<<<<<<<<<<<
10649  *         cdef PyKDTree ret = cls()
10650  *         if data_version is None:
10651  */
10652   __pyx_t_1 = __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyString_Type_encode, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 478, __pyx_L1_error)
10653   __Pyx_GOTREF(__pyx_t_1);
10654   __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error)
10655   try {
10656     __pyx_t_3 = new std::ifstream(__pyx_t_2, std::ios_base::binary);
10657   } catch(...) {
10658     __Pyx_CppExn2PyErr();
10659     __PYX_ERR(0, 478, __pyx_L1_error)
10660   }
10661   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10662   __pyx_v_inputter = __pyx_t_3;
10663 
10664   /* "yt/utilities/lib/cykdtree/kdtree.pyx":479
10665  *         """
10666  *         cdef ifstream* inputter = new ifstream(filename.encode(), binary)
10667  *         cdef PyKDTree ret = cls()             # <<<<<<<<<<<<<<
10668  *         if data_version is None:
10669  *             data_version = 0
10670  */
10671   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error)
10672   __Pyx_GOTREF(__pyx_t_1);
10673   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree))))) __PYX_ERR(0, 479, __pyx_L1_error)
10674   __pyx_v_ret = ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_t_1);
10675   __pyx_t_1 = 0;
10676 
10677   /* "yt/utilities/lib/cykdtree/kdtree.pyx":480
10678  *         cdef ifstream* inputter = new ifstream(filename.encode(), binary)
10679  *         cdef PyKDTree ret = cls()
10680  *         if data_version is None:             # <<<<<<<<<<<<<<
10681  *             data_version = 0
10682  *         try:
10683  */
10684   __pyx_t_4 = (__pyx_v_data_version == Py_None);
10685   __pyx_t_5 = (__pyx_t_4 != 0);
10686   if (__pyx_t_5) {
10687 
10688     /* "yt/utilities/lib/cykdtree/kdtree.pyx":481
10689  *         cdef PyKDTree ret = cls()
10690  *         if data_version is None:
10691  *             data_version = 0             # <<<<<<<<<<<<<<
10692  *         try:
10693  *             ret._init_tree(new KDTree(dereference(inputter)))
10694  */
10695     __Pyx_INCREF(__pyx_int_0);
10696     __Pyx_DECREF_SET(__pyx_v_data_version, __pyx_int_0);
10697 
10698     /* "yt/utilities/lib/cykdtree/kdtree.pyx":480
10699  *         cdef ifstream* inputter = new ifstream(filename.encode(), binary)
10700  *         cdef PyKDTree ret = cls()
10701  *         if data_version is None:             # <<<<<<<<<<<<<<
10702  *             data_version = 0
10703  *         try:
10704  */
10705   }
10706 
10707   /* "yt/utilities/lib/cykdtree/kdtree.pyx":482
10708  *         if data_version is None:
10709  *             data_version = 0
10710  *         try:             # <<<<<<<<<<<<<<
10711  *             ret._init_tree(new KDTree(dereference(inputter)))
10712  *         finally:
10713  */
10714   /*try:*/ {
10715 
10716     /* "yt/utilities/lib/cykdtree/kdtree.pyx":483
10717  *             data_version = 0
10718  *         try:
10719  *             ret._init_tree(new KDTree(dereference(inputter)))             # <<<<<<<<<<<<<<
10720  *         finally:
10721  *             del inputter
10722  */
10723     ((struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_ret->__pyx_vtab)->_init_tree(__pyx_v_ret, new KDTree((*__pyx_v_inputter)));
10724   }
10725 
10726   /* "yt/utilities/lib/cykdtree/kdtree.pyx":485
10727  *             ret._init_tree(new KDTree(dereference(inputter)))
10728  *         finally:
10729  *             del inputter             # <<<<<<<<<<<<<<
10730  *         return ret
10731  */
10732   /*finally:*/ {
10733     /*normal exit:*/{
10734       delete __pyx_v_inputter;
10735       goto __pyx_L6;
10736     }
10737     __pyx_L6:;
10738   }
10739 
10740   /* "yt/utilities/lib/cykdtree/kdtree.pyx":486
10741  *         finally:
10742  *             del inputter
10743  *         return ret             # <<<<<<<<<<<<<<
10744  */
10745   __Pyx_XDECREF(__pyx_r);
10746   __Pyx_INCREF(((PyObject *)__pyx_v_ret));
10747   __pyx_r = ((PyObject *)__pyx_v_ret);
10748   goto __pyx_L0;
10749 
10750   /* "yt/utilities/lib/cykdtree/kdtree.pyx":461
10751  *
10752  *     @classmethod
10753  *     def from_file(cls, str filename, data_version=None):             # <<<<<<<<<<<<<<
10754  *         r"""Create a PyKDTree from a binary file created by ``PyKDTree.save()``
10755  *
10756  */
10757 
10758   /* function exit code */
10759   __pyx_L1_error:;
10760   __Pyx_XDECREF(__pyx_t_1);
10761   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.from_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
10762   __pyx_r = NULL;
10763   __pyx_L0:;
10764   __Pyx_XDECREF((PyObject *)__pyx_v_ret);
10765   __Pyx_XDECREF(__pyx_v_data_version);
10766   __Pyx_XGIVEREF(__pyx_r);
10767   __Pyx_RefNannyFinishContext();
10768   return __pyx_r;
10769 }
10770 
10771 /* "yt/utilities/lib/cykdtree/kdtree.pxd":103
10772  * cdef class PyKDTree:
10773  *     cdef KDTree *_tree
10774  *     cdef readonly uint64_t npts             # <<<<<<<<<<<<<<
10775  *     cdef readonly uint32_t ndim
10776  *     cdef readonly uint32_t num_leaves
10777  */
10778 
10779 /* Python wrapper */
10780 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts_1__get__(PyObject * __pyx_v_self)10781 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts_1__get__(PyObject *__pyx_v_self) {
10782   PyObject *__pyx_r = 0;
10783   __Pyx_RefNannyDeclarations
10784   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
10785   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
10786 
10787   /* function exit code */
10788   __Pyx_RefNannyFinishContext();
10789   return __pyx_r;
10790 }
10791 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)10792 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
10793   PyObject *__pyx_r = NULL;
10794   __Pyx_RefNannyDeclarations
10795   PyObject *__pyx_t_1 = NULL;
10796   __Pyx_RefNannySetupContext("__get__", 0);
10797   __Pyx_XDECREF(__pyx_r);
10798   __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->npts); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 103, __pyx_L1_error)
10799   __Pyx_GOTREF(__pyx_t_1);
10800   __pyx_r = __pyx_t_1;
10801   __pyx_t_1 = 0;
10802   goto __pyx_L0;
10803 
10804   /* function exit code */
10805   __pyx_L1_error:;
10806   __Pyx_XDECREF(__pyx_t_1);
10807   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.npts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10808   __pyx_r = NULL;
10809   __pyx_L0:;
10810   __Pyx_XGIVEREF(__pyx_r);
10811   __Pyx_RefNannyFinishContext();
10812   return __pyx_r;
10813 }
10814 
10815 /* "yt/utilities/lib/cykdtree/kdtree.pxd":104
10816  *     cdef KDTree *_tree
10817  *     cdef readonly uint64_t npts
10818  *     cdef readonly uint32_t ndim             # <<<<<<<<<<<<<<
10819  *     cdef readonly uint32_t num_leaves
10820  *     cdef readonly uint32_t leafsize
10821  */
10822 
10823 /* Python wrapper */
10824 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim_1__get__(PyObject * __pyx_v_self)10825 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim_1__get__(PyObject *__pyx_v_self) {
10826   PyObject *__pyx_r = 0;
10827   __Pyx_RefNannyDeclarations
10828   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
10829   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
10830 
10831   /* function exit code */
10832   __Pyx_RefNannyFinishContext();
10833   return __pyx_r;
10834 }
10835 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)10836 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
10837   PyObject *__pyx_r = NULL;
10838   __Pyx_RefNannyDeclarations
10839   PyObject *__pyx_t_1 = NULL;
10840   __Pyx_RefNannySetupContext("__get__", 0);
10841   __Pyx_XDECREF(__pyx_r);
10842   __pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 104, __pyx_L1_error)
10843   __Pyx_GOTREF(__pyx_t_1);
10844   __pyx_r = __pyx_t_1;
10845   __pyx_t_1 = 0;
10846   goto __pyx_L0;
10847 
10848   /* function exit code */
10849   __pyx_L1_error:;
10850   __Pyx_XDECREF(__pyx_t_1);
10851   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10852   __pyx_r = NULL;
10853   __pyx_L0:;
10854   __Pyx_XGIVEREF(__pyx_r);
10855   __Pyx_RefNannyFinishContext();
10856   return __pyx_r;
10857 }
10858 
10859 /* "yt/utilities/lib/cykdtree/kdtree.pxd":105
10860  *     cdef readonly uint64_t npts
10861  *     cdef readonly uint32_t ndim
10862  *     cdef readonly uint32_t num_leaves             # <<<<<<<<<<<<<<
10863  *     cdef readonly uint32_t leafsize
10864  *     cdef readonly int64_t data_version
10865  */
10866 
10867 /* Python wrapper */
10868 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves_1__get__(PyObject * __pyx_v_self)10869 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves_1__get__(PyObject *__pyx_v_self) {
10870   PyObject *__pyx_r = 0;
10871   __Pyx_RefNannyDeclarations
10872   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
10873   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
10874 
10875   /* function exit code */
10876   __Pyx_RefNannyFinishContext();
10877   return __pyx_r;
10878 }
10879 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)10880 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
10881   PyObject *__pyx_r = NULL;
10882   __Pyx_RefNannyDeclarations
10883   PyObject *__pyx_t_1 = NULL;
10884   __Pyx_RefNannySetupContext("__get__", 0);
10885   __Pyx_XDECREF(__pyx_r);
10886   __pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->num_leaves); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 105, __pyx_L1_error)
10887   __Pyx_GOTREF(__pyx_t_1);
10888   __pyx_r = __pyx_t_1;
10889   __pyx_t_1 = 0;
10890   goto __pyx_L0;
10891 
10892   /* function exit code */
10893   __pyx_L1_error:;
10894   __Pyx_XDECREF(__pyx_t_1);
10895   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.num_leaves.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10896   __pyx_r = NULL;
10897   __pyx_L0:;
10898   __Pyx_XGIVEREF(__pyx_r);
10899   __Pyx_RefNannyFinishContext();
10900   return __pyx_r;
10901 }
10902 
10903 /* "yt/utilities/lib/cykdtree/kdtree.pxd":106
10904  *     cdef readonly uint32_t ndim
10905  *     cdef readonly uint32_t num_leaves
10906  *     cdef readonly uint32_t leafsize             # <<<<<<<<<<<<<<
10907  *     cdef readonly int64_t data_version
10908  *     cdef double *_left_edge
10909  */
10910 
10911 /* Python wrapper */
10912 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize_1__get__(PyObject * __pyx_v_self)10913 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize_1__get__(PyObject *__pyx_v_self) {
10914   PyObject *__pyx_r = 0;
10915   __Pyx_RefNannyDeclarations
10916   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
10917   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
10918 
10919   /* function exit code */
10920   __Pyx_RefNannyFinishContext();
10921   return __pyx_r;
10922 }
10923 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)10924 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
10925   PyObject *__pyx_r = NULL;
10926   __Pyx_RefNannyDeclarations
10927   PyObject *__pyx_t_1 = NULL;
10928   __Pyx_RefNannySetupContext("__get__", 0);
10929   __Pyx_XDECREF(__pyx_r);
10930   __pyx_t_1 = __Pyx_PyInt_From_uint32_t(__pyx_v_self->leafsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 106, __pyx_L1_error)
10931   __Pyx_GOTREF(__pyx_t_1);
10932   __pyx_r = __pyx_t_1;
10933   __pyx_t_1 = 0;
10934   goto __pyx_L0;
10935 
10936   /* function exit code */
10937   __pyx_L1_error:;
10938   __Pyx_XDECREF(__pyx_t_1);
10939   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.leafsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10940   __pyx_r = NULL;
10941   __pyx_L0:;
10942   __Pyx_XGIVEREF(__pyx_r);
10943   __Pyx_RefNannyFinishContext();
10944   return __pyx_r;
10945 }
10946 
10947 /* "yt/utilities/lib/cykdtree/kdtree.pxd":107
10948  *     cdef readonly uint32_t num_leaves
10949  *     cdef readonly uint32_t leafsize
10950  *     cdef readonly int64_t data_version             # <<<<<<<<<<<<<<
10951  *     cdef double *_left_edge
10952  *     cdef double *_right_edge
10953  */
10954 
10955 /* Python wrapper */
10956 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version_1__get__(PyObject * __pyx_v_self)10957 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version_1__get__(PyObject *__pyx_v_self) {
10958   PyObject *__pyx_r = 0;
10959   __Pyx_RefNannyDeclarations
10960   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
10961   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
10962 
10963   /* function exit code */
10964   __Pyx_RefNannyFinishContext();
10965   return __pyx_r;
10966 }
10967 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)10968 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
10969   PyObject *__pyx_r = NULL;
10970   __Pyx_RefNannyDeclarations
10971   PyObject *__pyx_t_1 = NULL;
10972   __Pyx_RefNannySetupContext("__get__", 0);
10973   __Pyx_XDECREF(__pyx_r);
10974   __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_v_self->data_version); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 107, __pyx_L1_error)
10975   __Pyx_GOTREF(__pyx_t_1);
10976   __pyx_r = __pyx_t_1;
10977   __pyx_t_1 = 0;
10978   goto __pyx_L0;
10979 
10980   /* function exit code */
10981   __pyx_L1_error:;
10982   __Pyx_XDECREF(__pyx_t_1);
10983   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.data_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10984   __pyx_r = NULL;
10985   __pyx_L0:;
10986   __Pyx_XGIVEREF(__pyx_r);
10987   __Pyx_RefNannyFinishContext();
10988   return __pyx_r;
10989 }
10990 
10991 /* "yt/utilities/lib/cykdtree/kdtree.pxd":111
10992  *     cdef double *_right_edge
10993  *     cdef bool *_periodic
10994  *     cdef readonly object leaves             # <<<<<<<<<<<<<<
10995  *     cdef readonly object _idx
10996  *     cdef void _init_tree(self, KDTree* tree)
10997  */
10998 
10999 /* Python wrapper */
11000 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves_1__get__(PyObject * __pyx_v_self)11001 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves_1__get__(PyObject *__pyx_v_self) {
11002   PyObject *__pyx_r = 0;
11003   __Pyx_RefNannyDeclarations
11004   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
11005   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
11006 
11007   /* function exit code */
11008   __Pyx_RefNannyFinishContext();
11009   return __pyx_r;
11010 }
11011 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)11012 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
11013   PyObject *__pyx_r = NULL;
11014   __Pyx_RefNannyDeclarations
11015   __Pyx_RefNannySetupContext("__get__", 0);
11016   __Pyx_XDECREF(__pyx_r);
11017   __Pyx_INCREF(__pyx_v_self->leaves);
11018   __pyx_r = __pyx_v_self->leaves;
11019   goto __pyx_L0;
11020 
11021   /* function exit code */
11022   __pyx_L0:;
11023   __Pyx_XGIVEREF(__pyx_r);
11024   __Pyx_RefNannyFinishContext();
11025   return __pyx_r;
11026 }
11027 
11028 /* "yt/utilities/lib/cykdtree/kdtree.pxd":112
11029  *     cdef bool *_periodic
11030  *     cdef readonly object leaves
11031  *     cdef readonly object _idx             # <<<<<<<<<<<<<<
11032  *     cdef void _init_tree(self, KDTree* tree)
11033  *     cdef void _make_tree(self, double *pts, bool use_sliding_midpoint)
11034  */
11035 
11036 /* Python wrapper */
11037 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx_1__get__(PyObject * __pyx_v_self)11038 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx_1__get__(PyObject *__pyx_v_self) {
11039   PyObject *__pyx_r = 0;
11040   __Pyx_RefNannyDeclarations
11041   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
11042   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx___get__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
11043 
11044   /* function exit code */
11045   __Pyx_RefNannyFinishContext();
11046   return __pyx_r;
11047 }
11048 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)11049 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx___get__(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
11050   PyObject *__pyx_r = NULL;
11051   __Pyx_RefNannyDeclarations
11052   __Pyx_RefNannySetupContext("__get__", 0);
11053   __Pyx_XDECREF(__pyx_r);
11054   __Pyx_INCREF(__pyx_v_self->_idx);
11055   __pyx_r = __pyx_v_self->_idx;
11056   goto __pyx_L0;
11057 
11058   /* function exit code */
11059   __pyx_L0:;
11060   __Pyx_XGIVEREF(__pyx_r);
11061   __Pyx_RefNannyFinishContext();
11062   return __pyx_r;
11063 }
11064 
11065 /* "(tree fragment)":1
11066  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
11067  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11068  * def __setstate_cython__(self, __pyx_state):
11069  */
11070 
11071 /* Python wrapper */
11072 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_21__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_21__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)11073 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_21__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
11074   PyObject *__pyx_r = 0;
11075   __Pyx_RefNannyDeclarations
11076   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
11077   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_20__reduce_cython__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self));
11078 
11079   /* function exit code */
11080   __Pyx_RefNannyFinishContext();
11081   return __pyx_r;
11082 }
11083 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self)11084 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self) {
11085   PyObject *__pyx_r = NULL;
11086   __Pyx_RefNannyDeclarations
11087   PyObject *__pyx_t_1 = NULL;
11088   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
11089 
11090   /* "(tree fragment)":2
11091  * def __reduce_cython__(self):
11092  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
11093  * def __setstate_cython__(self, __pyx_state):
11094  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11095  */
11096   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
11097   __Pyx_GOTREF(__pyx_t_1);
11098   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11099   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11100   __PYX_ERR(1, 2, __pyx_L1_error)
11101 
11102   /* "(tree fragment)":1
11103  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
11104  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11105  * def __setstate_cython__(self, __pyx_state):
11106  */
11107 
11108   /* function exit code */
11109   __pyx_L1_error:;
11110   __Pyx_XDECREF(__pyx_t_1);
11111   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11112   __pyx_r = NULL;
11113   __Pyx_XGIVEREF(__pyx_r);
11114   __Pyx_RefNannyFinishContext();
11115   return __pyx_r;
11116 }
11117 
11118 /* "(tree fragment)":3
11119  * def __reduce_cython__(self):
11120  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11121  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
11122  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11123  */
11124 
11125 /* Python wrapper */
11126 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_23__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_23__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)11127 static PyObject *__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_23__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
11128   PyObject *__pyx_r = 0;
11129   __Pyx_RefNannyDeclarations
11130   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
11131   __pyx_r = __pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_22__setstate_cython__(((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
11132 
11133   /* function exit code */
11134   __Pyx_RefNannyFinishContext();
11135   return __pyx_r;
11136 }
11137 
__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)11138 static PyObject *__pyx_pf_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
11139   PyObject *__pyx_r = NULL;
11140   __Pyx_RefNannyDeclarations
11141   PyObject *__pyx_t_1 = NULL;
11142   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
11143 
11144   /* "(tree fragment)":4
11145  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11146  * def __setstate_cython__(self, __pyx_state):
11147  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
11148  */
11149   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
11150   __Pyx_GOTREF(__pyx_t_1);
11151   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11152   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11153   __PYX_ERR(1, 4, __pyx_L1_error)
11154 
11155   /* "(tree fragment)":3
11156  * def __reduce_cython__(self):
11157  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11158  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
11159  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
11160  */
11161 
11162   /* function exit code */
11163   __pyx_L1_error:;
11164   __Pyx_XDECREF(__pyx_t_1);
11165   __Pyx_AddTraceback("yt.utilities.lib.cykdtree.kdtree.PyKDTree.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11166   __pyx_r = NULL;
11167   __Pyx_XGIVEREF(__pyx_r);
11168   __Pyx_RefNannyFinishContext();
11169   return __pyx_r;
11170 }
11171 
11172 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258
11173  *         # experimental exception made for __getbuffer__ and __releasebuffer__
11174  *         # -- the details of this may change.
11175  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
11176  *             # This implementation of getbuffer is geared towards Cython
11177  *             # requirements, and does not yet fulfill the PEP.
11178  */
11179 
11180 /* Python wrapper */
11181 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)11182 static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
11183   int __pyx_r;
11184   __Pyx_RefNannyDeclarations
11185   __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
11186   __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
11187 
11188   /* function exit code */
11189   __Pyx_RefNannyFinishContext();
11190   return __pyx_r;
11191 }
11192 
__pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)11193 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
11194   int __pyx_v_i;
11195   int __pyx_v_ndim;
11196   int __pyx_v_endian_detector;
11197   int __pyx_v_little_endian;
11198   int __pyx_v_t;
11199   char *__pyx_v_f;
11200   PyArray_Descr *__pyx_v_descr = 0;
11201   int __pyx_v_offset;
11202   int __pyx_r;
11203   __Pyx_RefNannyDeclarations
11204   int __pyx_t_1;
11205   int __pyx_t_2;
11206   PyObject *__pyx_t_3 = NULL;
11207   int __pyx_t_4;
11208   int __pyx_t_5;
11209   int __pyx_t_6;
11210   PyArray_Descr *__pyx_t_7;
11211   PyObject *__pyx_t_8 = NULL;
11212   char *__pyx_t_9;
11213   if (__pyx_v_info == NULL) {
11214     PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
11215     return -1;
11216   }
11217   __Pyx_RefNannySetupContext("__getbuffer__", 0);
11218   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
11219   __Pyx_GIVEREF(__pyx_v_info->obj);
11220 
11221   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265
11222  *
11223  *             cdef int i, ndim
11224  *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
11225  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
11226  *
11227  */
11228   __pyx_v_endian_detector = 1;
11229 
11230   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266
11231  *             cdef int i, ndim
11232  *             cdef int endian_detector = 1
11233  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
11234  *
11235  *             ndim = PyArray_NDIM(self)
11236  */
11237   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
11238 
11239   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268
11240  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
11241  *
11242  *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
11243  *
11244  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
11245  */
11246   __pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
11247 
11248   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270
11249  *             ndim = PyArray_NDIM(self)
11250  *
11251  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
11252  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
11253  *                 raise ValueError(u"ndarray is not C contiguous")
11254  */
11255   __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
11256   if (__pyx_t_2) {
11257   } else {
11258     __pyx_t_1 = __pyx_t_2;
11259     goto __pyx_L4_bool_binop_done;
11260   }
11261 
11262   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271
11263  *
11264  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
11265  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
11266  *                 raise ValueError(u"ndarray is not C contiguous")
11267  *
11268  */
11269   __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
11270   __pyx_t_1 = __pyx_t_2;
11271   __pyx_L4_bool_binop_done:;
11272 
11273   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270
11274  *             ndim = PyArray_NDIM(self)
11275  *
11276  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
11277  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
11278  *                 raise ValueError(u"ndarray is not C contiguous")
11279  */
11280   if (unlikely(__pyx_t_1)) {
11281 
11282     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272
11283  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
11284  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
11285  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
11286  *
11287  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
11288  */
11289     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 272, __pyx_L1_error)
11290     __Pyx_GOTREF(__pyx_t_3);
11291     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
11292     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11293     __PYX_ERR(3, 272, __pyx_L1_error)
11294 
11295     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270
11296  *             ndim = PyArray_NDIM(self)
11297  *
11298  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
11299  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
11300  *                 raise ValueError(u"ndarray is not C contiguous")
11301  */
11302   }
11303 
11304   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274
11305  *                 raise ValueError(u"ndarray is not C contiguous")
11306  *
11307  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
11308  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
11309  *                 raise ValueError(u"ndarray is not Fortran contiguous")
11310  */
11311   __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
11312   if (__pyx_t_2) {
11313   } else {
11314     __pyx_t_1 = __pyx_t_2;
11315     goto __pyx_L7_bool_binop_done;
11316   }
11317 
11318   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275
11319  *
11320  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
11321  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
11322  *                 raise ValueError(u"ndarray is not Fortran contiguous")
11323  *
11324  */
11325   __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
11326   __pyx_t_1 = __pyx_t_2;
11327   __pyx_L7_bool_binop_done:;
11328 
11329   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274
11330  *                 raise ValueError(u"ndarray is not C contiguous")
11331  *
11332  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
11333  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
11334  *                 raise ValueError(u"ndarray is not Fortran contiguous")
11335  */
11336   if (unlikely(__pyx_t_1)) {
11337 
11338     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276
11339  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
11340  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
11341  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
11342  *
11343  *             info.buf = PyArray_DATA(self)
11344  */
11345     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 276, __pyx_L1_error)
11346     __Pyx_GOTREF(__pyx_t_3);
11347     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
11348     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11349     __PYX_ERR(3, 276, __pyx_L1_error)
11350 
11351     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274
11352  *                 raise ValueError(u"ndarray is not C contiguous")
11353  *
11354  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
11355  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
11356  *                 raise ValueError(u"ndarray is not Fortran contiguous")
11357  */
11358   }
11359 
11360   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278
11361  *                 raise ValueError(u"ndarray is not Fortran contiguous")
11362  *
11363  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
11364  *             info.ndim = ndim
11365  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
11366  */
11367   __pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
11368 
11369   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279
11370  *
11371  *             info.buf = PyArray_DATA(self)
11372  *             info.ndim = ndim             # <<<<<<<<<<<<<<
11373  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
11374  *                 # Allocate new buffer for strides and shape info.
11375  */
11376   __pyx_v_info->ndim = __pyx_v_ndim;
11377 
11378   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280
11379  *             info.buf = PyArray_DATA(self)
11380  *             info.ndim = ndim
11381  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
11382  *                 # Allocate new buffer for strides and shape info.
11383  *                 # This is allocated as one block, strides first.
11384  */
11385   __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
11386   if (__pyx_t_1) {
11387 
11388     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283
11389  *                 # Allocate new buffer for strides and shape info.
11390  *                 # This is allocated as one block, strides first.
11391  *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)             # <<<<<<<<<<<<<<
11392  *                 info.shape = info.strides + ndim
11393  *                 for i in range(ndim):
11394  */
11395     __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
11396 
11397     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284
11398  *                 # This is allocated as one block, strides first.
11399  *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
11400  *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
11401  *                 for i in range(ndim):
11402  *                     info.strides[i] = PyArray_STRIDES(self)[i]
11403  */
11404     __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
11405 
11406     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285
11407  *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
11408  *                 info.shape = info.strides + ndim
11409  *                 for i in range(ndim):             # <<<<<<<<<<<<<<
11410  *                     info.strides[i] = PyArray_STRIDES(self)[i]
11411  *                     info.shape[i] = PyArray_DIMS(self)[i]
11412  */
11413     __pyx_t_4 = __pyx_v_ndim;
11414     __pyx_t_5 = __pyx_t_4;
11415     for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
11416       __pyx_v_i = __pyx_t_6;
11417 
11418       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":286
11419  *                 info.shape = info.strides + ndim
11420  *                 for i in range(ndim):
11421  *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
11422  *                     info.shape[i] = PyArray_DIMS(self)[i]
11423  *             else:
11424  */
11425       (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
11426 
11427       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":287
11428  *                 for i in range(ndim):
11429  *                     info.strides[i] = PyArray_STRIDES(self)[i]
11430  *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
11431  *             else:
11432  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
11433  */
11434       (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
11435     }
11436 
11437     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280
11438  *             info.buf = PyArray_DATA(self)
11439  *             info.ndim = ndim
11440  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
11441  *                 # Allocate new buffer for strides and shape info.
11442  *                 # This is allocated as one block, strides first.
11443  */
11444     goto __pyx_L9;
11445   }
11446 
11447   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":289
11448  *                     info.shape[i] = PyArray_DIMS(self)[i]
11449  *             else:
11450  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
11451  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
11452  *             info.suboffsets = NULL
11453  */
11454   /*else*/ {
11455     __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
11456 
11457     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290
11458  *             else:
11459  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
11460  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
11461  *             info.suboffsets = NULL
11462  *             info.itemsize = PyArray_ITEMSIZE(self)
11463  */
11464     __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self));
11465   }
11466   __pyx_L9:;
11467 
11468   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291
11469  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
11470  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
11471  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
11472  *             info.itemsize = PyArray_ITEMSIZE(self)
11473  *             info.readonly = not PyArray_ISWRITEABLE(self)
11474  */
11475   __pyx_v_info->suboffsets = NULL;
11476 
11477   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292
11478  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
11479  *             info.suboffsets = NULL
11480  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
11481  *             info.readonly = not PyArray_ISWRITEABLE(self)
11482  *
11483  */
11484   __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
11485 
11486   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293
11487  *             info.suboffsets = NULL
11488  *             info.itemsize = PyArray_ITEMSIZE(self)
11489  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
11490  *
11491  *             cdef int t
11492  */
11493   __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
11494 
11495   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":296
11496  *
11497  *             cdef int t
11498  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
11499  *             cdef dtype descr = <dtype>PyArray_DESCR(self)
11500  *             cdef int offset
11501  */
11502   __pyx_v_f = NULL;
11503 
11504   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":297
11505  *             cdef int t
11506  *             cdef char* f = NULL
11507  *             cdef dtype descr = <dtype>PyArray_DESCR(self)             # <<<<<<<<<<<<<<
11508  *             cdef int offset
11509  *
11510  */
11511   __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
11512   __pyx_t_3 = ((PyObject *)__pyx_t_7);
11513   __Pyx_INCREF(__pyx_t_3);
11514   __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
11515   __pyx_t_3 = 0;
11516 
11517   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":300
11518  *             cdef int offset
11519  *
11520  *             info.obj = self             # <<<<<<<<<<<<<<
11521  *
11522  *             if not PyDataType_HASFIELDS(descr):
11523  */
11524   __Pyx_INCREF(((PyObject *)__pyx_v_self));
11525   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
11526   __Pyx_GOTREF(__pyx_v_info->obj);
11527   __Pyx_DECREF(__pyx_v_info->obj);
11528   __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
11529 
11530   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302
11531  *             info.obj = self
11532  *
11533  *             if not PyDataType_HASFIELDS(descr):             # <<<<<<<<<<<<<<
11534  *                 t = descr.type_num
11535  *                 if ((descr.byteorder == c'>' and little_endian) or
11536  */
11537   __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
11538   if (__pyx_t_1) {
11539 
11540     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":303
11541  *
11542  *             if not PyDataType_HASFIELDS(descr):
11543  *                 t = descr.type_num             # <<<<<<<<<<<<<<
11544  *                 if ((descr.byteorder == c'>' and little_endian) or
11545  *                     (descr.byteorder == c'<' and not little_endian)):
11546  */
11547     __pyx_t_4 = __pyx_v_descr->type_num;
11548     __pyx_v_t = __pyx_t_4;
11549 
11550     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304
11551  *             if not PyDataType_HASFIELDS(descr):
11552  *                 t = descr.type_num
11553  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
11554  *                     (descr.byteorder == c'<' and not little_endian)):
11555  *                     raise ValueError(u"Non-native byte order not supported")
11556  */
11557     __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0);
11558     if (!__pyx_t_2) {
11559       goto __pyx_L15_next_or;
11560     } else {
11561     }
11562     __pyx_t_2 = (__pyx_v_little_endian != 0);
11563     if (!__pyx_t_2) {
11564     } else {
11565       __pyx_t_1 = __pyx_t_2;
11566       goto __pyx_L14_bool_binop_done;
11567     }
11568     __pyx_L15_next_or:;
11569 
11570     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":305
11571  *                 t = descr.type_num
11572  *                 if ((descr.byteorder == c'>' and little_endian) or
11573  *                     (descr.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
11574  *                     raise ValueError(u"Non-native byte order not supported")
11575  *                 if   t == NPY_BYTE:        f = "b"
11576  */
11577     __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0);
11578     if (__pyx_t_2) {
11579     } else {
11580       __pyx_t_1 = __pyx_t_2;
11581       goto __pyx_L14_bool_binop_done;
11582     }
11583     __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0);
11584     __pyx_t_1 = __pyx_t_2;
11585     __pyx_L14_bool_binop_done:;
11586 
11587     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304
11588  *             if not PyDataType_HASFIELDS(descr):
11589  *                 t = descr.type_num
11590  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
11591  *                     (descr.byteorder == c'<' and not little_endian)):
11592  *                     raise ValueError(u"Non-native byte order not supported")
11593  */
11594     if (unlikely(__pyx_t_1)) {
11595 
11596       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306
11597  *                 if ((descr.byteorder == c'>' and little_endian) or
11598  *                     (descr.byteorder == c'<' and not little_endian)):
11599  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
11600  *                 if   t == NPY_BYTE:        f = "b"
11601  *                 elif t == NPY_UBYTE:       f = "B"
11602  */
11603       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 306, __pyx_L1_error)
11604       __Pyx_GOTREF(__pyx_t_3);
11605       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
11606       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11607       __PYX_ERR(3, 306, __pyx_L1_error)
11608 
11609       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304
11610  *             if not PyDataType_HASFIELDS(descr):
11611  *                 t = descr.type_num
11612  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
11613  *                     (descr.byteorder == c'<' and not little_endian)):
11614  *                     raise ValueError(u"Non-native byte order not supported")
11615  */
11616     }
11617 
11618     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307
11619  *                     (descr.byteorder == c'<' and not little_endian)):
11620  *                     raise ValueError(u"Non-native byte order not supported")
11621  *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
11622  *                 elif t == NPY_UBYTE:       f = "B"
11623  *                 elif t == NPY_SHORT:       f = "h"
11624  */
11625     switch (__pyx_v_t) {
11626       case NPY_BYTE:
11627       __pyx_v_f = ((char *)"b");
11628       break;
11629       case NPY_UBYTE:
11630 
11631       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308
11632  *                     raise ValueError(u"Non-native byte order not supported")
11633  *                 if   t == NPY_BYTE:        f = "b"
11634  *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
11635  *                 elif t == NPY_SHORT:       f = "h"
11636  *                 elif t == NPY_USHORT:      f = "H"
11637  */
11638       __pyx_v_f = ((char *)"B");
11639       break;
11640       case NPY_SHORT:
11641 
11642       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":309
11643  *                 if   t == NPY_BYTE:        f = "b"
11644  *                 elif t == NPY_UBYTE:       f = "B"
11645  *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
11646  *                 elif t == NPY_USHORT:      f = "H"
11647  *                 elif t == NPY_INT:         f = "i"
11648  */
11649       __pyx_v_f = ((char *)"h");
11650       break;
11651       case NPY_USHORT:
11652 
11653       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310
11654  *                 elif t == NPY_UBYTE:       f = "B"
11655  *                 elif t == NPY_SHORT:       f = "h"
11656  *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
11657  *                 elif t == NPY_INT:         f = "i"
11658  *                 elif t == NPY_UINT:        f = "I"
11659  */
11660       __pyx_v_f = ((char *)"H");
11661       break;
11662       case NPY_INT:
11663 
11664       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":311
11665  *                 elif t == NPY_SHORT:       f = "h"
11666  *                 elif t == NPY_USHORT:      f = "H"
11667  *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
11668  *                 elif t == NPY_UINT:        f = "I"
11669  *                 elif t == NPY_LONG:        f = "l"
11670  */
11671       __pyx_v_f = ((char *)"i");
11672       break;
11673       case NPY_UINT:
11674 
11675       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":312
11676  *                 elif t == NPY_USHORT:      f = "H"
11677  *                 elif t == NPY_INT:         f = "i"
11678  *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
11679  *                 elif t == NPY_LONG:        f = "l"
11680  *                 elif t == NPY_ULONG:       f = "L"
11681  */
11682       __pyx_v_f = ((char *)"I");
11683       break;
11684       case NPY_LONG:
11685 
11686       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":313
11687  *                 elif t == NPY_INT:         f = "i"
11688  *                 elif t == NPY_UINT:        f = "I"
11689  *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
11690  *                 elif t == NPY_ULONG:       f = "L"
11691  *                 elif t == NPY_LONGLONG:    f = "q"
11692  */
11693       __pyx_v_f = ((char *)"l");
11694       break;
11695       case NPY_ULONG:
11696 
11697       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":314
11698  *                 elif t == NPY_UINT:        f = "I"
11699  *                 elif t == NPY_LONG:        f = "l"
11700  *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
11701  *                 elif t == NPY_LONGLONG:    f = "q"
11702  *                 elif t == NPY_ULONGLONG:   f = "Q"
11703  */
11704       __pyx_v_f = ((char *)"L");
11705       break;
11706       case NPY_LONGLONG:
11707 
11708       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":315
11709  *                 elif t == NPY_LONG:        f = "l"
11710  *                 elif t == NPY_ULONG:       f = "L"
11711  *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
11712  *                 elif t == NPY_ULONGLONG:   f = "Q"
11713  *                 elif t == NPY_FLOAT:       f = "f"
11714  */
11715       __pyx_v_f = ((char *)"q");
11716       break;
11717       case NPY_ULONGLONG:
11718 
11719       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":316
11720  *                 elif t == NPY_ULONG:       f = "L"
11721  *                 elif t == NPY_LONGLONG:    f = "q"
11722  *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
11723  *                 elif t == NPY_FLOAT:       f = "f"
11724  *                 elif t == NPY_DOUBLE:      f = "d"
11725  */
11726       __pyx_v_f = ((char *)"Q");
11727       break;
11728       case NPY_FLOAT:
11729 
11730       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":317
11731  *                 elif t == NPY_LONGLONG:    f = "q"
11732  *                 elif t == NPY_ULONGLONG:   f = "Q"
11733  *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
11734  *                 elif t == NPY_DOUBLE:      f = "d"
11735  *                 elif t == NPY_LONGDOUBLE:  f = "g"
11736  */
11737       __pyx_v_f = ((char *)"f");
11738       break;
11739       case NPY_DOUBLE:
11740 
11741       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":318
11742  *                 elif t == NPY_ULONGLONG:   f = "Q"
11743  *                 elif t == NPY_FLOAT:       f = "f"
11744  *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
11745  *                 elif t == NPY_LONGDOUBLE:  f = "g"
11746  *                 elif t == NPY_CFLOAT:      f = "Zf"
11747  */
11748       __pyx_v_f = ((char *)"d");
11749       break;
11750       case NPY_LONGDOUBLE:
11751 
11752       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":319
11753  *                 elif t == NPY_FLOAT:       f = "f"
11754  *                 elif t == NPY_DOUBLE:      f = "d"
11755  *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
11756  *                 elif t == NPY_CFLOAT:      f = "Zf"
11757  *                 elif t == NPY_CDOUBLE:     f = "Zd"
11758  */
11759       __pyx_v_f = ((char *)"g");
11760       break;
11761       case NPY_CFLOAT:
11762 
11763       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":320
11764  *                 elif t == NPY_DOUBLE:      f = "d"
11765  *                 elif t == NPY_LONGDOUBLE:  f = "g"
11766  *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
11767  *                 elif t == NPY_CDOUBLE:     f = "Zd"
11768  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
11769  */
11770       __pyx_v_f = ((char *)"Zf");
11771       break;
11772       case NPY_CDOUBLE:
11773 
11774       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":321
11775  *                 elif t == NPY_LONGDOUBLE:  f = "g"
11776  *                 elif t == NPY_CFLOAT:      f = "Zf"
11777  *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
11778  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
11779  *                 elif t == NPY_OBJECT:      f = "O"
11780  */
11781       __pyx_v_f = ((char *)"Zd");
11782       break;
11783       case NPY_CLONGDOUBLE:
11784 
11785       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":322
11786  *                 elif t == NPY_CFLOAT:      f = "Zf"
11787  *                 elif t == NPY_CDOUBLE:     f = "Zd"
11788  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
11789  *                 elif t == NPY_OBJECT:      f = "O"
11790  *                 else:
11791  */
11792       __pyx_v_f = ((char *)"Zg");
11793       break;
11794       case NPY_OBJECT:
11795 
11796       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":323
11797  *                 elif t == NPY_CDOUBLE:     f = "Zd"
11798  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
11799  *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
11800  *                 else:
11801  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
11802  */
11803       __pyx_v_f = ((char *)"O");
11804       break;
11805       default:
11806 
11807       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":325
11808  *                 elif t == NPY_OBJECT:      f = "O"
11809  *                 else:
11810  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
11811  *                 info.format = f
11812  *                 return
11813  */
11814       __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 325, __pyx_L1_error)
11815       __Pyx_GOTREF(__pyx_t_3);
11816       __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 325, __pyx_L1_error)
11817       __Pyx_GOTREF(__pyx_t_8);
11818       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11819       __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 325, __pyx_L1_error)
11820       __Pyx_GOTREF(__pyx_t_3);
11821       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
11822       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
11823       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11824       __PYX_ERR(3, 325, __pyx_L1_error)
11825       break;
11826     }
11827 
11828     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":326
11829  *                 else:
11830  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
11831  *                 info.format = f             # <<<<<<<<<<<<<<
11832  *                 return
11833  *             else:
11834  */
11835     __pyx_v_info->format = __pyx_v_f;
11836 
11837     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":327
11838  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
11839  *                 info.format = f
11840  *                 return             # <<<<<<<<<<<<<<
11841  *             else:
11842  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
11843  */
11844     __pyx_r = 0;
11845     goto __pyx_L0;
11846 
11847     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302
11848  *             info.obj = self
11849  *
11850  *             if not PyDataType_HASFIELDS(descr):             # <<<<<<<<<<<<<<
11851  *                 t = descr.type_num
11852  *                 if ((descr.byteorder == c'>' and little_endian) or
11853  */
11854   }
11855 
11856   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":329
11857  *                 return
11858  *             else:
11859  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
11860  *                 info.format[0] = c'^' # Native data types, manual alignment
11861  *                 offset = 0
11862  */
11863   /*else*/ {
11864     __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
11865 
11866     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":330
11867  *             else:
11868  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
11869  *                 info.format[0] = c'^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
11870  *                 offset = 0
11871  *                 f = _util_dtypestring(descr, info.format + 1,
11872  */
11873     (__pyx_v_info->format[0]) = '^';
11874 
11875     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":331
11876  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
11877  *                 info.format[0] = c'^' # Native data types, manual alignment
11878  *                 offset = 0             # <<<<<<<<<<<<<<
11879  *                 f = _util_dtypestring(descr, info.format + 1,
11880  *                                       info.format + _buffer_format_string_len,
11881  */
11882     __pyx_v_offset = 0;
11883 
11884     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":332
11885  *                 info.format[0] = c'^' # Native data types, manual alignment
11886  *                 offset = 0
11887  *                 f = _util_dtypestring(descr, info.format + 1,             # <<<<<<<<<<<<<<
11888  *                                       info.format + _buffer_format_string_len,
11889  *                                       &offset)
11890  */
11891     __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(3, 332, __pyx_L1_error)
11892     __pyx_v_f = __pyx_t_9;
11893 
11894     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":335
11895  *                                       info.format + _buffer_format_string_len,
11896  *                                       &offset)
11897  *                 f[0] = c'\0' # Terminate format string             # <<<<<<<<<<<<<<
11898  *
11899  *         def __releasebuffer__(ndarray self, Py_buffer* info):
11900  */
11901     (__pyx_v_f[0]) = '\x00';
11902   }
11903 
11904   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258
11905  *         # experimental exception made for __getbuffer__ and __releasebuffer__
11906  *         # -- the details of this may change.
11907  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
11908  *             # This implementation of getbuffer is geared towards Cython
11909  *             # requirements, and does not yet fulfill the PEP.
11910  */
11911 
11912   /* function exit code */
11913   __pyx_r = 0;
11914   goto __pyx_L0;
11915   __pyx_L1_error:;
11916   __Pyx_XDECREF(__pyx_t_3);
11917   __Pyx_XDECREF(__pyx_t_8);
11918   __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11919   __pyx_r = -1;
11920   if (__pyx_v_info->obj != NULL) {
11921     __Pyx_GOTREF(__pyx_v_info->obj);
11922     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
11923   }
11924   goto __pyx_L2;
11925   __pyx_L0:;
11926   if (__pyx_v_info->obj == Py_None) {
11927     __Pyx_GOTREF(__pyx_v_info->obj);
11928     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
11929   }
11930   __pyx_L2:;
11931   __Pyx_XDECREF((PyObject *)__pyx_v_descr);
11932   __Pyx_RefNannyFinishContext();
11933   return __pyx_r;
11934 }
11935 
11936 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337
11937  *                 f[0] = c'\0' # Terminate format string
11938  *
11939  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
11940  *             if PyArray_HASFIELDS(self):
11941  *                 PyObject_Free(info.format)
11942  */
11943 
11944 /* Python wrapper */
11945 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)11946 static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
11947   __Pyx_RefNannyDeclarations
11948   __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
11949   __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info));
11950 
11951   /* function exit code */
11952   __Pyx_RefNannyFinishContext();
11953 }
11954 
__pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject * __pyx_v_self,Py_buffer * __pyx_v_info)11955 static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
11956   __Pyx_RefNannyDeclarations
11957   int __pyx_t_1;
11958   __Pyx_RefNannySetupContext("__releasebuffer__", 0);
11959 
11960   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338
11961  *
11962  *         def __releasebuffer__(ndarray self, Py_buffer* info):
11963  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
11964  *                 PyObject_Free(info.format)
11965  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
11966  */
11967   __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
11968   if (__pyx_t_1) {
11969 
11970     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":339
11971  *         def __releasebuffer__(ndarray self, Py_buffer* info):
11972  *             if PyArray_HASFIELDS(self):
11973  *                 PyObject_Free(info.format)             # <<<<<<<<<<<<<<
11974  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
11975  *                 PyObject_Free(info.strides)
11976  */
11977     PyObject_Free(__pyx_v_info->format);
11978 
11979     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338
11980  *
11981  *         def __releasebuffer__(ndarray self, Py_buffer* info):
11982  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
11983  *                 PyObject_Free(info.format)
11984  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
11985  */
11986   }
11987 
11988   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340
11989  *             if PyArray_HASFIELDS(self):
11990  *                 PyObject_Free(info.format)
11991  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
11992  *                 PyObject_Free(info.strides)
11993  *                 # info.shape was stored after info.strides in the same block
11994  */
11995   __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
11996   if (__pyx_t_1) {
11997 
11998     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":341
11999  *                 PyObject_Free(info.format)
12000  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
12001  *                 PyObject_Free(info.strides)             # <<<<<<<<<<<<<<
12002  *                 # info.shape was stored after info.strides in the same block
12003  *
12004  */
12005     PyObject_Free(__pyx_v_info->strides);
12006 
12007     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340
12008  *             if PyArray_HASFIELDS(self):
12009  *                 PyObject_Free(info.format)
12010  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
12011  *                 PyObject_Free(info.strides)
12012  *                 # info.shape was stored after info.strides in the same block
12013  */
12014   }
12015 
12016   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337
12017  *                 f[0] = c'\0' # Terminate format string
12018  *
12019  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
12020  *             if PyArray_HASFIELDS(self):
12021  *                 PyObject_Free(info.format)
12022  */
12023 
12024   /* function exit code */
12025   __Pyx_RefNannyFinishContext();
12026 }
12027 
12028 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821
12029  * ctypedef npy_cdouble     complex_t
12030  *
12031  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
12032  *     return PyArray_MultiIterNew(1, <void*>a)
12033  *
12034  */
12035 
__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject * __pyx_v_a)12036 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
12037   PyObject *__pyx_r = NULL;
12038   __Pyx_RefNannyDeclarations
12039   PyObject *__pyx_t_1 = NULL;
12040   __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
12041 
12042   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822
12043  *
12044  * cdef inline object PyArray_MultiIterNew1(a):
12045  *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
12046  *
12047  * cdef inline object PyArray_MultiIterNew2(a, b):
12048  */
12049   __Pyx_XDECREF(__pyx_r);
12050   __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 822, __pyx_L1_error)
12051   __Pyx_GOTREF(__pyx_t_1);
12052   __pyx_r = __pyx_t_1;
12053   __pyx_t_1 = 0;
12054   goto __pyx_L0;
12055 
12056   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821
12057  * ctypedef npy_cdouble     complex_t
12058  *
12059  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
12060  *     return PyArray_MultiIterNew(1, <void*>a)
12061  *
12062  */
12063 
12064   /* function exit code */
12065   __pyx_L1_error:;
12066   __Pyx_XDECREF(__pyx_t_1);
12067   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
12068   __pyx_r = 0;
12069   __pyx_L0:;
12070   __Pyx_XGIVEREF(__pyx_r);
12071   __Pyx_RefNannyFinishContext();
12072   return __pyx_r;
12073 }
12074 
12075 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824
12076  *     return PyArray_MultiIterNew(1, <void*>a)
12077  *
12078  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
12079  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
12080  *
12081  */
12082 
__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject * __pyx_v_a,PyObject * __pyx_v_b)12083 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
12084   PyObject *__pyx_r = NULL;
12085   __Pyx_RefNannyDeclarations
12086   PyObject *__pyx_t_1 = NULL;
12087   __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
12088 
12089   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825
12090  *
12091  * cdef inline object PyArray_MultiIterNew2(a, b):
12092  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
12093  *
12094  * cdef inline object PyArray_MultiIterNew3(a, b, c):
12095  */
12096   __Pyx_XDECREF(__pyx_r);
12097   __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 825, __pyx_L1_error)
12098   __Pyx_GOTREF(__pyx_t_1);
12099   __pyx_r = __pyx_t_1;
12100   __pyx_t_1 = 0;
12101   goto __pyx_L0;
12102 
12103   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824
12104  *     return PyArray_MultiIterNew(1, <void*>a)
12105  *
12106  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
12107  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
12108  *
12109  */
12110 
12111   /* function exit code */
12112   __pyx_L1_error:;
12113   __Pyx_XDECREF(__pyx_t_1);
12114   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
12115   __pyx_r = 0;
12116   __pyx_L0:;
12117   __Pyx_XGIVEREF(__pyx_r);
12118   __Pyx_RefNannyFinishContext();
12119   return __pyx_r;
12120 }
12121 
12122 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827
12123  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
12124  *
12125  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
12126  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
12127  *
12128  */
12129 
__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject * __pyx_v_a,PyObject * __pyx_v_b,PyObject * __pyx_v_c)12130 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
12131   PyObject *__pyx_r = NULL;
12132   __Pyx_RefNannyDeclarations
12133   PyObject *__pyx_t_1 = NULL;
12134   __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
12135 
12136   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828
12137  *
12138  * cdef inline object PyArray_MultiIterNew3(a, b, c):
12139  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
12140  *
12141  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
12142  */
12143   __Pyx_XDECREF(__pyx_r);
12144   __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(3, 828, __pyx_L1_error)
12145   __Pyx_GOTREF(__pyx_t_1);
12146   __pyx_r = __pyx_t_1;
12147   __pyx_t_1 = 0;
12148   goto __pyx_L0;
12149 
12150   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827
12151  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
12152  *
12153  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
12154  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
12155  *
12156  */
12157 
12158   /* function exit code */
12159   __pyx_L1_error:;
12160   __Pyx_XDECREF(__pyx_t_1);
12161   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
12162   __pyx_r = 0;
12163   __pyx_L0:;
12164   __Pyx_XGIVEREF(__pyx_r);
12165   __Pyx_RefNannyFinishContext();
12166   return __pyx_r;
12167 }
12168 
12169 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830
12170  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
12171  *
12172  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
12173  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
12174  *
12175  */
12176 
__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject * __pyx_v_a,PyObject * __pyx_v_b,PyObject * __pyx_v_c,PyObject * __pyx_v_d)12177 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) {
12178   PyObject *__pyx_r = NULL;
12179   __Pyx_RefNannyDeclarations
12180   PyObject *__pyx_t_1 = NULL;
12181   __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
12182 
12183   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831
12184  *
12185  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
12186  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
12187  *
12188  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
12189  */
12190   __Pyx_XDECREF(__pyx_r);
12191   __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(3, 831, __pyx_L1_error)
12192   __Pyx_GOTREF(__pyx_t_1);
12193   __pyx_r = __pyx_t_1;
12194   __pyx_t_1 = 0;
12195   goto __pyx_L0;
12196 
12197   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830
12198  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
12199  *
12200  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
12201  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
12202  *
12203  */
12204 
12205   /* function exit code */
12206   __pyx_L1_error:;
12207   __Pyx_XDECREF(__pyx_t_1);
12208   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
12209   __pyx_r = 0;
12210   __pyx_L0:;
12211   __Pyx_XGIVEREF(__pyx_r);
12212   __Pyx_RefNannyFinishContext();
12213   return __pyx_r;
12214 }
12215 
12216 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833
12217  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
12218  *
12219  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
12220  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
12221  *
12222  */
12223 
__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)12224 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) {
12225   PyObject *__pyx_r = NULL;
12226   __Pyx_RefNannyDeclarations
12227   PyObject *__pyx_t_1 = NULL;
12228   __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
12229 
12230   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834
12231  *
12232  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
12233  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
12234  *
12235  * cdef inline tuple PyDataType_SHAPE(dtype d):
12236  */
12237   __Pyx_XDECREF(__pyx_r);
12238   __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(3, 834, __pyx_L1_error)
12239   __Pyx_GOTREF(__pyx_t_1);
12240   __pyx_r = __pyx_t_1;
12241   __pyx_t_1 = 0;
12242   goto __pyx_L0;
12243 
12244   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833
12245  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
12246  *
12247  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
12248  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
12249  *
12250  */
12251 
12252   /* function exit code */
12253   __pyx_L1_error:;
12254   __Pyx_XDECREF(__pyx_t_1);
12255   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
12256   __pyx_r = 0;
12257   __pyx_L0:;
12258   __Pyx_XGIVEREF(__pyx_r);
12259   __Pyx_RefNannyFinishContext();
12260   return __pyx_r;
12261 }
12262 
12263 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836
12264  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
12265  *
12266  * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
12267  *     if PyDataType_HASSUBARRAY(d):
12268  *         return <tuple>d.subarray.shape
12269  */
12270 
__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr * __pyx_v_d)12271 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
12272   PyObject *__pyx_r = NULL;
12273   __Pyx_RefNannyDeclarations
12274   int __pyx_t_1;
12275   __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
12276 
12277   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837
12278  *
12279  * cdef inline tuple PyDataType_SHAPE(dtype d):
12280  *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
12281  *         return <tuple>d.subarray.shape
12282  *     else:
12283  */
12284   __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
12285   if (__pyx_t_1) {
12286 
12287     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838
12288  * cdef inline tuple PyDataType_SHAPE(dtype d):
12289  *     if PyDataType_HASSUBARRAY(d):
12290  *         return <tuple>d.subarray.shape             # <<<<<<<<<<<<<<
12291  *     else:
12292  *         return ()
12293  */
12294     __Pyx_XDECREF(__pyx_r);
12295     __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
12296     __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
12297     goto __pyx_L0;
12298 
12299     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837
12300  *
12301  * cdef inline tuple PyDataType_SHAPE(dtype d):
12302  *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
12303  *         return <tuple>d.subarray.shape
12304  *     else:
12305  */
12306   }
12307 
12308   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840
12309  *         return <tuple>d.subarray.shape
12310  *     else:
12311  *         return ()             # <<<<<<<<<<<<<<
12312  *
12313  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
12314  */
12315   /*else*/ {
12316     __Pyx_XDECREF(__pyx_r);
12317     __Pyx_INCREF(__pyx_empty_tuple);
12318     __pyx_r = __pyx_empty_tuple;
12319     goto __pyx_L0;
12320   }
12321 
12322   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836
12323  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
12324  *
12325  * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
12326  *     if PyDataType_HASSUBARRAY(d):
12327  *         return <tuple>d.subarray.shape
12328  */
12329 
12330   /* function exit code */
12331   __pyx_L0:;
12332   __Pyx_XGIVEREF(__pyx_r);
12333   __Pyx_RefNannyFinishContext();
12334   return __pyx_r;
12335 }
12336 
12337 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842
12338  *         return ()
12339  *
12340  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
12341  *     # Recursive utility function used in __getbuffer__ to get format
12342  *     # string. The new location in the format string is returned.
12343  */
12344 
__pyx_f_5numpy__util_dtypestring(PyArray_Descr * __pyx_v_descr,char * __pyx_v_f,char * __pyx_v_end,int * __pyx_v_offset)12345 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) {
12346   PyArray_Descr *__pyx_v_child = 0;
12347   int __pyx_v_endian_detector;
12348   int __pyx_v_little_endian;
12349   PyObject *__pyx_v_fields = 0;
12350   PyObject *__pyx_v_childname = NULL;
12351   PyObject *__pyx_v_new_offset = NULL;
12352   PyObject *__pyx_v_t = NULL;
12353   char *__pyx_r;
12354   __Pyx_RefNannyDeclarations
12355   PyObject *__pyx_t_1 = NULL;
12356   Py_ssize_t __pyx_t_2;
12357   PyObject *__pyx_t_3 = NULL;
12358   PyObject *__pyx_t_4 = NULL;
12359   int __pyx_t_5;
12360   int __pyx_t_6;
12361   int __pyx_t_7;
12362   long __pyx_t_8;
12363   char *__pyx_t_9;
12364   __Pyx_RefNannySetupContext("_util_dtypestring", 0);
12365 
12366   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847
12367  *
12368  *     cdef dtype child
12369  *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
12370  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
12371  *     cdef tuple fields
12372  */
12373   __pyx_v_endian_detector = 1;
12374 
12375   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":848
12376  *     cdef dtype child
12377  *     cdef int endian_detector = 1
12378  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
12379  *     cdef tuple fields
12380  *
12381  */
12382   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
12383 
12384   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851
12385  *     cdef tuple fields
12386  *
12387  *     for childname in descr.names:             # <<<<<<<<<<<<<<
12388  *         fields = descr.fields[childname]
12389  *         child, new_offset = fields
12390  */
12391   if (unlikely(__pyx_v_descr->names == Py_None)) {
12392     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
12393     __PYX_ERR(3, 851, __pyx_L1_error)
12394   }
12395   __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
12396   for (;;) {
12397     if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
12398     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
12399     __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(3, 851, __pyx_L1_error)
12400     #else
12401     __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 851, __pyx_L1_error)
12402     __Pyx_GOTREF(__pyx_t_3);
12403     #endif
12404     __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
12405     __pyx_t_3 = 0;
12406 
12407     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":852
12408  *
12409  *     for childname in descr.names:
12410  *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
12411  *         child, new_offset = fields
12412  *
12413  */
12414     if (unlikely(__pyx_v_descr->fields == Py_None)) {
12415       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
12416       __PYX_ERR(3, 852, __pyx_L1_error)
12417     }
12418     __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 852, __pyx_L1_error)
12419     __Pyx_GOTREF(__pyx_t_3);
12420     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(3, 852, __pyx_L1_error)
12421     __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
12422     __pyx_t_3 = 0;
12423 
12424     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":853
12425  *     for childname in descr.names:
12426  *         fields = descr.fields[childname]
12427  *         child, new_offset = fields             # <<<<<<<<<<<<<<
12428  *
12429  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
12430  */
12431     if (likely(__pyx_v_fields != Py_None)) {
12432       PyObject* sequence = __pyx_v_fields;
12433       Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
12434       if (unlikely(size != 2)) {
12435         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
12436         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
12437         __PYX_ERR(3, 853, __pyx_L1_error)
12438       }
12439       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
12440       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
12441       __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
12442       __Pyx_INCREF(__pyx_t_3);
12443       __Pyx_INCREF(__pyx_t_4);
12444       #else
12445       __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 853, __pyx_L1_error)
12446       __Pyx_GOTREF(__pyx_t_3);
12447       __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 853, __pyx_L1_error)
12448       __Pyx_GOTREF(__pyx_t_4);
12449       #endif
12450     } else {
12451       __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(3, 853, __pyx_L1_error)
12452     }
12453     if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(3, 853, __pyx_L1_error)
12454     __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
12455     __pyx_t_3 = 0;
12456     __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
12457     __pyx_t_4 = 0;
12458 
12459     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855
12460  *         child, new_offset = fields
12461  *
12462  *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
12463  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
12464  *
12465  */
12466     __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 855, __pyx_L1_error)
12467     __Pyx_GOTREF(__pyx_t_4);
12468     __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 855, __pyx_L1_error)
12469     __Pyx_GOTREF(__pyx_t_3);
12470     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12471     __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 855, __pyx_L1_error)
12472     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12473     __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
12474     if (unlikely(__pyx_t_6)) {
12475 
12476       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856
12477  *
12478  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
12479  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
12480  *
12481  *         if ((child.byteorder == c'>' and little_endian) or
12482  */
12483       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 856, __pyx_L1_error)
12484       __Pyx_GOTREF(__pyx_t_3);
12485       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
12486       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12487       __PYX_ERR(3, 856, __pyx_L1_error)
12488 
12489       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855
12490  *         child, new_offset = fields
12491  *
12492  *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
12493  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
12494  *
12495  */
12496     }
12497 
12498     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858
12499  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
12500  *
12501  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
12502  *             (child.byteorder == c'<' and not little_endian)):
12503  *             raise ValueError(u"Non-native byte order not supported")
12504  */
12505     __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0);
12506     if (!__pyx_t_7) {
12507       goto __pyx_L8_next_or;
12508     } else {
12509     }
12510     __pyx_t_7 = (__pyx_v_little_endian != 0);
12511     if (!__pyx_t_7) {
12512     } else {
12513       __pyx_t_6 = __pyx_t_7;
12514       goto __pyx_L7_bool_binop_done;
12515     }
12516     __pyx_L8_next_or:;
12517 
12518     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":859
12519  *
12520  *         if ((child.byteorder == c'>' and little_endian) or
12521  *             (child.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
12522  *             raise ValueError(u"Non-native byte order not supported")
12523  *             # One could encode it in the format string and have Cython
12524  */
12525     __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0);
12526     if (__pyx_t_7) {
12527     } else {
12528       __pyx_t_6 = __pyx_t_7;
12529       goto __pyx_L7_bool_binop_done;
12530     }
12531     __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0);
12532     __pyx_t_6 = __pyx_t_7;
12533     __pyx_L7_bool_binop_done:;
12534 
12535     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858
12536  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
12537  *
12538  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
12539  *             (child.byteorder == c'<' and not little_endian)):
12540  *             raise ValueError(u"Non-native byte order not supported")
12541  */
12542     if (unlikely(__pyx_t_6)) {
12543 
12544       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":860
12545  *         if ((child.byteorder == c'>' and little_endian) or
12546  *             (child.byteorder == c'<' and not little_endian)):
12547  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
12548  *             # One could encode it in the format string and have Cython
12549  *             # complain instead, BUT: < and > in format strings also imply
12550  */
12551       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 860, __pyx_L1_error)
12552       __Pyx_GOTREF(__pyx_t_3);
12553       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
12554       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12555       __PYX_ERR(3, 860, __pyx_L1_error)
12556 
12557       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858
12558  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
12559  *
12560  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
12561  *             (child.byteorder == c'<' and not little_endian)):
12562  *             raise ValueError(u"Non-native byte order not supported")
12563  */
12564     }
12565 
12566     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":870
12567  *
12568  *         # Output padding bytes
12569  *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
12570  *             f[0] = 120 # "x"; pad byte
12571  *             f += 1
12572  */
12573     while (1) {
12574       __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 870, __pyx_L1_error)
12575       __Pyx_GOTREF(__pyx_t_3);
12576       __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(3, 870, __pyx_L1_error)
12577       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12578       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 870, __pyx_L1_error)
12579       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12580       if (!__pyx_t_6) break;
12581 
12582       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":871
12583  *         # Output padding bytes
12584  *         while offset[0] < new_offset:
12585  *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
12586  *             f += 1
12587  *             offset[0] += 1
12588  */
12589       (__pyx_v_f[0]) = 0x78;
12590 
12591       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":872
12592  *         while offset[0] < new_offset:
12593  *             f[0] = 120 # "x"; pad byte
12594  *             f += 1             # <<<<<<<<<<<<<<
12595  *             offset[0] += 1
12596  *
12597  */
12598       __pyx_v_f = (__pyx_v_f + 1);
12599 
12600       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":873
12601  *             f[0] = 120 # "x"; pad byte
12602  *             f += 1
12603  *             offset[0] += 1             # <<<<<<<<<<<<<<
12604  *
12605  *         offset[0] += child.itemsize
12606  */
12607       __pyx_t_8 = 0;
12608       (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
12609     }
12610 
12611     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":875
12612  *             offset[0] += 1
12613  *
12614  *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
12615  *
12616  *         if not PyDataType_HASFIELDS(child):
12617  */
12618     __pyx_t_8 = 0;
12619     (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
12620 
12621     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877
12622  *         offset[0] += child.itemsize
12623  *
12624  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
12625  *             t = child.type_num
12626  *             if end - f < 5:
12627  */
12628     __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
12629     if (__pyx_t_6) {
12630 
12631       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":878
12632  *
12633  *         if not PyDataType_HASFIELDS(child):
12634  *             t = child.type_num             # <<<<<<<<<<<<<<
12635  *             if end - f < 5:
12636  *                 raise RuntimeError(u"Format string allocated too short.")
12637  */
12638       __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 878, __pyx_L1_error)
12639       __Pyx_GOTREF(__pyx_t_4);
12640       __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
12641       __pyx_t_4 = 0;
12642 
12643       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879
12644  *         if not PyDataType_HASFIELDS(child):
12645  *             t = child.type_num
12646  *             if end - f < 5:             # <<<<<<<<<<<<<<
12647  *                 raise RuntimeError(u"Format string allocated too short.")
12648  *
12649  */
12650       __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
12651       if (unlikely(__pyx_t_6)) {
12652 
12653         /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880
12654  *             t = child.type_num
12655  *             if end - f < 5:
12656  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
12657  *
12658  *             # Until ticket #99 is fixed, use integers to avoid warnings
12659  */
12660         __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 880, __pyx_L1_error)
12661         __Pyx_GOTREF(__pyx_t_4);
12662         __Pyx_Raise(__pyx_t_4, 0, 0, 0);
12663         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12664         __PYX_ERR(3, 880, __pyx_L1_error)
12665 
12666         /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879
12667  *         if not PyDataType_HASFIELDS(child):
12668  *             t = child.type_num
12669  *             if end - f < 5:             # <<<<<<<<<<<<<<
12670  *                 raise RuntimeError(u"Format string allocated too short.")
12671  *
12672  */
12673       }
12674 
12675       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":883
12676  *
12677  *             # Until ticket #99 is fixed, use integers to avoid warnings
12678  *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
12679  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
12680  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
12681  */
12682       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 883, __pyx_L1_error)
12683       __Pyx_GOTREF(__pyx_t_4);
12684       __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(3, 883, __pyx_L1_error)
12685       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12686       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 883, __pyx_L1_error)
12687       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12688       if (__pyx_t_6) {
12689         (__pyx_v_f[0]) = 98;
12690         goto __pyx_L15;
12691       }
12692 
12693       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":884
12694  *             # Until ticket #99 is fixed, use integers to avoid warnings
12695  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
12696  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
12697  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
12698  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
12699  */
12700       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 884, __pyx_L1_error)
12701       __Pyx_GOTREF(__pyx_t_3);
12702       __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(3, 884, __pyx_L1_error)
12703       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12704       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 884, __pyx_L1_error)
12705       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12706       if (__pyx_t_6) {
12707         (__pyx_v_f[0]) = 66;
12708         goto __pyx_L15;
12709       }
12710 
12711       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":885
12712  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
12713  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
12714  *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
12715  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
12716  *             elif t == NPY_INT:         f[0] = 105 #"i"
12717  */
12718       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 885, __pyx_L1_error)
12719       __Pyx_GOTREF(__pyx_t_4);
12720       __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(3, 885, __pyx_L1_error)
12721       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12722       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 885, __pyx_L1_error)
12723       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12724       if (__pyx_t_6) {
12725         (__pyx_v_f[0]) = 0x68;
12726         goto __pyx_L15;
12727       }
12728 
12729       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":886
12730  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
12731  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
12732  *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
12733  *             elif t == NPY_INT:         f[0] = 105 #"i"
12734  *             elif t == NPY_UINT:        f[0] =  73 #"I"
12735  */
12736       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 886, __pyx_L1_error)
12737       __Pyx_GOTREF(__pyx_t_3);
12738       __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(3, 886, __pyx_L1_error)
12739       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12740       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 886, __pyx_L1_error)
12741       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12742       if (__pyx_t_6) {
12743         (__pyx_v_f[0]) = 72;
12744         goto __pyx_L15;
12745       }
12746 
12747       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":887
12748  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
12749  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
12750  *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
12751  *             elif t == NPY_UINT:        f[0] =  73 #"I"
12752  *             elif t == NPY_LONG:        f[0] = 108 #"l"
12753  */
12754       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 887, __pyx_L1_error)
12755       __Pyx_GOTREF(__pyx_t_4);
12756       __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(3, 887, __pyx_L1_error)
12757       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12758       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 887, __pyx_L1_error)
12759       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12760       if (__pyx_t_6) {
12761         (__pyx_v_f[0]) = 0x69;
12762         goto __pyx_L15;
12763       }
12764 
12765       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":888
12766  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
12767  *             elif t == NPY_INT:         f[0] = 105 #"i"
12768  *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
12769  *             elif t == NPY_LONG:        f[0] = 108 #"l"
12770  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
12771  */
12772       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 888, __pyx_L1_error)
12773       __Pyx_GOTREF(__pyx_t_3);
12774       __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(3, 888, __pyx_L1_error)
12775       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12776       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 888, __pyx_L1_error)
12777       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12778       if (__pyx_t_6) {
12779         (__pyx_v_f[0]) = 73;
12780         goto __pyx_L15;
12781       }
12782 
12783       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":889
12784  *             elif t == NPY_INT:         f[0] = 105 #"i"
12785  *             elif t == NPY_UINT:        f[0] =  73 #"I"
12786  *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
12787  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
12788  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
12789  */
12790       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 889, __pyx_L1_error)
12791       __Pyx_GOTREF(__pyx_t_4);
12792       __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(3, 889, __pyx_L1_error)
12793       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12794       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 889, __pyx_L1_error)
12795       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12796       if (__pyx_t_6) {
12797         (__pyx_v_f[0]) = 0x6C;
12798         goto __pyx_L15;
12799       }
12800 
12801       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":890
12802  *             elif t == NPY_UINT:        f[0] =  73 #"I"
12803  *             elif t == NPY_LONG:        f[0] = 108 #"l"
12804  *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
12805  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
12806  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
12807  */
12808       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 890, __pyx_L1_error)
12809       __Pyx_GOTREF(__pyx_t_3);
12810       __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(3, 890, __pyx_L1_error)
12811       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12812       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 890, __pyx_L1_error)
12813       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12814       if (__pyx_t_6) {
12815         (__pyx_v_f[0]) = 76;
12816         goto __pyx_L15;
12817       }
12818 
12819       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":891
12820  *             elif t == NPY_LONG:        f[0] = 108 #"l"
12821  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
12822  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
12823  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
12824  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
12825  */
12826       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 891, __pyx_L1_error)
12827       __Pyx_GOTREF(__pyx_t_4);
12828       __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(3, 891, __pyx_L1_error)
12829       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12830       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 891, __pyx_L1_error)
12831       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12832       if (__pyx_t_6) {
12833         (__pyx_v_f[0]) = 0x71;
12834         goto __pyx_L15;
12835       }
12836 
12837       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":892
12838  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
12839  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
12840  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
12841  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
12842  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
12843  */
12844       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 892, __pyx_L1_error)
12845       __Pyx_GOTREF(__pyx_t_3);
12846       __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(3, 892, __pyx_L1_error)
12847       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12848       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 892, __pyx_L1_error)
12849       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12850       if (__pyx_t_6) {
12851         (__pyx_v_f[0]) = 81;
12852         goto __pyx_L15;
12853       }
12854 
12855       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":893
12856  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
12857  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
12858  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
12859  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
12860  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
12861  */
12862       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 893, __pyx_L1_error)
12863       __Pyx_GOTREF(__pyx_t_4);
12864       __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(3, 893, __pyx_L1_error)
12865       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12866       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 893, __pyx_L1_error)
12867       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12868       if (__pyx_t_6) {
12869         (__pyx_v_f[0]) = 0x66;
12870         goto __pyx_L15;
12871       }
12872 
12873       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":894
12874  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
12875  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
12876  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
12877  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
12878  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
12879  */
12880       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 894, __pyx_L1_error)
12881       __Pyx_GOTREF(__pyx_t_3);
12882       __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(3, 894, __pyx_L1_error)
12883       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12884       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 894, __pyx_L1_error)
12885       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12886       if (__pyx_t_6) {
12887         (__pyx_v_f[0]) = 0x64;
12888         goto __pyx_L15;
12889       }
12890 
12891       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":895
12892  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
12893  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
12894  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
12895  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
12896  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
12897  */
12898       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 895, __pyx_L1_error)
12899       __Pyx_GOTREF(__pyx_t_4);
12900       __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(3, 895, __pyx_L1_error)
12901       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12902       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 895, __pyx_L1_error)
12903       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12904       if (__pyx_t_6) {
12905         (__pyx_v_f[0]) = 0x67;
12906         goto __pyx_L15;
12907       }
12908 
12909       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":896
12910  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
12911  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
12912  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
12913  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
12914  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
12915  */
12916       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 896, __pyx_L1_error)
12917       __Pyx_GOTREF(__pyx_t_3);
12918       __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(3, 896, __pyx_L1_error)
12919       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12920       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 896, __pyx_L1_error)
12921       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12922       if (__pyx_t_6) {
12923         (__pyx_v_f[0]) = 90;
12924         (__pyx_v_f[1]) = 0x66;
12925         __pyx_v_f = (__pyx_v_f + 1);
12926         goto __pyx_L15;
12927       }
12928 
12929       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":897
12930  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
12931  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
12932  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
12933  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
12934  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
12935  */
12936       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 897, __pyx_L1_error)
12937       __Pyx_GOTREF(__pyx_t_4);
12938       __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(3, 897, __pyx_L1_error)
12939       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12940       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 897, __pyx_L1_error)
12941       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12942       if (__pyx_t_6) {
12943         (__pyx_v_f[0]) = 90;
12944         (__pyx_v_f[1]) = 0x64;
12945         __pyx_v_f = (__pyx_v_f + 1);
12946         goto __pyx_L15;
12947       }
12948 
12949       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":898
12950  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
12951  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
12952  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
12953  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
12954  *             else:
12955  */
12956       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 898, __pyx_L1_error)
12957       __Pyx_GOTREF(__pyx_t_3);
12958       __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(3, 898, __pyx_L1_error)
12959       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12960       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 898, __pyx_L1_error)
12961       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12962       if (__pyx_t_6) {
12963         (__pyx_v_f[0]) = 90;
12964         (__pyx_v_f[1]) = 0x67;
12965         __pyx_v_f = (__pyx_v_f + 1);
12966         goto __pyx_L15;
12967       }
12968 
12969       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":899
12970  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
12971  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
12972  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
12973  *             else:
12974  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
12975  */
12976       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 899, __pyx_L1_error)
12977       __Pyx_GOTREF(__pyx_t_4);
12978       __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(3, 899, __pyx_L1_error)
12979       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12980       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(3, 899, __pyx_L1_error)
12981       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12982       if (likely(__pyx_t_6)) {
12983         (__pyx_v_f[0]) = 79;
12984         goto __pyx_L15;
12985       }
12986 
12987       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":901
12988  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
12989  *             else:
12990  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
12991  *             f += 1
12992  *         else:
12993  */
12994       /*else*/ {
12995         __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(3, 901, __pyx_L1_error)
12996         __Pyx_GOTREF(__pyx_t_3);
12997         __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 901, __pyx_L1_error)
12998         __Pyx_GOTREF(__pyx_t_4);
12999         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13000         __Pyx_Raise(__pyx_t_4, 0, 0, 0);
13001         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
13002         __PYX_ERR(3, 901, __pyx_L1_error)
13003       }
13004       __pyx_L15:;
13005 
13006       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":902
13007  *             else:
13008  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
13009  *             f += 1             # <<<<<<<<<<<<<<
13010  *         else:
13011  *             # Cython ignores struct boundary information ("T{...}"),
13012  */
13013       __pyx_v_f = (__pyx_v_f + 1);
13014 
13015       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877
13016  *         offset[0] += child.itemsize
13017  *
13018  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
13019  *             t = child.type_num
13020  *             if end - f < 5:
13021  */
13022       goto __pyx_L13;
13023     }
13024 
13025     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":906
13026  *             # Cython ignores struct boundary information ("T{...}"),
13027  *             # so don't output it
13028  *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
13029  *     return f
13030  *
13031  */
13032     /*else*/ {
13033       __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(3, 906, __pyx_L1_error)
13034       __pyx_v_f = __pyx_t_9;
13035     }
13036     __pyx_L13:;
13037 
13038     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851
13039  *     cdef tuple fields
13040  *
13041  *     for childname in descr.names:             # <<<<<<<<<<<<<<
13042  *         fields = descr.fields[childname]
13043  *         child, new_offset = fields
13044  */
13045   }
13046   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13047 
13048   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":907
13049  *             # so don't output it
13050  *             f = _util_dtypestring(child, f, end, offset)
13051  *     return f             # <<<<<<<<<<<<<<
13052  *
13053  *
13054  */
13055   __pyx_r = __pyx_v_f;
13056   goto __pyx_L0;
13057 
13058   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842
13059  *         return ()
13060  *
13061  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
13062  *     # Recursive utility function used in __getbuffer__ to get format
13063  *     # string. The new location in the format string is returned.
13064  */
13065 
13066   /* function exit code */
13067   __pyx_L1_error:;
13068   __Pyx_XDECREF(__pyx_t_1);
13069   __Pyx_XDECREF(__pyx_t_3);
13070   __Pyx_XDECREF(__pyx_t_4);
13071   __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename);
13072   __pyx_r = NULL;
13073   __pyx_L0:;
13074   __Pyx_XDECREF((PyObject *)__pyx_v_child);
13075   __Pyx_XDECREF(__pyx_v_fields);
13076   __Pyx_XDECREF(__pyx_v_childname);
13077   __Pyx_XDECREF(__pyx_v_new_offset);
13078   __Pyx_XDECREF(__pyx_v_t);
13079   __Pyx_RefNannyFinishContext();
13080   return __pyx_r;
13081 }
13082 
13083 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022
13084  *     int _import_umath() except -1
13085  *
13086  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
13087  *     Py_INCREF(base) # important to do this before stealing the reference below!
13088  *     PyArray_SetBaseObject(arr, base)
13089  */
13090 
__pyx_f_5numpy_set_array_base(PyArrayObject * __pyx_v_arr,PyObject * __pyx_v_base)13091 static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
13092   __Pyx_RefNannyDeclarations
13093   __Pyx_RefNannySetupContext("set_array_base", 0);
13094 
13095   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1023
13096  *
13097  * cdef inline void set_array_base(ndarray arr, object base):
13098  *     Py_INCREF(base) # important to do this before stealing the reference below!             # <<<<<<<<<<<<<<
13099  *     PyArray_SetBaseObject(arr, base)
13100  *
13101  */
13102   Py_INCREF(__pyx_v_base);
13103 
13104   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1024
13105  * cdef inline void set_array_base(ndarray arr, object base):
13106  *     Py_INCREF(base) # important to do this before stealing the reference below!
13107  *     PyArray_SetBaseObject(arr, base)             # <<<<<<<<<<<<<<
13108  *
13109  * cdef inline object get_array_base(ndarray arr):
13110  */
13111   (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
13112 
13113   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022
13114  *     int _import_umath() except -1
13115  *
13116  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
13117  *     Py_INCREF(base) # important to do this before stealing the reference below!
13118  *     PyArray_SetBaseObject(arr, base)
13119  */
13120 
13121   /* function exit code */
13122   __Pyx_RefNannyFinishContext();
13123 }
13124 
13125 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026
13126  *     PyArray_SetBaseObject(arr, base)
13127  *
13128  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
13129  *     base = PyArray_BASE(arr)
13130  *     if base is NULL:
13131  */
13132 
__pyx_f_5numpy_get_array_base(PyArrayObject * __pyx_v_arr)13133 static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
13134   PyObject *__pyx_v_base;
13135   PyObject *__pyx_r = NULL;
13136   __Pyx_RefNannyDeclarations
13137   int __pyx_t_1;
13138   __Pyx_RefNannySetupContext("get_array_base", 0);
13139 
13140   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1027
13141  *
13142  * cdef inline object get_array_base(ndarray arr):
13143  *     base = PyArray_BASE(arr)             # <<<<<<<<<<<<<<
13144  *     if base is NULL:
13145  *         return None
13146  */
13147   __pyx_v_base = PyArray_BASE(__pyx_v_arr);
13148 
13149   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028
13150  * cdef inline object get_array_base(ndarray arr):
13151  *     base = PyArray_BASE(arr)
13152  *     if base is NULL:             # <<<<<<<<<<<<<<
13153  *         return None
13154  *     return <object>base
13155  */
13156   __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
13157   if (__pyx_t_1) {
13158 
13159     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1029
13160  *     base = PyArray_BASE(arr)
13161  *     if base is NULL:
13162  *         return None             # <<<<<<<<<<<<<<
13163  *     return <object>base
13164  *
13165  */
13166     __Pyx_XDECREF(__pyx_r);
13167     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13168     goto __pyx_L0;
13169 
13170     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028
13171  * cdef inline object get_array_base(ndarray arr):
13172  *     base = PyArray_BASE(arr)
13173  *     if base is NULL:             # <<<<<<<<<<<<<<
13174  *         return None
13175  *     return <object>base
13176  */
13177   }
13178 
13179   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1030
13180  *     if base is NULL:
13181  *         return None
13182  *     return <object>base             # <<<<<<<<<<<<<<
13183  *
13184  * # Versions of the import_* functions which are more suitable for
13185  */
13186   __Pyx_XDECREF(__pyx_r);
13187   __Pyx_INCREF(((PyObject *)__pyx_v_base));
13188   __pyx_r = ((PyObject *)__pyx_v_base);
13189   goto __pyx_L0;
13190 
13191   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026
13192  *     PyArray_SetBaseObject(arr, base)
13193  *
13194  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
13195  *     base = PyArray_BASE(arr)
13196  *     if base is NULL:
13197  */
13198 
13199   /* function exit code */
13200   __pyx_L0:;
13201   __Pyx_XGIVEREF(__pyx_r);
13202   __Pyx_RefNannyFinishContext();
13203   return __pyx_r;
13204 }
13205 
13206 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034
13207  * # Versions of the import_* functions which are more suitable for
13208  * # Cython code.
13209  * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
13210  *     try:
13211  *         _import_array()
13212  */
13213 
__pyx_f_5numpy_import_array(void)13214 static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
13215   int __pyx_r;
13216   __Pyx_RefNannyDeclarations
13217   PyObject *__pyx_t_1 = NULL;
13218   PyObject *__pyx_t_2 = NULL;
13219   PyObject *__pyx_t_3 = NULL;
13220   int __pyx_t_4;
13221   PyObject *__pyx_t_5 = NULL;
13222   PyObject *__pyx_t_6 = NULL;
13223   PyObject *__pyx_t_7 = NULL;
13224   PyObject *__pyx_t_8 = NULL;
13225   __Pyx_RefNannySetupContext("import_array", 0);
13226 
13227   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035
13228  * # Cython code.
13229  * cdef inline int import_array() except -1:
13230  *     try:             # <<<<<<<<<<<<<<
13231  *         _import_array()
13232  *     except Exception:
13233  */
13234   {
13235     __Pyx_PyThreadState_declare
13236     __Pyx_PyThreadState_assign
13237     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
13238     __Pyx_XGOTREF(__pyx_t_1);
13239     __Pyx_XGOTREF(__pyx_t_2);
13240     __Pyx_XGOTREF(__pyx_t_3);
13241     /*try:*/ {
13242 
13243       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1036
13244  * cdef inline int import_array() except -1:
13245  *     try:
13246  *         _import_array()             # <<<<<<<<<<<<<<
13247  *     except Exception:
13248  *         raise ImportError("numpy.core.multiarray failed to import")
13249  */
13250       __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 1036, __pyx_L3_error)
13251 
13252       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035
13253  * # Cython code.
13254  * cdef inline int import_array() except -1:
13255  *     try:             # <<<<<<<<<<<<<<
13256  *         _import_array()
13257  *     except Exception:
13258  */
13259     }
13260     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
13261     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
13262     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13263     goto __pyx_L8_try_end;
13264     __pyx_L3_error:;
13265 
13266     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1037
13267  *     try:
13268  *         _import_array()
13269  *     except Exception:             # <<<<<<<<<<<<<<
13270  *         raise ImportError("numpy.core.multiarray failed to import")
13271  *
13272  */
13273     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
13274     if (__pyx_t_4) {
13275       __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
13276       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 1037, __pyx_L5_except_error)
13277       __Pyx_GOTREF(__pyx_t_5);
13278       __Pyx_GOTREF(__pyx_t_6);
13279       __Pyx_GOTREF(__pyx_t_7);
13280 
13281       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038
13282  *         _import_array()
13283  *     except Exception:
13284  *         raise ImportError("numpy.core.multiarray failed to import")             # <<<<<<<<<<<<<<
13285  *
13286  * cdef inline int import_umath() except -1:
13287  */
13288       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1038, __pyx_L5_except_error)
13289       __Pyx_GOTREF(__pyx_t_8);
13290       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
13291       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
13292       __PYX_ERR(3, 1038, __pyx_L5_except_error)
13293     }
13294     goto __pyx_L5_except_error;
13295     __pyx_L5_except_error:;
13296 
13297     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035
13298  * # Cython code.
13299  * cdef inline int import_array() except -1:
13300  *     try:             # <<<<<<<<<<<<<<
13301  *         _import_array()
13302  *     except Exception:
13303  */
13304     __Pyx_XGIVEREF(__pyx_t_1);
13305     __Pyx_XGIVEREF(__pyx_t_2);
13306     __Pyx_XGIVEREF(__pyx_t_3);
13307     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
13308     goto __pyx_L1_error;
13309     __pyx_L8_try_end:;
13310   }
13311 
13312   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034
13313  * # Versions of the import_* functions which are more suitable for
13314  * # Cython code.
13315  * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
13316  *     try:
13317  *         _import_array()
13318  */
13319 
13320   /* function exit code */
13321   __pyx_r = 0;
13322   goto __pyx_L0;
13323   __pyx_L1_error:;
13324   __Pyx_XDECREF(__pyx_t_5);
13325   __Pyx_XDECREF(__pyx_t_6);
13326   __Pyx_XDECREF(__pyx_t_7);
13327   __Pyx_XDECREF(__pyx_t_8);
13328   __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
13329   __pyx_r = -1;
13330   __pyx_L0:;
13331   __Pyx_RefNannyFinishContext();
13332   return __pyx_r;
13333 }
13334 
13335 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040
13336  *         raise ImportError("numpy.core.multiarray failed to import")
13337  *
13338  * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
13339  *     try:
13340  *         _import_umath()
13341  */
13342 
__pyx_f_5numpy_import_umath(void)13343 static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
13344   int __pyx_r;
13345   __Pyx_RefNannyDeclarations
13346   PyObject *__pyx_t_1 = NULL;
13347   PyObject *__pyx_t_2 = NULL;
13348   PyObject *__pyx_t_3 = NULL;
13349   int __pyx_t_4;
13350   PyObject *__pyx_t_5 = NULL;
13351   PyObject *__pyx_t_6 = NULL;
13352   PyObject *__pyx_t_7 = NULL;
13353   PyObject *__pyx_t_8 = NULL;
13354   __Pyx_RefNannySetupContext("import_umath", 0);
13355 
13356   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041
13357  *
13358  * cdef inline int import_umath() except -1:
13359  *     try:             # <<<<<<<<<<<<<<
13360  *         _import_umath()
13361  *     except Exception:
13362  */
13363   {
13364     __Pyx_PyThreadState_declare
13365     __Pyx_PyThreadState_assign
13366     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
13367     __Pyx_XGOTREF(__pyx_t_1);
13368     __Pyx_XGOTREF(__pyx_t_2);
13369     __Pyx_XGOTREF(__pyx_t_3);
13370     /*try:*/ {
13371 
13372       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1042
13373  * cdef inline int import_umath() except -1:
13374  *     try:
13375  *         _import_umath()             # <<<<<<<<<<<<<<
13376  *     except Exception:
13377  *         raise ImportError("numpy.core.umath failed to import")
13378  */
13379       __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 1042, __pyx_L3_error)
13380 
13381       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041
13382  *
13383  * cdef inline int import_umath() except -1:
13384  *     try:             # <<<<<<<<<<<<<<
13385  *         _import_umath()
13386  *     except Exception:
13387  */
13388     }
13389     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
13390     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
13391     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13392     goto __pyx_L8_try_end;
13393     __pyx_L3_error:;
13394 
13395     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1043
13396  *     try:
13397  *         _import_umath()
13398  *     except Exception:             # <<<<<<<<<<<<<<
13399  *         raise ImportError("numpy.core.umath failed to import")
13400  *
13401  */
13402     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
13403     if (__pyx_t_4) {
13404       __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
13405       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 1043, __pyx_L5_except_error)
13406       __Pyx_GOTREF(__pyx_t_5);
13407       __Pyx_GOTREF(__pyx_t_6);
13408       __Pyx_GOTREF(__pyx_t_7);
13409 
13410       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044
13411  *         _import_umath()
13412  *     except Exception:
13413  *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
13414  *
13415  * cdef inline int import_ufunc() except -1:
13416  */
13417       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1044, __pyx_L5_except_error)
13418       __Pyx_GOTREF(__pyx_t_8);
13419       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
13420       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
13421       __PYX_ERR(3, 1044, __pyx_L5_except_error)
13422     }
13423     goto __pyx_L5_except_error;
13424     __pyx_L5_except_error:;
13425 
13426     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041
13427  *
13428  * cdef inline int import_umath() except -1:
13429  *     try:             # <<<<<<<<<<<<<<
13430  *         _import_umath()
13431  *     except Exception:
13432  */
13433     __Pyx_XGIVEREF(__pyx_t_1);
13434     __Pyx_XGIVEREF(__pyx_t_2);
13435     __Pyx_XGIVEREF(__pyx_t_3);
13436     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
13437     goto __pyx_L1_error;
13438     __pyx_L8_try_end:;
13439   }
13440 
13441   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040
13442  *         raise ImportError("numpy.core.multiarray failed to import")
13443  *
13444  * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
13445  *     try:
13446  *         _import_umath()
13447  */
13448 
13449   /* function exit code */
13450   __pyx_r = 0;
13451   goto __pyx_L0;
13452   __pyx_L1_error:;
13453   __Pyx_XDECREF(__pyx_t_5);
13454   __Pyx_XDECREF(__pyx_t_6);
13455   __Pyx_XDECREF(__pyx_t_7);
13456   __Pyx_XDECREF(__pyx_t_8);
13457   __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
13458   __pyx_r = -1;
13459   __pyx_L0:;
13460   __Pyx_RefNannyFinishContext();
13461   return __pyx_r;
13462 }
13463 
13464 /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046
13465  *         raise ImportError("numpy.core.umath failed to import")
13466  *
13467  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
13468  *     try:
13469  *         _import_umath()
13470  */
13471 
__pyx_f_5numpy_import_ufunc(void)13472 static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
13473   int __pyx_r;
13474   __Pyx_RefNannyDeclarations
13475   PyObject *__pyx_t_1 = NULL;
13476   PyObject *__pyx_t_2 = NULL;
13477   PyObject *__pyx_t_3 = NULL;
13478   int __pyx_t_4;
13479   PyObject *__pyx_t_5 = NULL;
13480   PyObject *__pyx_t_6 = NULL;
13481   PyObject *__pyx_t_7 = NULL;
13482   PyObject *__pyx_t_8 = NULL;
13483   __Pyx_RefNannySetupContext("import_ufunc", 0);
13484 
13485   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047
13486  *
13487  * cdef inline int import_ufunc() except -1:
13488  *     try:             # <<<<<<<<<<<<<<
13489  *         _import_umath()
13490  *     except Exception:
13491  */
13492   {
13493     __Pyx_PyThreadState_declare
13494     __Pyx_PyThreadState_assign
13495     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
13496     __Pyx_XGOTREF(__pyx_t_1);
13497     __Pyx_XGOTREF(__pyx_t_2);
13498     __Pyx_XGOTREF(__pyx_t_3);
13499     /*try:*/ {
13500 
13501       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1048
13502  * cdef inline int import_ufunc() except -1:
13503  *     try:
13504  *         _import_umath()             # <<<<<<<<<<<<<<
13505  *     except Exception:
13506  *         raise ImportError("numpy.core.umath failed to import")
13507  */
13508       __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(3, 1048, __pyx_L3_error)
13509 
13510       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047
13511  *
13512  * cdef inline int import_ufunc() except -1:
13513  *     try:             # <<<<<<<<<<<<<<
13514  *         _import_umath()
13515  *     except Exception:
13516  */
13517     }
13518     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
13519     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
13520     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13521     goto __pyx_L8_try_end;
13522     __pyx_L3_error:;
13523 
13524     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1049
13525  *     try:
13526  *         _import_umath()
13527  *     except Exception:             # <<<<<<<<<<<<<<
13528  *         raise ImportError("numpy.core.umath failed to import")
13529  */
13530     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
13531     if (__pyx_t_4) {
13532       __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
13533       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(3, 1049, __pyx_L5_except_error)
13534       __Pyx_GOTREF(__pyx_t_5);
13535       __Pyx_GOTREF(__pyx_t_6);
13536       __Pyx_GOTREF(__pyx_t_7);
13537 
13538       /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1050
13539  *         _import_umath()
13540  *     except Exception:
13541  *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
13542  */
13543       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 1050, __pyx_L5_except_error)
13544       __Pyx_GOTREF(__pyx_t_8);
13545       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
13546       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
13547       __PYX_ERR(3, 1050, __pyx_L5_except_error)
13548     }
13549     goto __pyx_L5_except_error;
13550     __pyx_L5_except_error:;
13551 
13552     /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047
13553  *
13554  * cdef inline int import_ufunc() except -1:
13555  *     try:             # <<<<<<<<<<<<<<
13556  *         _import_umath()
13557  *     except Exception:
13558  */
13559     __Pyx_XGIVEREF(__pyx_t_1);
13560     __Pyx_XGIVEREF(__pyx_t_2);
13561     __Pyx_XGIVEREF(__pyx_t_3);
13562     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
13563     goto __pyx_L1_error;
13564     __pyx_L8_try_end:;
13565   }
13566 
13567   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046
13568  *         raise ImportError("numpy.core.umath failed to import")
13569  *
13570  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
13571  *     try:
13572  *         _import_umath()
13573  */
13574 
13575   /* function exit code */
13576   __pyx_r = 0;
13577   goto __pyx_L0;
13578   __pyx_L1_error:;
13579   __Pyx_XDECREF(__pyx_t_5);
13580   __Pyx_XDECREF(__pyx_t_6);
13581   __Pyx_XDECREF(__pyx_t_7);
13582   __Pyx_XDECREF(__pyx_t_8);
13583   __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
13584   __pyx_r = -1;
13585   __pyx_L0:;
13586   __Pyx_RefNannyFinishContext();
13587   return __pyx_r;
13588 }
13589 
13590 /* "View.MemoryView":122
13591  *         cdef bint dtype_is_object
13592  *
13593  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
13594  *                   mode="c", bint allocate_buffer=True):
13595  *
13596  */
13597 
13598 /* Python wrapper */
13599 static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_array___cinit__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)13600 static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13601   PyObject *__pyx_v_shape = 0;
13602   Py_ssize_t __pyx_v_itemsize;
13603   PyObject *__pyx_v_format = 0;
13604   PyObject *__pyx_v_mode = 0;
13605   int __pyx_v_allocate_buffer;
13606   int __pyx_r;
13607   __Pyx_RefNannyDeclarations
13608   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
13609   {
13610     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shape,&__pyx_n_s_itemsize,&__pyx_n_s_format,&__pyx_n_s_mode,&__pyx_n_s_allocate_buffer,0};
13611     PyObject* values[5] = {0,0,0,0,0};
13612     values[3] = ((PyObject *)__pyx_n_s_c);
13613     if (unlikely(__pyx_kwds)) {
13614       Py_ssize_t kw_args;
13615       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13616       switch (pos_args) {
13617         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
13618         CYTHON_FALLTHROUGH;
13619         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
13620         CYTHON_FALLTHROUGH;
13621         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13622         CYTHON_FALLTHROUGH;
13623         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13624         CYTHON_FALLTHROUGH;
13625         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13626         CYTHON_FALLTHROUGH;
13627         case  0: break;
13628         default: goto __pyx_L5_argtuple_error;
13629       }
13630       kw_args = PyDict_Size(__pyx_kwds);
13631       switch (pos_args) {
13632         case  0:
13633         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--;
13634         else goto __pyx_L5_argtuple_error;
13635         CYTHON_FALLTHROUGH;
13636         case  1:
13637         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_itemsize)) != 0)) kw_args--;
13638         else {
13639           __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); __PYX_ERR(1, 122, __pyx_L3_error)
13640         }
13641         CYTHON_FALLTHROUGH;
13642         case  2:
13643         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--;
13644         else {
13645           __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); __PYX_ERR(1, 122, __pyx_L3_error)
13646         }
13647         CYTHON_FALLTHROUGH;
13648         case  3:
13649         if (kw_args > 0) {
13650           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode);
13651           if (value) { values[3] = value; kw_args--; }
13652         }
13653         CYTHON_FALLTHROUGH;
13654         case  4:
13655         if (kw_args > 0) {
13656           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_allocate_buffer);
13657           if (value) { values[4] = value; kw_args--; }
13658         }
13659       }
13660       if (unlikely(kw_args > 0)) {
13661         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 122, __pyx_L3_error)
13662       }
13663     } else {
13664       switch (PyTuple_GET_SIZE(__pyx_args)) {
13665         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
13666         CYTHON_FALLTHROUGH;
13667         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
13668         CYTHON_FALLTHROUGH;
13669         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13670         values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13671         values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13672         break;
13673         default: goto __pyx_L5_argtuple_error;
13674       }
13675     }
13676     __pyx_v_shape = ((PyObject*)values[0]);
13677     __pyx_v_itemsize = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_itemsize == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 122, __pyx_L3_error)
13678     __pyx_v_format = values[2];
13679     __pyx_v_mode = values[3];
13680     if (values[4]) {
13681       __pyx_v_allocate_buffer = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_allocate_buffer == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 123, __pyx_L3_error)
13682     } else {
13683 
13684       /* "View.MemoryView":123
13685  *
13686  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,
13687  *                   mode="c", bint allocate_buffer=True):             # <<<<<<<<<<<<<<
13688  *
13689  *         cdef int idx
13690  */
13691       __pyx_v_allocate_buffer = ((int)1);
13692     }
13693   }
13694   goto __pyx_L4_argument_unpacking_done;
13695   __pyx_L5_argtuple_error:;
13696   __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 122, __pyx_L3_error)
13697   __pyx_L3_error:;
13698   __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13699   __Pyx_RefNannyFinishContext();
13700   return -1;
13701   __pyx_L4_argument_unpacking_done:;
13702   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) __PYX_ERR(1, 122, __pyx_L1_error)
13703   if (unlikely(((PyObject *)__pyx_v_format) == Py_None)) {
13704     PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "format"); __PYX_ERR(1, 122, __pyx_L1_error)
13705   }
13706   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(((struct __pyx_array_obj *)__pyx_v_self), __pyx_v_shape, __pyx_v_itemsize, __pyx_v_format, __pyx_v_mode, __pyx_v_allocate_buffer);
13707 
13708   /* "View.MemoryView":122
13709  *         cdef bint dtype_is_object
13710  *
13711  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
13712  *                   mode="c", bint allocate_buffer=True):
13713  *
13714  */
13715 
13716   /* function exit code */
13717   goto __pyx_L0;
13718   __pyx_L1_error:;
13719   __pyx_r = -1;
13720   __pyx_L0:;
13721   __Pyx_RefNannyFinishContext();
13722   return __pyx_r;
13723 }
13724 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj * __pyx_v_self,PyObject * __pyx_v_shape,Py_ssize_t __pyx_v_itemsize,PyObject * __pyx_v_format,PyObject * __pyx_v_mode,int __pyx_v_allocate_buffer)13725 static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer) {
13726   int __pyx_v_idx;
13727   Py_ssize_t __pyx_v_i;
13728   Py_ssize_t __pyx_v_dim;
13729   PyObject **__pyx_v_p;
13730   char __pyx_v_order;
13731   int __pyx_r;
13732   __Pyx_RefNannyDeclarations
13733   Py_ssize_t __pyx_t_1;
13734   int __pyx_t_2;
13735   PyObject *__pyx_t_3 = NULL;
13736   int __pyx_t_4;
13737   PyObject *__pyx_t_5 = NULL;
13738   PyObject *__pyx_t_6 = NULL;
13739   char *__pyx_t_7;
13740   int __pyx_t_8;
13741   Py_ssize_t __pyx_t_9;
13742   PyObject *__pyx_t_10 = NULL;
13743   Py_ssize_t __pyx_t_11;
13744   __Pyx_RefNannySetupContext("__cinit__", 0);
13745   __Pyx_INCREF(__pyx_v_format);
13746 
13747   /* "View.MemoryView":129
13748  *         cdef PyObject **p
13749  *
13750  *         self.ndim = <int> len(shape)             # <<<<<<<<<<<<<<
13751  *         self.itemsize = itemsize
13752  *
13753  */
13754   if (unlikely(__pyx_v_shape == Py_None)) {
13755     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
13756     __PYX_ERR(1, 129, __pyx_L1_error)
13757   }
13758   __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 129, __pyx_L1_error)
13759   __pyx_v_self->ndim = ((int)__pyx_t_1);
13760 
13761   /* "View.MemoryView":130
13762  *
13763  *         self.ndim = <int> len(shape)
13764  *         self.itemsize = itemsize             # <<<<<<<<<<<<<<
13765  *
13766  *         if not self.ndim:
13767  */
13768   __pyx_v_self->itemsize = __pyx_v_itemsize;
13769 
13770   /* "View.MemoryView":132
13771  *         self.itemsize = itemsize
13772  *
13773  *         if not self.ndim:             # <<<<<<<<<<<<<<
13774  *             raise ValueError("Empty shape tuple for cython.array")
13775  *
13776  */
13777   __pyx_t_2 = ((!(__pyx_v_self->ndim != 0)) != 0);
13778   if (unlikely(__pyx_t_2)) {
13779 
13780     /* "View.MemoryView":133
13781  *
13782  *         if not self.ndim:
13783  *             raise ValueError("Empty shape tuple for cython.array")             # <<<<<<<<<<<<<<
13784  *
13785  *         if itemsize <= 0:
13786  */
13787     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 133, __pyx_L1_error)
13788     __Pyx_GOTREF(__pyx_t_3);
13789     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
13790     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13791     __PYX_ERR(1, 133, __pyx_L1_error)
13792 
13793     /* "View.MemoryView":132
13794  *         self.itemsize = itemsize
13795  *
13796  *         if not self.ndim:             # <<<<<<<<<<<<<<
13797  *             raise ValueError("Empty shape tuple for cython.array")
13798  *
13799  */
13800   }
13801 
13802   /* "View.MemoryView":135
13803  *             raise ValueError("Empty shape tuple for cython.array")
13804  *
13805  *         if itemsize <= 0:             # <<<<<<<<<<<<<<
13806  *             raise ValueError("itemsize <= 0 for cython.array")
13807  *
13808  */
13809   __pyx_t_2 = ((__pyx_v_itemsize <= 0) != 0);
13810   if (unlikely(__pyx_t_2)) {
13811 
13812     /* "View.MemoryView":136
13813  *
13814  *         if itemsize <= 0:
13815  *             raise ValueError("itemsize <= 0 for cython.array")             # <<<<<<<<<<<<<<
13816  *
13817  *         if not isinstance(format, bytes):
13818  */
13819     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 136, __pyx_L1_error)
13820     __Pyx_GOTREF(__pyx_t_3);
13821     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
13822     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13823     __PYX_ERR(1, 136, __pyx_L1_error)
13824 
13825     /* "View.MemoryView":135
13826  *             raise ValueError("Empty shape tuple for cython.array")
13827  *
13828  *         if itemsize <= 0:             # <<<<<<<<<<<<<<
13829  *             raise ValueError("itemsize <= 0 for cython.array")
13830  *
13831  */
13832   }
13833 
13834   /* "View.MemoryView":138
13835  *             raise ValueError("itemsize <= 0 for cython.array")
13836  *
13837  *         if not isinstance(format, bytes):             # <<<<<<<<<<<<<<
13838  *             format = format.encode('ASCII')
13839  *         self._format = format  # keep a reference to the byte string
13840  */
13841   __pyx_t_2 = PyBytes_Check(__pyx_v_format);
13842   __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0);
13843   if (__pyx_t_4) {
13844 
13845     /* "View.MemoryView":139
13846  *
13847  *         if not isinstance(format, bytes):
13848  *             format = format.encode('ASCII')             # <<<<<<<<<<<<<<
13849  *         self._format = format  # keep a reference to the byte string
13850  *         self.format = self._format
13851  */
13852     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 139, __pyx_L1_error)
13853     __Pyx_GOTREF(__pyx_t_5);
13854     __pyx_t_6 = NULL;
13855     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
13856       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
13857       if (likely(__pyx_t_6)) {
13858         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
13859         __Pyx_INCREF(__pyx_t_6);
13860         __Pyx_INCREF(function);
13861         __Pyx_DECREF_SET(__pyx_t_5, function);
13862       }
13863     }
13864     __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
13865     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
13866     if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 139, __pyx_L1_error)
13867     __Pyx_GOTREF(__pyx_t_3);
13868     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13869     __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
13870     __pyx_t_3 = 0;
13871 
13872     /* "View.MemoryView":138
13873  *             raise ValueError("itemsize <= 0 for cython.array")
13874  *
13875  *         if not isinstance(format, bytes):             # <<<<<<<<<<<<<<
13876  *             format = format.encode('ASCII')
13877  *         self._format = format  # keep a reference to the byte string
13878  */
13879   }
13880 
13881   /* "View.MemoryView":140
13882  *         if not isinstance(format, bytes):
13883  *             format = format.encode('ASCII')
13884  *         self._format = format  # keep a reference to the byte string             # <<<<<<<<<<<<<<
13885  *         self.format = self._format
13886  *
13887  */
13888   if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 140, __pyx_L1_error)
13889   __pyx_t_3 = __pyx_v_format;
13890   __Pyx_INCREF(__pyx_t_3);
13891   __Pyx_GIVEREF(__pyx_t_3);
13892   __Pyx_GOTREF(__pyx_v_self->_format);
13893   __Pyx_DECREF(__pyx_v_self->_format);
13894   __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
13895   __pyx_t_3 = 0;
13896 
13897   /* "View.MemoryView":141
13898  *             format = format.encode('ASCII')
13899  *         self._format = format  # keep a reference to the byte string
13900  *         self.format = self._format             # <<<<<<<<<<<<<<
13901  *
13902  *
13903  */
13904   if (unlikely(__pyx_v_self->_format == Py_None)) {
13905     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
13906     __PYX_ERR(1, 141, __pyx_L1_error)
13907   }
13908   __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 141, __pyx_L1_error)
13909   __pyx_v_self->format = __pyx_t_7;
13910 
13911   /* "View.MemoryView":144
13912  *
13913  *
13914  *         self._shape = <Py_ssize_t *> PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2)             # <<<<<<<<<<<<<<
13915  *         self._strides = self._shape + self.ndim
13916  *
13917  */
13918   __pyx_v_self->_shape = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * __pyx_v_self->ndim) * 2)));
13919 
13920   /* "View.MemoryView":145
13921  *
13922  *         self._shape = <Py_ssize_t *> PyObject_Malloc(sizeof(Py_ssize_t)*self.ndim*2)
13923  *         self._strides = self._shape + self.ndim             # <<<<<<<<<<<<<<
13924  *
13925  *         if not self._shape:
13926  */
13927   __pyx_v_self->_strides = (__pyx_v_self->_shape + __pyx_v_self->ndim);
13928 
13929   /* "View.MemoryView":147
13930  *         self._strides = self._shape + self.ndim
13931  *
13932  *         if not self._shape:             # <<<<<<<<<<<<<<
13933  *             raise MemoryError("unable to allocate shape and strides.")
13934  *
13935  */
13936   __pyx_t_4 = ((!(__pyx_v_self->_shape != 0)) != 0);
13937   if (unlikely(__pyx_t_4)) {
13938 
13939     /* "View.MemoryView":148
13940  *
13941  *         if not self._shape:
13942  *             raise MemoryError("unable to allocate shape and strides.")             # <<<<<<<<<<<<<<
13943  *
13944  *
13945  */
13946     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 148, __pyx_L1_error)
13947     __Pyx_GOTREF(__pyx_t_3);
13948     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
13949     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13950     __PYX_ERR(1, 148, __pyx_L1_error)
13951 
13952     /* "View.MemoryView":147
13953  *         self._strides = self._shape + self.ndim
13954  *
13955  *         if not self._shape:             # <<<<<<<<<<<<<<
13956  *             raise MemoryError("unable to allocate shape and strides.")
13957  *
13958  */
13959   }
13960 
13961   /* "View.MemoryView":151
13962  *
13963  *
13964  *         for idx, dim in enumerate(shape):             # <<<<<<<<<<<<<<
13965  *             if dim <= 0:
13966  *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
13967  */
13968   __pyx_t_8 = 0;
13969   __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
13970   for (;;) {
13971     if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
13972     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
13973     __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 151, __pyx_L1_error)
13974     #else
13975     __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 151, __pyx_L1_error)
13976     __Pyx_GOTREF(__pyx_t_5);
13977     #endif
13978     __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 151, __pyx_L1_error)
13979     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13980     __pyx_v_dim = __pyx_t_9;
13981     __pyx_v_idx = __pyx_t_8;
13982     __pyx_t_8 = (__pyx_t_8 + 1);
13983 
13984     /* "View.MemoryView":152
13985  *
13986  *         for idx, dim in enumerate(shape):
13987  *             if dim <= 0:             # <<<<<<<<<<<<<<
13988  *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
13989  *             self._shape[idx] = dim
13990  */
13991     __pyx_t_4 = ((__pyx_v_dim <= 0) != 0);
13992     if (unlikely(__pyx_t_4)) {
13993 
13994       /* "View.MemoryView":153
13995  *         for idx, dim in enumerate(shape):
13996  *             if dim <= 0:
13997  *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))             # <<<<<<<<<<<<<<
13998  *             self._shape[idx] = dim
13999  *
14000  */
14001       __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 153, __pyx_L1_error)
14002       __Pyx_GOTREF(__pyx_t_5);
14003       __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 153, __pyx_L1_error)
14004       __Pyx_GOTREF(__pyx_t_6);
14005       __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 153, __pyx_L1_error)
14006       __Pyx_GOTREF(__pyx_t_10);
14007       __Pyx_GIVEREF(__pyx_t_5);
14008       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
14009       __Pyx_GIVEREF(__pyx_t_6);
14010       PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
14011       __pyx_t_5 = 0;
14012       __pyx_t_6 = 0;
14013       __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 153, __pyx_L1_error)
14014       __Pyx_GOTREF(__pyx_t_6);
14015       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14016       __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 153, __pyx_L1_error)
14017       __Pyx_GOTREF(__pyx_t_10);
14018       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14019       __Pyx_Raise(__pyx_t_10, 0, 0, 0);
14020       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14021       __PYX_ERR(1, 153, __pyx_L1_error)
14022 
14023       /* "View.MemoryView":152
14024  *
14025  *         for idx, dim in enumerate(shape):
14026  *             if dim <= 0:             # <<<<<<<<<<<<<<
14027  *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
14028  *             self._shape[idx] = dim
14029  */
14030     }
14031 
14032     /* "View.MemoryView":154
14033  *             if dim <= 0:
14034  *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
14035  *             self._shape[idx] = dim             # <<<<<<<<<<<<<<
14036  *
14037  *         cdef char order
14038  */
14039     (__pyx_v_self->_shape[__pyx_v_idx]) = __pyx_v_dim;
14040 
14041     /* "View.MemoryView":151
14042  *
14043  *
14044  *         for idx, dim in enumerate(shape):             # <<<<<<<<<<<<<<
14045  *             if dim <= 0:
14046  *                 raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
14047  */
14048   }
14049   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14050 
14051   /* "View.MemoryView":157
14052  *
14053  *         cdef char order
14054  *         if mode == 'fortran':             # <<<<<<<<<<<<<<
14055  *             order = b'F'
14056  *             self.mode = u'fortran'
14057  */
14058   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_fortran, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 157, __pyx_L1_error)
14059   if (__pyx_t_4) {
14060 
14061     /* "View.MemoryView":158
14062  *         cdef char order
14063  *         if mode == 'fortran':
14064  *             order = b'F'             # <<<<<<<<<<<<<<
14065  *             self.mode = u'fortran'
14066  *         elif mode == 'c':
14067  */
14068     __pyx_v_order = 'F';
14069 
14070     /* "View.MemoryView":159
14071  *         if mode == 'fortran':
14072  *             order = b'F'
14073  *             self.mode = u'fortran'             # <<<<<<<<<<<<<<
14074  *         elif mode == 'c':
14075  *             order = b'C'
14076  */
14077     __Pyx_INCREF(__pyx_n_u_fortran);
14078     __Pyx_GIVEREF(__pyx_n_u_fortran);
14079     __Pyx_GOTREF(__pyx_v_self->mode);
14080     __Pyx_DECREF(__pyx_v_self->mode);
14081     __pyx_v_self->mode = __pyx_n_u_fortran;
14082 
14083     /* "View.MemoryView":157
14084  *
14085  *         cdef char order
14086  *         if mode == 'fortran':             # <<<<<<<<<<<<<<
14087  *             order = b'F'
14088  *             self.mode = u'fortran'
14089  */
14090     goto __pyx_L10;
14091   }
14092 
14093   /* "View.MemoryView":160
14094  *             order = b'F'
14095  *             self.mode = u'fortran'
14096  *         elif mode == 'c':             # <<<<<<<<<<<<<<
14097  *             order = b'C'
14098  *             self.mode = u'c'
14099  */
14100   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 160, __pyx_L1_error)
14101   if (likely(__pyx_t_4)) {
14102 
14103     /* "View.MemoryView":161
14104  *             self.mode = u'fortran'
14105  *         elif mode == 'c':
14106  *             order = b'C'             # <<<<<<<<<<<<<<
14107  *             self.mode = u'c'
14108  *         else:
14109  */
14110     __pyx_v_order = 'C';
14111 
14112     /* "View.MemoryView":162
14113  *         elif mode == 'c':
14114  *             order = b'C'
14115  *             self.mode = u'c'             # <<<<<<<<<<<<<<
14116  *         else:
14117  *             raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode)
14118  */
14119     __Pyx_INCREF(__pyx_n_u_c);
14120     __Pyx_GIVEREF(__pyx_n_u_c);
14121     __Pyx_GOTREF(__pyx_v_self->mode);
14122     __Pyx_DECREF(__pyx_v_self->mode);
14123     __pyx_v_self->mode = __pyx_n_u_c;
14124 
14125     /* "View.MemoryView":160
14126  *             order = b'F'
14127  *             self.mode = u'fortran'
14128  *         elif mode == 'c':             # <<<<<<<<<<<<<<
14129  *             order = b'C'
14130  *             self.mode = u'c'
14131  */
14132     goto __pyx_L10;
14133   }
14134 
14135   /* "View.MemoryView":164
14136  *             self.mode = u'c'
14137  *         else:
14138  *             raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode)             # <<<<<<<<<<<<<<
14139  *
14140  *         self.len = fill_contig_strides_array(self._shape, self._strides,
14141  */
14142   /*else*/ {
14143     __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 164, __pyx_L1_error)
14144     __Pyx_GOTREF(__pyx_t_3);
14145     __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 164, __pyx_L1_error)
14146     __Pyx_GOTREF(__pyx_t_10);
14147     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14148     __Pyx_Raise(__pyx_t_10, 0, 0, 0);
14149     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14150     __PYX_ERR(1, 164, __pyx_L1_error)
14151   }
14152   __pyx_L10:;
14153 
14154   /* "View.MemoryView":166
14155  *             raise ValueError("Invalid mode, expected 'c' or 'fortran', got %s" % mode)
14156  *
14157  *         self.len = fill_contig_strides_array(self._shape, self._strides,             # <<<<<<<<<<<<<<
14158  *                                              itemsize, self.ndim, order)
14159  *
14160  */
14161   __pyx_v_self->len = __pyx_fill_contig_strides_array(__pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_itemsize, __pyx_v_self->ndim, __pyx_v_order);
14162 
14163   /* "View.MemoryView":169
14164  *                                              itemsize, self.ndim, order)
14165  *
14166  *         self.free_data = allocate_buffer             # <<<<<<<<<<<<<<
14167  *         self.dtype_is_object = format == b'O'
14168  *         if allocate_buffer:
14169  */
14170   __pyx_v_self->free_data = __pyx_v_allocate_buffer;
14171 
14172   /* "View.MemoryView":170
14173  *
14174  *         self.free_data = allocate_buffer
14175  *         self.dtype_is_object = format == b'O'             # <<<<<<<<<<<<<<
14176  *         if allocate_buffer:
14177  *
14178  */
14179   __pyx_t_10 = PyObject_RichCompare(__pyx_v_format, __pyx_n_b_O, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 170, __pyx_L1_error)
14180   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 170, __pyx_L1_error)
14181   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14182   __pyx_v_self->dtype_is_object = __pyx_t_4;
14183 
14184   /* "View.MemoryView":171
14185  *         self.free_data = allocate_buffer
14186  *         self.dtype_is_object = format == b'O'
14187  *         if allocate_buffer:             # <<<<<<<<<<<<<<
14188  *
14189  *
14190  */
14191   __pyx_t_4 = (__pyx_v_allocate_buffer != 0);
14192   if (__pyx_t_4) {
14193 
14194     /* "View.MemoryView":174
14195  *
14196  *
14197  *             self.data = <char *>malloc(self.len)             # <<<<<<<<<<<<<<
14198  *             if not self.data:
14199  *                 raise MemoryError("unable to allocate array data.")
14200  */
14201     __pyx_v_self->data = ((char *)malloc(__pyx_v_self->len));
14202 
14203     /* "View.MemoryView":175
14204  *
14205  *             self.data = <char *>malloc(self.len)
14206  *             if not self.data:             # <<<<<<<<<<<<<<
14207  *                 raise MemoryError("unable to allocate array data.")
14208  *
14209  */
14210     __pyx_t_4 = ((!(__pyx_v_self->data != 0)) != 0);
14211     if (unlikely(__pyx_t_4)) {
14212 
14213       /* "View.MemoryView":176
14214  *             self.data = <char *>malloc(self.len)
14215  *             if not self.data:
14216  *                 raise MemoryError("unable to allocate array data.")             # <<<<<<<<<<<<<<
14217  *
14218  *             if self.dtype_is_object:
14219  */
14220       __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 176, __pyx_L1_error)
14221       __Pyx_GOTREF(__pyx_t_10);
14222       __Pyx_Raise(__pyx_t_10, 0, 0, 0);
14223       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
14224       __PYX_ERR(1, 176, __pyx_L1_error)
14225 
14226       /* "View.MemoryView":175
14227  *
14228  *             self.data = <char *>malloc(self.len)
14229  *             if not self.data:             # <<<<<<<<<<<<<<
14230  *                 raise MemoryError("unable to allocate array data.")
14231  *
14232  */
14233     }
14234 
14235     /* "View.MemoryView":178
14236  *                 raise MemoryError("unable to allocate array data.")
14237  *
14238  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
14239  *                 p = <PyObject **> self.data
14240  *                 for i in range(self.len / itemsize):
14241  */
14242     __pyx_t_4 = (__pyx_v_self->dtype_is_object != 0);
14243     if (__pyx_t_4) {
14244 
14245       /* "View.MemoryView":179
14246  *
14247  *             if self.dtype_is_object:
14248  *                 p = <PyObject **> self.data             # <<<<<<<<<<<<<<
14249  *                 for i in range(self.len / itemsize):
14250  *                     p[i] = Py_None
14251  */
14252       __pyx_v_p = ((PyObject **)__pyx_v_self->data);
14253 
14254       /* "View.MemoryView":180
14255  *             if self.dtype_is_object:
14256  *                 p = <PyObject **> self.data
14257  *                 for i in range(self.len / itemsize):             # <<<<<<<<<<<<<<
14258  *                     p[i] = Py_None
14259  *                     Py_INCREF(Py_None)
14260  */
14261       if (unlikely(__pyx_v_itemsize == 0)) {
14262         PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
14263         __PYX_ERR(1, 180, __pyx_L1_error)
14264       }
14265       else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_self->len))) {
14266         PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
14267         __PYX_ERR(1, 180, __pyx_L1_error)
14268       }
14269       __pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
14270       __pyx_t_9 = __pyx_t_1;
14271       for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
14272         __pyx_v_i = __pyx_t_11;
14273 
14274         /* "View.MemoryView":181
14275  *                 p = <PyObject **> self.data
14276  *                 for i in range(self.len / itemsize):
14277  *                     p[i] = Py_None             # <<<<<<<<<<<<<<
14278  *                     Py_INCREF(Py_None)
14279  *
14280  */
14281         (__pyx_v_p[__pyx_v_i]) = Py_None;
14282 
14283         /* "View.MemoryView":182
14284  *                 for i in range(self.len / itemsize):
14285  *                     p[i] = Py_None
14286  *                     Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
14287  *
14288  *     @cname('getbuffer')
14289  */
14290         Py_INCREF(Py_None);
14291       }
14292 
14293       /* "View.MemoryView":178
14294  *                 raise MemoryError("unable to allocate array data.")
14295  *
14296  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
14297  *                 p = <PyObject **> self.data
14298  *                 for i in range(self.len / itemsize):
14299  */
14300     }
14301 
14302     /* "View.MemoryView":171
14303  *         self.free_data = allocate_buffer
14304  *         self.dtype_is_object = format == b'O'
14305  *         if allocate_buffer:             # <<<<<<<<<<<<<<
14306  *
14307  *
14308  */
14309   }
14310 
14311   /* "View.MemoryView":122
14312  *         cdef bint dtype_is_object
14313  *
14314  *     def __cinit__(array self, tuple shape, Py_ssize_t itemsize, format not None,             # <<<<<<<<<<<<<<
14315  *                   mode="c", bint allocate_buffer=True):
14316  *
14317  */
14318 
14319   /* function exit code */
14320   __pyx_r = 0;
14321   goto __pyx_L0;
14322   __pyx_L1_error:;
14323   __Pyx_XDECREF(__pyx_t_3);
14324   __Pyx_XDECREF(__pyx_t_5);
14325   __Pyx_XDECREF(__pyx_t_6);
14326   __Pyx_XDECREF(__pyx_t_10);
14327   __Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14328   __pyx_r = -1;
14329   __pyx_L0:;
14330   __Pyx_XDECREF(__pyx_v_format);
14331   __Pyx_RefNannyFinishContext();
14332   return __pyx_r;
14333 }
14334 
14335 /* "View.MemoryView":185
14336  *
14337  *     @cname('getbuffer')
14338  *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
14339  *         cdef int bufmode = -1
14340  *         if self.mode == u"c":
14341  */
14342 
14343 /* Python wrapper */
14344 static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
__pyx_array_getbuffer(PyObject * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)14345 static CYTHON_UNUSED int __pyx_array_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
14346   int __pyx_r;
14347   __Pyx_RefNannyDeclarations
14348   __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
14349   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(((struct __pyx_array_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
14350 
14351   /* function exit code */
14352   __Pyx_RefNannyFinishContext();
14353   return __pyx_r;
14354 }
14355 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)14356 static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(struct __pyx_array_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
14357   int __pyx_v_bufmode;
14358   int __pyx_r;
14359   __Pyx_RefNannyDeclarations
14360   int __pyx_t_1;
14361   int __pyx_t_2;
14362   PyObject *__pyx_t_3 = NULL;
14363   char *__pyx_t_4;
14364   Py_ssize_t __pyx_t_5;
14365   int __pyx_t_6;
14366   Py_ssize_t *__pyx_t_7;
14367   if (__pyx_v_info == NULL) {
14368     PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
14369     return -1;
14370   }
14371   __Pyx_RefNannySetupContext("__getbuffer__", 0);
14372   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
14373   __Pyx_GIVEREF(__pyx_v_info->obj);
14374 
14375   /* "View.MemoryView":186
14376  *     @cname('getbuffer')
14377  *     def __getbuffer__(self, Py_buffer *info, int flags):
14378  *         cdef int bufmode = -1             # <<<<<<<<<<<<<<
14379  *         if self.mode == u"c":
14380  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14381  */
14382   __pyx_v_bufmode = -1;
14383 
14384   /* "View.MemoryView":187
14385  *     def __getbuffer__(self, Py_buffer *info, int flags):
14386  *         cdef int bufmode = -1
14387  *         if self.mode == u"c":             # <<<<<<<<<<<<<<
14388  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14389  *         elif self.mode == u"fortran":
14390  */
14391   __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_c, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 187, __pyx_L1_error)
14392   __pyx_t_2 = (__pyx_t_1 != 0);
14393   if (__pyx_t_2) {
14394 
14395     /* "View.MemoryView":188
14396  *         cdef int bufmode = -1
14397  *         if self.mode == u"c":
14398  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
14399  *         elif self.mode == u"fortran":
14400  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14401  */
14402     __pyx_v_bufmode = (PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS);
14403 
14404     /* "View.MemoryView":187
14405  *     def __getbuffer__(self, Py_buffer *info, int flags):
14406  *         cdef int bufmode = -1
14407  *         if self.mode == u"c":             # <<<<<<<<<<<<<<
14408  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14409  *         elif self.mode == u"fortran":
14410  */
14411     goto __pyx_L3;
14412   }
14413 
14414   /* "View.MemoryView":189
14415  *         if self.mode == u"c":
14416  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14417  *         elif self.mode == u"fortran":             # <<<<<<<<<<<<<<
14418  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14419  *         if not (flags & bufmode):
14420  */
14421   __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_self->mode, __pyx_n_u_fortran, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 189, __pyx_L1_error)
14422   __pyx_t_1 = (__pyx_t_2 != 0);
14423   if (__pyx_t_1) {
14424 
14425     /* "View.MemoryView":190
14426  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14427  *         elif self.mode == u"fortran":
14428  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
14429  *         if not (flags & bufmode):
14430  *             raise ValueError("Can only create a buffer that is contiguous in memory.")
14431  */
14432     __pyx_v_bufmode = (PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS);
14433 
14434     /* "View.MemoryView":189
14435  *         if self.mode == u"c":
14436  *             bufmode = PyBUF_C_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14437  *         elif self.mode == u"fortran":             # <<<<<<<<<<<<<<
14438  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14439  *         if not (flags & bufmode):
14440  */
14441   }
14442   __pyx_L3:;
14443 
14444   /* "View.MemoryView":191
14445  *         elif self.mode == u"fortran":
14446  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14447  *         if not (flags & bufmode):             # <<<<<<<<<<<<<<
14448  *             raise ValueError("Can only create a buffer that is contiguous in memory.")
14449  *         info.buf = self.data
14450  */
14451   __pyx_t_1 = ((!((__pyx_v_flags & __pyx_v_bufmode) != 0)) != 0);
14452   if (unlikely(__pyx_t_1)) {
14453 
14454     /* "View.MemoryView":192
14455  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14456  *         if not (flags & bufmode):
14457  *             raise ValueError("Can only create a buffer that is contiguous in memory.")             # <<<<<<<<<<<<<<
14458  *         info.buf = self.data
14459  *         info.len = self.len
14460  */
14461     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 192, __pyx_L1_error)
14462     __Pyx_GOTREF(__pyx_t_3);
14463     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
14464     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14465     __PYX_ERR(1, 192, __pyx_L1_error)
14466 
14467     /* "View.MemoryView":191
14468  *         elif self.mode == u"fortran":
14469  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
14470  *         if not (flags & bufmode):             # <<<<<<<<<<<<<<
14471  *             raise ValueError("Can only create a buffer that is contiguous in memory.")
14472  *         info.buf = self.data
14473  */
14474   }
14475 
14476   /* "View.MemoryView":193
14477  *         if not (flags & bufmode):
14478  *             raise ValueError("Can only create a buffer that is contiguous in memory.")
14479  *         info.buf = self.data             # <<<<<<<<<<<<<<
14480  *         info.len = self.len
14481  *         info.ndim = self.ndim
14482  */
14483   __pyx_t_4 = __pyx_v_self->data;
14484   __pyx_v_info->buf = __pyx_t_4;
14485 
14486   /* "View.MemoryView":194
14487  *             raise ValueError("Can only create a buffer that is contiguous in memory.")
14488  *         info.buf = self.data
14489  *         info.len = self.len             # <<<<<<<<<<<<<<
14490  *         info.ndim = self.ndim
14491  *         info.shape = self._shape
14492  */
14493   __pyx_t_5 = __pyx_v_self->len;
14494   __pyx_v_info->len = __pyx_t_5;
14495 
14496   /* "View.MemoryView":195
14497  *         info.buf = self.data
14498  *         info.len = self.len
14499  *         info.ndim = self.ndim             # <<<<<<<<<<<<<<
14500  *         info.shape = self._shape
14501  *         info.strides = self._strides
14502  */
14503   __pyx_t_6 = __pyx_v_self->ndim;
14504   __pyx_v_info->ndim = __pyx_t_6;
14505 
14506   /* "View.MemoryView":196
14507  *         info.len = self.len
14508  *         info.ndim = self.ndim
14509  *         info.shape = self._shape             # <<<<<<<<<<<<<<
14510  *         info.strides = self._strides
14511  *         info.suboffsets = NULL
14512  */
14513   __pyx_t_7 = __pyx_v_self->_shape;
14514   __pyx_v_info->shape = __pyx_t_7;
14515 
14516   /* "View.MemoryView":197
14517  *         info.ndim = self.ndim
14518  *         info.shape = self._shape
14519  *         info.strides = self._strides             # <<<<<<<<<<<<<<
14520  *         info.suboffsets = NULL
14521  *         info.itemsize = self.itemsize
14522  */
14523   __pyx_t_7 = __pyx_v_self->_strides;
14524   __pyx_v_info->strides = __pyx_t_7;
14525 
14526   /* "View.MemoryView":198
14527  *         info.shape = self._shape
14528  *         info.strides = self._strides
14529  *         info.suboffsets = NULL             # <<<<<<<<<<<<<<
14530  *         info.itemsize = self.itemsize
14531  *         info.readonly = 0
14532  */
14533   __pyx_v_info->suboffsets = NULL;
14534 
14535   /* "View.MemoryView":199
14536  *         info.strides = self._strides
14537  *         info.suboffsets = NULL
14538  *         info.itemsize = self.itemsize             # <<<<<<<<<<<<<<
14539  *         info.readonly = 0
14540  *
14541  */
14542   __pyx_t_5 = __pyx_v_self->itemsize;
14543   __pyx_v_info->itemsize = __pyx_t_5;
14544 
14545   /* "View.MemoryView":200
14546  *         info.suboffsets = NULL
14547  *         info.itemsize = self.itemsize
14548  *         info.readonly = 0             # <<<<<<<<<<<<<<
14549  *
14550  *         if flags & PyBUF_FORMAT:
14551  */
14552   __pyx_v_info->readonly = 0;
14553 
14554   /* "View.MemoryView":202
14555  *         info.readonly = 0
14556  *
14557  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
14558  *             info.format = self.format
14559  *         else:
14560  */
14561   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
14562   if (__pyx_t_1) {
14563 
14564     /* "View.MemoryView":203
14565  *
14566  *         if flags & PyBUF_FORMAT:
14567  *             info.format = self.format             # <<<<<<<<<<<<<<
14568  *         else:
14569  *             info.format = NULL
14570  */
14571     __pyx_t_4 = __pyx_v_self->format;
14572     __pyx_v_info->format = __pyx_t_4;
14573 
14574     /* "View.MemoryView":202
14575  *         info.readonly = 0
14576  *
14577  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
14578  *             info.format = self.format
14579  *         else:
14580  */
14581     goto __pyx_L5;
14582   }
14583 
14584   /* "View.MemoryView":205
14585  *             info.format = self.format
14586  *         else:
14587  *             info.format = NULL             # <<<<<<<<<<<<<<
14588  *
14589  *         info.obj = self
14590  */
14591   /*else*/ {
14592     __pyx_v_info->format = NULL;
14593   }
14594   __pyx_L5:;
14595 
14596   /* "View.MemoryView":207
14597  *             info.format = NULL
14598  *
14599  *         info.obj = self             # <<<<<<<<<<<<<<
14600  *
14601  *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")
14602  */
14603   __Pyx_INCREF(((PyObject *)__pyx_v_self));
14604   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
14605   __Pyx_GOTREF(__pyx_v_info->obj);
14606   __Pyx_DECREF(__pyx_v_info->obj);
14607   __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
14608 
14609   /* "View.MemoryView":185
14610  *
14611  *     @cname('getbuffer')
14612  *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
14613  *         cdef int bufmode = -1
14614  *         if self.mode == u"c":
14615  */
14616 
14617   /* function exit code */
14618   __pyx_r = 0;
14619   goto __pyx_L0;
14620   __pyx_L1_error:;
14621   __Pyx_XDECREF(__pyx_t_3);
14622   __Pyx_AddTraceback("View.MemoryView.array.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14623   __pyx_r = -1;
14624   if (__pyx_v_info->obj != NULL) {
14625     __Pyx_GOTREF(__pyx_v_info->obj);
14626     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
14627   }
14628   goto __pyx_L2;
14629   __pyx_L0:;
14630   if (__pyx_v_info->obj == Py_None) {
14631     __Pyx_GOTREF(__pyx_v_info->obj);
14632     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
14633   }
14634   __pyx_L2:;
14635   __Pyx_RefNannyFinishContext();
14636   return __pyx_r;
14637 }
14638 
14639 /* "View.MemoryView":211
14640  *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")
14641  *
14642  *     def __dealloc__(array self):             # <<<<<<<<<<<<<<
14643  *         if self.callback_free_data != NULL:
14644  *             self.callback_free_data(self.data)
14645  */
14646 
14647 /* Python wrapper */
14648 static void __pyx_array___dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_array___dealloc__(PyObject * __pyx_v_self)14649 static void __pyx_array___dealloc__(PyObject *__pyx_v_self) {
14650   __Pyx_RefNannyDeclarations
14651   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
14652   __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(((struct __pyx_array_obj *)__pyx_v_self));
14653 
14654   /* function exit code */
14655   __Pyx_RefNannyFinishContext();
14656 }
14657 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj * __pyx_v_self)14658 static void __pyx_array___pyx_pf_15View_dot_MemoryView_5array_4__dealloc__(struct __pyx_array_obj *__pyx_v_self) {
14659   __Pyx_RefNannyDeclarations
14660   int __pyx_t_1;
14661   __Pyx_RefNannySetupContext("__dealloc__", 0);
14662 
14663   /* "View.MemoryView":212
14664  *
14665  *     def __dealloc__(array self):
14666  *         if self.callback_free_data != NULL:             # <<<<<<<<<<<<<<
14667  *             self.callback_free_data(self.data)
14668  *         elif self.free_data:
14669  */
14670   __pyx_t_1 = ((__pyx_v_self->callback_free_data != NULL) != 0);
14671   if (__pyx_t_1) {
14672 
14673     /* "View.MemoryView":213
14674  *     def __dealloc__(array self):
14675  *         if self.callback_free_data != NULL:
14676  *             self.callback_free_data(self.data)             # <<<<<<<<<<<<<<
14677  *         elif self.free_data:
14678  *             if self.dtype_is_object:
14679  */
14680     __pyx_v_self->callback_free_data(__pyx_v_self->data);
14681 
14682     /* "View.MemoryView":212
14683  *
14684  *     def __dealloc__(array self):
14685  *         if self.callback_free_data != NULL:             # <<<<<<<<<<<<<<
14686  *             self.callback_free_data(self.data)
14687  *         elif self.free_data:
14688  */
14689     goto __pyx_L3;
14690   }
14691 
14692   /* "View.MemoryView":214
14693  *         if self.callback_free_data != NULL:
14694  *             self.callback_free_data(self.data)
14695  *         elif self.free_data:             # <<<<<<<<<<<<<<
14696  *             if self.dtype_is_object:
14697  *                 refcount_objects_in_slice(self.data, self._shape,
14698  */
14699   __pyx_t_1 = (__pyx_v_self->free_data != 0);
14700   if (__pyx_t_1) {
14701 
14702     /* "View.MemoryView":215
14703  *             self.callback_free_data(self.data)
14704  *         elif self.free_data:
14705  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
14706  *                 refcount_objects_in_slice(self.data, self._shape,
14707  *                                           self._strides, self.ndim, False)
14708  */
14709     __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0);
14710     if (__pyx_t_1) {
14711 
14712       /* "View.MemoryView":216
14713  *         elif self.free_data:
14714  *             if self.dtype_is_object:
14715  *                 refcount_objects_in_slice(self.data, self._shape,             # <<<<<<<<<<<<<<
14716  *                                           self._strides, self.ndim, False)
14717  *             free(self.data)
14718  */
14719       __pyx_memoryview_refcount_objects_in_slice(__pyx_v_self->data, __pyx_v_self->_shape, __pyx_v_self->_strides, __pyx_v_self->ndim, 0);
14720 
14721       /* "View.MemoryView":215
14722  *             self.callback_free_data(self.data)
14723  *         elif self.free_data:
14724  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
14725  *                 refcount_objects_in_slice(self.data, self._shape,
14726  *                                           self._strides, self.ndim, False)
14727  */
14728     }
14729 
14730     /* "View.MemoryView":218
14731  *                 refcount_objects_in_slice(self.data, self._shape,
14732  *                                           self._strides, self.ndim, False)
14733  *             free(self.data)             # <<<<<<<<<<<<<<
14734  *         PyObject_Free(self._shape)
14735  *
14736  */
14737     free(__pyx_v_self->data);
14738 
14739     /* "View.MemoryView":214
14740  *         if self.callback_free_data != NULL:
14741  *             self.callback_free_data(self.data)
14742  *         elif self.free_data:             # <<<<<<<<<<<<<<
14743  *             if self.dtype_is_object:
14744  *                 refcount_objects_in_slice(self.data, self._shape,
14745  */
14746   }
14747   __pyx_L3:;
14748 
14749   /* "View.MemoryView":219
14750  *                                           self._strides, self.ndim, False)
14751  *             free(self.data)
14752  *         PyObject_Free(self._shape)             # <<<<<<<<<<<<<<
14753  *
14754  *     @property
14755  */
14756   PyObject_Free(__pyx_v_self->_shape);
14757 
14758   /* "View.MemoryView":211
14759  *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")
14760  *
14761  *     def __dealloc__(array self):             # <<<<<<<<<<<<<<
14762  *         if self.callback_free_data != NULL:
14763  *             self.callback_free_data(self.data)
14764  */
14765 
14766   /* function exit code */
14767   __Pyx_RefNannyFinishContext();
14768 }
14769 
14770 /* "View.MemoryView":222
14771  *
14772  *     @property
14773  *     def memview(self):             # <<<<<<<<<<<<<<
14774  *         return self.get_memview()
14775  *
14776  */
14777 
14778 /* Python wrapper */
14779 static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject * __pyx_v_self)14780 static PyObject *__pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(PyObject *__pyx_v_self) {
14781   PyObject *__pyx_r = 0;
14782   __Pyx_RefNannyDeclarations
14783   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
14784   __pyx_r = __pyx_pf_15View_dot_MemoryView_5array_7memview___get__(((struct __pyx_array_obj *)__pyx_v_self));
14785 
14786   /* function exit code */
14787   __Pyx_RefNannyFinishContext();
14788   return __pyx_r;
14789 }
14790 
__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj * __pyx_v_self)14791 static PyObject *__pyx_pf_15View_dot_MemoryView_5array_7memview___get__(struct __pyx_array_obj *__pyx_v_self) {
14792   PyObject *__pyx_r = NULL;
14793   __Pyx_RefNannyDeclarations
14794   PyObject *__pyx_t_1 = NULL;
14795   __Pyx_RefNannySetupContext("__get__", 0);
14796 
14797   /* "View.MemoryView":223
14798  *     @property
14799  *     def memview(self):
14800  *         return self.get_memview()             # <<<<<<<<<<<<<<
14801  *
14802  *     @cname('get_memview')
14803  */
14804   __Pyx_XDECREF(__pyx_r);
14805   __pyx_t_1 = ((struct __pyx_vtabstruct_array *)__pyx_v_self->__pyx_vtab)->get_memview(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 223, __pyx_L1_error)
14806   __Pyx_GOTREF(__pyx_t_1);
14807   __pyx_r = __pyx_t_1;
14808   __pyx_t_1 = 0;
14809   goto __pyx_L0;
14810 
14811   /* "View.MemoryView":222
14812  *
14813  *     @property
14814  *     def memview(self):             # <<<<<<<<<<<<<<
14815  *         return self.get_memview()
14816  *
14817  */
14818 
14819   /* function exit code */
14820   __pyx_L1_error:;
14821   __Pyx_XDECREF(__pyx_t_1);
14822   __Pyx_AddTraceback("View.MemoryView.array.memview.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14823   __pyx_r = NULL;
14824   __pyx_L0:;
14825   __Pyx_XGIVEREF(__pyx_r);
14826   __Pyx_RefNannyFinishContext();
14827   return __pyx_r;
14828 }
14829 
14830 /* "View.MemoryView":226
14831  *
14832  *     @cname('get_memview')
14833  *     cdef get_memview(self):             # <<<<<<<<<<<<<<
14834  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
14835  *         return  memoryview(self, flags, self.dtype_is_object)
14836  */
14837 
__pyx_array_get_memview(struct __pyx_array_obj * __pyx_v_self)14838 static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) {
14839   int __pyx_v_flags;
14840   PyObject *__pyx_r = NULL;
14841   __Pyx_RefNannyDeclarations
14842   PyObject *__pyx_t_1 = NULL;
14843   PyObject *__pyx_t_2 = NULL;
14844   PyObject *__pyx_t_3 = NULL;
14845   __Pyx_RefNannySetupContext("get_memview", 0);
14846 
14847   /* "View.MemoryView":227
14848  *     @cname('get_memview')
14849  *     cdef get_memview(self):
14850  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE             # <<<<<<<<<<<<<<
14851  *         return  memoryview(self, flags, self.dtype_is_object)
14852  *
14853  */
14854   __pyx_v_flags = ((PyBUF_ANY_CONTIGUOUS | PyBUF_FORMAT) | PyBUF_WRITABLE);
14855 
14856   /* "View.MemoryView":228
14857  *     cdef get_memview(self):
14858  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
14859  *         return  memoryview(self, flags, self.dtype_is_object)             # <<<<<<<<<<<<<<
14860  *
14861  *     def __len__(self):
14862  */
14863   __Pyx_XDECREF(__pyx_r);
14864   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 228, __pyx_L1_error)
14865   __Pyx_GOTREF(__pyx_t_1);
14866   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error)
14867   __Pyx_GOTREF(__pyx_t_2);
14868   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 228, __pyx_L1_error)
14869   __Pyx_GOTREF(__pyx_t_3);
14870   __Pyx_INCREF(((PyObject *)__pyx_v_self));
14871   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
14872   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
14873   __Pyx_GIVEREF(__pyx_t_1);
14874   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
14875   __Pyx_GIVEREF(__pyx_t_2);
14876   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
14877   __pyx_t_1 = 0;
14878   __pyx_t_2 = 0;
14879   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 228, __pyx_L1_error)
14880   __Pyx_GOTREF(__pyx_t_2);
14881   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14882   __pyx_r = __pyx_t_2;
14883   __pyx_t_2 = 0;
14884   goto __pyx_L0;
14885 
14886   /* "View.MemoryView":226
14887  *
14888  *     @cname('get_memview')
14889  *     cdef get_memview(self):             # <<<<<<<<<<<<<<
14890  *         flags =  PyBUF_ANY_CONTIGUOUS|PyBUF_FORMAT|PyBUF_WRITABLE
14891  *         return  memoryview(self, flags, self.dtype_is_object)
14892  */
14893 
14894   /* function exit code */
14895   __pyx_L1_error:;
14896   __Pyx_XDECREF(__pyx_t_1);
14897   __Pyx_XDECREF(__pyx_t_2);
14898   __Pyx_XDECREF(__pyx_t_3);
14899   __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename);
14900   __pyx_r = 0;
14901   __pyx_L0:;
14902   __Pyx_XGIVEREF(__pyx_r);
14903   __Pyx_RefNannyFinishContext();
14904   return __pyx_r;
14905 }
14906 
14907 /* "View.MemoryView":230
14908  *         return  memoryview(self, flags, self.dtype_is_object)
14909  *
14910  *     def __len__(self):             # <<<<<<<<<<<<<<
14911  *         return self._shape[0]
14912  *
14913  */
14914 
14915 /* Python wrapper */
14916 static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self); /*proto*/
__pyx_array___len__(PyObject * __pyx_v_self)14917 static Py_ssize_t __pyx_array___len__(PyObject *__pyx_v_self) {
14918   Py_ssize_t __pyx_r;
14919   __Pyx_RefNannyDeclarations
14920   __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
14921   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(((struct __pyx_array_obj *)__pyx_v_self));
14922 
14923   /* function exit code */
14924   __Pyx_RefNannyFinishContext();
14925   return __pyx_r;
14926 }
14927 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj * __pyx_v_self)14928 static Py_ssize_t __pyx_array___pyx_pf_15View_dot_MemoryView_5array_6__len__(struct __pyx_array_obj *__pyx_v_self) {
14929   Py_ssize_t __pyx_r;
14930   __Pyx_RefNannyDeclarations
14931   __Pyx_RefNannySetupContext("__len__", 0);
14932 
14933   /* "View.MemoryView":231
14934  *
14935  *     def __len__(self):
14936  *         return self._shape[0]             # <<<<<<<<<<<<<<
14937  *
14938  *     def __getattr__(self, attr):
14939  */
14940   __pyx_r = (__pyx_v_self->_shape[0]);
14941   goto __pyx_L0;
14942 
14943   /* "View.MemoryView":230
14944  *         return  memoryview(self, flags, self.dtype_is_object)
14945  *
14946  *     def __len__(self):             # <<<<<<<<<<<<<<
14947  *         return self._shape[0]
14948  *
14949  */
14950 
14951   /* function exit code */
14952   __pyx_L0:;
14953   __Pyx_RefNannyFinishContext();
14954   return __pyx_r;
14955 }
14956 
14957 /* "View.MemoryView":233
14958  *         return self._shape[0]
14959  *
14960  *     def __getattr__(self, attr):             # <<<<<<<<<<<<<<
14961  *         return getattr(self.memview, attr)
14962  *
14963  */
14964 
14965 /* Python wrapper */
14966 static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr); /*proto*/
__pyx_array___getattr__(PyObject * __pyx_v_self,PyObject * __pyx_v_attr)14967 static PyObject *__pyx_array___getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_attr) {
14968   PyObject *__pyx_r = 0;
14969   __Pyx_RefNannyDeclarations
14970   __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
14971   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_attr));
14972 
14973   /* function exit code */
14974   __Pyx_RefNannyFinishContext();
14975   return __pyx_r;
14976 }
14977 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj * __pyx_v_self,PyObject * __pyx_v_attr)14978 static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_8__getattr__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_attr) {
14979   PyObject *__pyx_r = NULL;
14980   __Pyx_RefNannyDeclarations
14981   PyObject *__pyx_t_1 = NULL;
14982   PyObject *__pyx_t_2 = NULL;
14983   __Pyx_RefNannySetupContext("__getattr__", 0);
14984 
14985   /* "View.MemoryView":234
14986  *
14987  *     def __getattr__(self, attr):
14988  *         return getattr(self.memview, attr)             # <<<<<<<<<<<<<<
14989  *
14990  *     def __getitem__(self, item):
14991  */
14992   __Pyx_XDECREF(__pyx_r);
14993   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 234, __pyx_L1_error)
14994   __Pyx_GOTREF(__pyx_t_1);
14995   __pyx_t_2 = __Pyx_GetAttr(__pyx_t_1, __pyx_v_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 234, __pyx_L1_error)
14996   __Pyx_GOTREF(__pyx_t_2);
14997   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14998   __pyx_r = __pyx_t_2;
14999   __pyx_t_2 = 0;
15000   goto __pyx_L0;
15001 
15002   /* "View.MemoryView":233
15003  *         return self._shape[0]
15004  *
15005  *     def __getattr__(self, attr):             # <<<<<<<<<<<<<<
15006  *         return getattr(self.memview, attr)
15007  *
15008  */
15009 
15010   /* function exit code */
15011   __pyx_L1_error:;
15012   __Pyx_XDECREF(__pyx_t_1);
15013   __Pyx_XDECREF(__pyx_t_2);
15014   __Pyx_AddTraceback("View.MemoryView.array.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15015   __pyx_r = NULL;
15016   __pyx_L0:;
15017   __Pyx_XGIVEREF(__pyx_r);
15018   __Pyx_RefNannyFinishContext();
15019   return __pyx_r;
15020 }
15021 
15022 /* "View.MemoryView":236
15023  *         return getattr(self.memview, attr)
15024  *
15025  *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
15026  *         return self.memview[item]
15027  *
15028  */
15029 
15030 /* Python wrapper */
15031 static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
__pyx_array___getitem__(PyObject * __pyx_v_self,PyObject * __pyx_v_item)15032 static PyObject *__pyx_array___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
15033   PyObject *__pyx_r = 0;
15034   __Pyx_RefNannyDeclarations
15035   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
15036   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item));
15037 
15038   /* function exit code */
15039   __Pyx_RefNannyFinishContext();
15040   return __pyx_r;
15041 }
15042 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj * __pyx_v_self,PyObject * __pyx_v_item)15043 static PyObject *__pyx_array___pyx_pf_15View_dot_MemoryView_5array_10__getitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item) {
15044   PyObject *__pyx_r = NULL;
15045   __Pyx_RefNannyDeclarations
15046   PyObject *__pyx_t_1 = NULL;
15047   PyObject *__pyx_t_2 = NULL;
15048   __Pyx_RefNannySetupContext("__getitem__", 0);
15049 
15050   /* "View.MemoryView":237
15051  *
15052  *     def __getitem__(self, item):
15053  *         return self.memview[item]             # <<<<<<<<<<<<<<
15054  *
15055  *     def __setitem__(self, item, value):
15056  */
15057   __Pyx_XDECREF(__pyx_r);
15058   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 237, __pyx_L1_error)
15059   __Pyx_GOTREF(__pyx_t_1);
15060   __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_item); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 237, __pyx_L1_error)
15061   __Pyx_GOTREF(__pyx_t_2);
15062   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15063   __pyx_r = __pyx_t_2;
15064   __pyx_t_2 = 0;
15065   goto __pyx_L0;
15066 
15067   /* "View.MemoryView":236
15068  *         return getattr(self.memview, attr)
15069  *
15070  *     def __getitem__(self, item):             # <<<<<<<<<<<<<<
15071  *         return self.memview[item]
15072  *
15073  */
15074 
15075   /* function exit code */
15076   __pyx_L1_error:;
15077   __Pyx_XDECREF(__pyx_t_1);
15078   __Pyx_XDECREF(__pyx_t_2);
15079   __Pyx_AddTraceback("View.MemoryView.array.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15080   __pyx_r = NULL;
15081   __pyx_L0:;
15082   __Pyx_XGIVEREF(__pyx_r);
15083   __Pyx_RefNannyFinishContext();
15084   return __pyx_r;
15085 }
15086 
15087 /* "View.MemoryView":239
15088  *         return self.memview[item]
15089  *
15090  *     def __setitem__(self, item, value):             # <<<<<<<<<<<<<<
15091  *         self.memview[item] = value
15092  *
15093  */
15094 
15095 /* Python wrapper */
15096 static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/
__pyx_array___setitem__(PyObject * __pyx_v_self,PyObject * __pyx_v_item,PyObject * __pyx_v_value)15097 static int __pyx_array___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
15098   int __pyx_r;
15099   __Pyx_RefNannyDeclarations
15100   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
15101   __pyx_r = __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value));
15102 
15103   /* function exit code */
15104   __Pyx_RefNannyFinishContext();
15105   return __pyx_r;
15106 }
15107 
__pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj * __pyx_v_self,PyObject * __pyx_v_item,PyObject * __pyx_v_value)15108 static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_12__setitem__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
15109   int __pyx_r;
15110   __Pyx_RefNannyDeclarations
15111   PyObject *__pyx_t_1 = NULL;
15112   __Pyx_RefNannySetupContext("__setitem__", 0);
15113 
15114   /* "View.MemoryView":240
15115  *
15116  *     def __setitem__(self, item, value):
15117  *         self.memview[item] = value             # <<<<<<<<<<<<<<
15118  *
15119  *
15120  */
15121   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_memview); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 240, __pyx_L1_error)
15122   __Pyx_GOTREF(__pyx_t_1);
15123   if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_item, __pyx_v_value) < 0)) __PYX_ERR(1, 240, __pyx_L1_error)
15124   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15125 
15126   /* "View.MemoryView":239
15127  *         return self.memview[item]
15128  *
15129  *     def __setitem__(self, item, value):             # <<<<<<<<<<<<<<
15130  *         self.memview[item] = value
15131  *
15132  */
15133 
15134   /* function exit code */
15135   __pyx_r = 0;
15136   goto __pyx_L0;
15137   __pyx_L1_error:;
15138   __Pyx_XDECREF(__pyx_t_1);
15139   __Pyx_AddTraceback("View.MemoryView.array.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15140   __pyx_r = -1;
15141   __pyx_L0:;
15142   __Pyx_RefNannyFinishContext();
15143   return __pyx_r;
15144 }
15145 
15146 /* "(tree fragment)":1
15147  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
15148  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15149  * def __setstate_cython__(self, __pyx_state):
15150  */
15151 
15152 /* Python wrapper */
15153 static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw___pyx_array_1__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)15154 static PyObject *__pyx_pw___pyx_array_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
15155   PyObject *__pyx_r = 0;
15156   __Pyx_RefNannyDeclarations
15157   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
15158   __pyx_r = __pyx_pf___pyx_array___reduce_cython__(((struct __pyx_array_obj *)__pyx_v_self));
15159 
15160   /* function exit code */
15161   __Pyx_RefNannyFinishContext();
15162   return __pyx_r;
15163 }
15164 
__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj * __pyx_v_self)15165 static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self) {
15166   PyObject *__pyx_r = NULL;
15167   __Pyx_RefNannyDeclarations
15168   PyObject *__pyx_t_1 = NULL;
15169   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
15170 
15171   /* "(tree fragment)":2
15172  * def __reduce_cython__(self):
15173  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
15174  * def __setstate_cython__(self, __pyx_state):
15175  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15176  */
15177   __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)
15178   __Pyx_GOTREF(__pyx_t_1);
15179   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
15180   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15181   __PYX_ERR(1, 2, __pyx_L1_error)
15182 
15183   /* "(tree fragment)":1
15184  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
15185  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15186  * def __setstate_cython__(self, __pyx_state):
15187  */
15188 
15189   /* function exit code */
15190   __pyx_L1_error:;
15191   __Pyx_XDECREF(__pyx_t_1);
15192   __Pyx_AddTraceback("View.MemoryView.array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15193   __pyx_r = NULL;
15194   __Pyx_XGIVEREF(__pyx_r);
15195   __Pyx_RefNannyFinishContext();
15196   return __pyx_r;
15197 }
15198 
15199 /* "(tree fragment)":3
15200  * def __reduce_cython__(self):
15201  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15202  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
15203  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15204  */
15205 
15206 /* Python wrapper */
15207 static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw___pyx_array_3__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)15208 static PyObject *__pyx_pw___pyx_array_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
15209   PyObject *__pyx_r = 0;
15210   __Pyx_RefNannyDeclarations
15211   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
15212   __pyx_r = __pyx_pf___pyx_array_2__setstate_cython__(((struct __pyx_array_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
15213 
15214   /* function exit code */
15215   __Pyx_RefNannyFinishContext();
15216   return __pyx_r;
15217 }
15218 
__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)15219 static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct __pyx_array_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
15220   PyObject *__pyx_r = NULL;
15221   __Pyx_RefNannyDeclarations
15222   PyObject *__pyx_t_1 = NULL;
15223   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
15224 
15225   /* "(tree fragment)":4
15226  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15227  * def __setstate_cython__(self, __pyx_state):
15228  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
15229  */
15230   __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)
15231   __Pyx_GOTREF(__pyx_t_1);
15232   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
15233   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15234   __PYX_ERR(1, 4, __pyx_L1_error)
15235 
15236   /* "(tree fragment)":3
15237  * def __reduce_cython__(self):
15238  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15239  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
15240  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
15241  */
15242 
15243   /* function exit code */
15244   __pyx_L1_error:;
15245   __Pyx_XDECREF(__pyx_t_1);
15246   __Pyx_AddTraceback("View.MemoryView.array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15247   __pyx_r = NULL;
15248   __Pyx_XGIVEREF(__pyx_r);
15249   __Pyx_RefNannyFinishContext();
15250   return __pyx_r;
15251 }
15252 
15253 /* "View.MemoryView":244
15254  *
15255  * @cname("__pyx_array_new")
15256  * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format,             # <<<<<<<<<<<<<<
15257  *                           char *mode, char *buf):
15258  *     cdef array result
15259  */
15260 
__pyx_array_new(PyObject * __pyx_v_shape,Py_ssize_t __pyx_v_itemsize,char * __pyx_v_format,char * __pyx_v_mode,char * __pyx_v_buf)15261 static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, char *__pyx_v_format, char *__pyx_v_mode, char *__pyx_v_buf) {
15262   struct __pyx_array_obj *__pyx_v_result = 0;
15263   struct __pyx_array_obj *__pyx_r = NULL;
15264   __Pyx_RefNannyDeclarations
15265   int __pyx_t_1;
15266   PyObject *__pyx_t_2 = NULL;
15267   PyObject *__pyx_t_3 = NULL;
15268   PyObject *__pyx_t_4 = NULL;
15269   PyObject *__pyx_t_5 = NULL;
15270   __Pyx_RefNannySetupContext("array_cwrapper", 0);
15271 
15272   /* "View.MemoryView":248
15273  *     cdef array result
15274  *
15275  *     if buf == NULL:             # <<<<<<<<<<<<<<
15276  *         result = array(shape, itemsize, format, mode.decode('ASCII'))
15277  *     else:
15278  */
15279   __pyx_t_1 = ((__pyx_v_buf == NULL) != 0);
15280   if (__pyx_t_1) {
15281 
15282     /* "View.MemoryView":249
15283  *
15284  *     if buf == NULL:
15285  *         result = array(shape, itemsize, format, mode.decode('ASCII'))             # <<<<<<<<<<<<<<
15286  *     else:
15287  *         result = array(shape, itemsize, format, mode.decode('ASCII'),
15288  */
15289     __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 249, __pyx_L1_error)
15290     __Pyx_GOTREF(__pyx_t_2);
15291     __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 249, __pyx_L1_error)
15292     __Pyx_GOTREF(__pyx_t_3);
15293     __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error)
15294     __Pyx_GOTREF(__pyx_t_4);
15295     __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 249, __pyx_L1_error)
15296     __Pyx_GOTREF(__pyx_t_5);
15297     __Pyx_INCREF(__pyx_v_shape);
15298     __Pyx_GIVEREF(__pyx_v_shape);
15299     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_shape);
15300     __Pyx_GIVEREF(__pyx_t_2);
15301     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
15302     __Pyx_GIVEREF(__pyx_t_3);
15303     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
15304     __Pyx_GIVEREF(__pyx_t_4);
15305     PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
15306     __pyx_t_2 = 0;
15307     __pyx_t_3 = 0;
15308     __pyx_t_4 = 0;
15309     __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 249, __pyx_L1_error)
15310     __Pyx_GOTREF(__pyx_t_4);
15311     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15312     __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_4);
15313     __pyx_t_4 = 0;
15314 
15315     /* "View.MemoryView":248
15316  *     cdef array result
15317  *
15318  *     if buf == NULL:             # <<<<<<<<<<<<<<
15319  *         result = array(shape, itemsize, format, mode.decode('ASCII'))
15320  *     else:
15321  */
15322     goto __pyx_L3;
15323   }
15324 
15325   /* "View.MemoryView":251
15326  *         result = array(shape, itemsize, format, mode.decode('ASCII'))
15327  *     else:
15328  *         result = array(shape, itemsize, format, mode.decode('ASCII'),             # <<<<<<<<<<<<<<
15329  *                        allocate_buffer=False)
15330  *         result.data = buf
15331  */
15332   /*else*/ {
15333     __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 251, __pyx_L1_error)
15334     __Pyx_GOTREF(__pyx_t_4);
15335     __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error)
15336     __Pyx_GOTREF(__pyx_t_5);
15337     __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mode, 0, strlen(__pyx_v_mode), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error)
15338     __Pyx_GOTREF(__pyx_t_3);
15339     __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 251, __pyx_L1_error)
15340     __Pyx_GOTREF(__pyx_t_2);
15341     __Pyx_INCREF(__pyx_v_shape);
15342     __Pyx_GIVEREF(__pyx_v_shape);
15343     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape);
15344     __Pyx_GIVEREF(__pyx_t_4);
15345     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4);
15346     __Pyx_GIVEREF(__pyx_t_5);
15347     PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_5);
15348     __Pyx_GIVEREF(__pyx_t_3);
15349     PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_3);
15350     __pyx_t_4 = 0;
15351     __pyx_t_5 = 0;
15352     __pyx_t_3 = 0;
15353 
15354     /* "View.MemoryView":252
15355  *     else:
15356  *         result = array(shape, itemsize, format, mode.decode('ASCII'),
15357  *                        allocate_buffer=False)             # <<<<<<<<<<<<<<
15358  *         result.data = buf
15359  *
15360  */
15361     __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 252, __pyx_L1_error)
15362     __Pyx_GOTREF(__pyx_t_3);
15363     if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 252, __pyx_L1_error)
15364 
15365     /* "View.MemoryView":251
15366  *         result = array(shape, itemsize, format, mode.decode('ASCII'))
15367  *     else:
15368  *         result = array(shape, itemsize, format, mode.decode('ASCII'),             # <<<<<<<<<<<<<<
15369  *                        allocate_buffer=False)
15370  *         result.data = buf
15371  */
15372     __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_array_type), __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error)
15373     __Pyx_GOTREF(__pyx_t_5);
15374     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15375     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15376     __pyx_v_result = ((struct __pyx_array_obj *)__pyx_t_5);
15377     __pyx_t_5 = 0;
15378 
15379     /* "View.MemoryView":253
15380  *         result = array(shape, itemsize, format, mode.decode('ASCII'),
15381  *                        allocate_buffer=False)
15382  *         result.data = buf             # <<<<<<<<<<<<<<
15383  *
15384  *     return result
15385  */
15386     __pyx_v_result->data = __pyx_v_buf;
15387   }
15388   __pyx_L3:;
15389 
15390   /* "View.MemoryView":255
15391  *         result.data = buf
15392  *
15393  *     return result             # <<<<<<<<<<<<<<
15394  *
15395  *
15396  */
15397   __Pyx_XDECREF(((PyObject *)__pyx_r));
15398   __Pyx_INCREF(((PyObject *)__pyx_v_result));
15399   __pyx_r = __pyx_v_result;
15400   goto __pyx_L0;
15401 
15402   /* "View.MemoryView":244
15403  *
15404  * @cname("__pyx_array_new")
15405  * cdef array array_cwrapper(tuple shape, Py_ssize_t itemsize, char *format,             # <<<<<<<<<<<<<<
15406  *                           char *mode, char *buf):
15407  *     cdef array result
15408  */
15409 
15410   /* function exit code */
15411   __pyx_L1_error:;
15412   __Pyx_XDECREF(__pyx_t_2);
15413   __Pyx_XDECREF(__pyx_t_3);
15414   __Pyx_XDECREF(__pyx_t_4);
15415   __Pyx_XDECREF(__pyx_t_5);
15416   __Pyx_AddTraceback("View.MemoryView.array_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
15417   __pyx_r = 0;
15418   __pyx_L0:;
15419   __Pyx_XDECREF((PyObject *)__pyx_v_result);
15420   __Pyx_XGIVEREF((PyObject *)__pyx_r);
15421   __Pyx_RefNannyFinishContext();
15422   return __pyx_r;
15423 }
15424 
15425 /* "View.MemoryView":281
15426  * cdef class Enum(object):
15427  *     cdef object name
15428  *     def __init__(self, name):             # <<<<<<<<<<<<<<
15429  *         self.name = name
15430  *     def __repr__(self):
15431  */
15432 
15433 /* Python wrapper */
15434 static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_MemviewEnum___init__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)15435 static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15436   PyObject *__pyx_v_name = 0;
15437   int __pyx_r;
15438   __Pyx_RefNannyDeclarations
15439   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
15440   {
15441     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,0};
15442     PyObject* values[1] = {0};
15443     if (unlikely(__pyx_kwds)) {
15444       Py_ssize_t kw_args;
15445       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
15446       switch (pos_args) {
15447         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15448         CYTHON_FALLTHROUGH;
15449         case  0: break;
15450         default: goto __pyx_L5_argtuple_error;
15451       }
15452       kw_args = PyDict_Size(__pyx_kwds);
15453       switch (pos_args) {
15454         case  0:
15455         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
15456         else goto __pyx_L5_argtuple_error;
15457       }
15458       if (unlikely(kw_args > 0)) {
15459         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 281, __pyx_L3_error)
15460       }
15461     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
15462       goto __pyx_L5_argtuple_error;
15463     } else {
15464       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15465     }
15466     __pyx_v_name = values[0];
15467   }
15468   goto __pyx_L4_argument_unpacking_done;
15469   __pyx_L5_argtuple_error:;
15470   __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 281, __pyx_L3_error)
15471   __pyx_L3_error:;
15472   __Pyx_AddTraceback("View.MemoryView.Enum.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15473   __Pyx_RefNannyFinishContext();
15474   return -1;
15475   __pyx_L4_argument_unpacking_done:;
15476   __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), __pyx_v_name);
15477 
15478   /* function exit code */
15479   __Pyx_RefNannyFinishContext();
15480   return __pyx_r;
15481 }
15482 
__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj * __pyx_v_self,PyObject * __pyx_v_name)15483 static int __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum___init__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v_name) {
15484   int __pyx_r;
15485   __Pyx_RefNannyDeclarations
15486   __Pyx_RefNannySetupContext("__init__", 0);
15487 
15488   /* "View.MemoryView":282
15489  *     cdef object name
15490  *     def __init__(self, name):
15491  *         self.name = name             # <<<<<<<<<<<<<<
15492  *     def __repr__(self):
15493  *         return self.name
15494  */
15495   __Pyx_INCREF(__pyx_v_name);
15496   __Pyx_GIVEREF(__pyx_v_name);
15497   __Pyx_GOTREF(__pyx_v_self->name);
15498   __Pyx_DECREF(__pyx_v_self->name);
15499   __pyx_v_self->name = __pyx_v_name;
15500 
15501   /* "View.MemoryView":281
15502  * cdef class Enum(object):
15503  *     cdef object name
15504  *     def __init__(self, name):             # <<<<<<<<<<<<<<
15505  *         self.name = name
15506  *     def __repr__(self):
15507  */
15508 
15509   /* function exit code */
15510   __pyx_r = 0;
15511   __Pyx_RefNannyFinishContext();
15512   return __pyx_r;
15513 }
15514 
15515 /* "View.MemoryView":283
15516  *     def __init__(self, name):
15517  *         self.name = name
15518  *     def __repr__(self):             # <<<<<<<<<<<<<<
15519  *         return self.name
15520  *
15521  */
15522 
15523 /* Python wrapper */
15524 static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self); /*proto*/
__pyx_MemviewEnum___repr__(PyObject * __pyx_v_self)15525 static PyObject *__pyx_MemviewEnum___repr__(PyObject *__pyx_v_self) {
15526   PyObject *__pyx_r = 0;
15527   __Pyx_RefNannyDeclarations
15528   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
15529   __pyx_r = __pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self));
15530 
15531   /* function exit code */
15532   __Pyx_RefNannyFinishContext();
15533   return __pyx_r;
15534 }
15535 
__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj * __pyx_v_self)15536 static PyObject *__pyx_MemviewEnum___pyx_pf_15View_dot_MemoryView_4Enum_2__repr__(struct __pyx_MemviewEnum_obj *__pyx_v_self) {
15537   PyObject *__pyx_r = NULL;
15538   __Pyx_RefNannyDeclarations
15539   __Pyx_RefNannySetupContext("__repr__", 0);
15540 
15541   /* "View.MemoryView":284
15542  *         self.name = name
15543  *     def __repr__(self):
15544  *         return self.name             # <<<<<<<<<<<<<<
15545  *
15546  * cdef generic = Enum("<strided and direct or indirect>")
15547  */
15548   __Pyx_XDECREF(__pyx_r);
15549   __Pyx_INCREF(__pyx_v_self->name);
15550   __pyx_r = __pyx_v_self->name;
15551   goto __pyx_L0;
15552 
15553   /* "View.MemoryView":283
15554  *     def __init__(self, name):
15555  *         self.name = name
15556  *     def __repr__(self):             # <<<<<<<<<<<<<<
15557  *         return self.name
15558  *
15559  */
15560 
15561   /* function exit code */
15562   __pyx_L0:;
15563   __Pyx_XGIVEREF(__pyx_r);
15564   __Pyx_RefNannyFinishContext();
15565   return __pyx_r;
15566 }
15567 
15568 /* "(tree fragment)":1
15569  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
15570  *     cdef tuple state
15571  *     cdef object _dict
15572  */
15573 
15574 /* Python wrapper */
15575 static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)15576 static PyObject *__pyx_pw___pyx_MemviewEnum_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
15577   PyObject *__pyx_r = 0;
15578   __Pyx_RefNannyDeclarations
15579   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
15580   __pyx_r = __pyx_pf___pyx_MemviewEnum___reduce_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self));
15581 
15582   /* function exit code */
15583   __Pyx_RefNannyFinishContext();
15584   return __pyx_r;
15585 }
15586 
__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj * __pyx_v_self)15587 static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self) {
15588   PyObject *__pyx_v_state = 0;
15589   PyObject *__pyx_v__dict = 0;
15590   int __pyx_v_use_setstate;
15591   PyObject *__pyx_r = NULL;
15592   __Pyx_RefNannyDeclarations
15593   PyObject *__pyx_t_1 = NULL;
15594   int __pyx_t_2;
15595   int __pyx_t_3;
15596   PyObject *__pyx_t_4 = NULL;
15597   PyObject *__pyx_t_5 = NULL;
15598   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
15599 
15600   /* "(tree fragment)":5
15601  *     cdef object _dict
15602  *     cdef bint use_setstate
15603  *     state = (self.name,)             # <<<<<<<<<<<<<<
15604  *     _dict = getattr(self, '__dict__', None)
15605  *     if _dict is not None:
15606  */
15607   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
15608   __Pyx_GOTREF(__pyx_t_1);
15609   __Pyx_INCREF(__pyx_v_self->name);
15610   __Pyx_GIVEREF(__pyx_v_self->name);
15611   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
15612   __pyx_v_state = ((PyObject*)__pyx_t_1);
15613   __pyx_t_1 = 0;
15614 
15615   /* "(tree fragment)":6
15616  *     cdef bint use_setstate
15617  *     state = (self.name,)
15618  *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
15619  *     if _dict is not None:
15620  *         state += (_dict,)
15621  */
15622   __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)
15623   __Pyx_GOTREF(__pyx_t_1);
15624   __pyx_v__dict = __pyx_t_1;
15625   __pyx_t_1 = 0;
15626 
15627   /* "(tree fragment)":7
15628  *     state = (self.name,)
15629  *     _dict = getattr(self, '__dict__', None)
15630  *     if _dict is not None:             # <<<<<<<<<<<<<<
15631  *         state += (_dict,)
15632  *         use_setstate = True
15633  */
15634   __pyx_t_2 = (__pyx_v__dict != Py_None);
15635   __pyx_t_3 = (__pyx_t_2 != 0);
15636   if (__pyx_t_3) {
15637 
15638     /* "(tree fragment)":8
15639  *     _dict = getattr(self, '__dict__', None)
15640  *     if _dict is not None:
15641  *         state += (_dict,)             # <<<<<<<<<<<<<<
15642  *         use_setstate = True
15643  *     else:
15644  */
15645     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
15646     __Pyx_GOTREF(__pyx_t_1);
15647     __Pyx_INCREF(__pyx_v__dict);
15648     __Pyx_GIVEREF(__pyx_v__dict);
15649     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
15650     __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
15651     __Pyx_GOTREF(__pyx_t_4);
15652     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15653     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
15654     __pyx_t_4 = 0;
15655 
15656     /* "(tree fragment)":9
15657  *     if _dict is not None:
15658  *         state += (_dict,)
15659  *         use_setstate = True             # <<<<<<<<<<<<<<
15660  *     else:
15661  *         use_setstate = self.name is not None
15662  */
15663     __pyx_v_use_setstate = 1;
15664 
15665     /* "(tree fragment)":7
15666  *     state = (self.name,)
15667  *     _dict = getattr(self, '__dict__', None)
15668  *     if _dict is not None:             # <<<<<<<<<<<<<<
15669  *         state += (_dict,)
15670  *         use_setstate = True
15671  */
15672     goto __pyx_L3;
15673   }
15674 
15675   /* "(tree fragment)":11
15676  *         use_setstate = True
15677  *     else:
15678  *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
15679  *     if use_setstate:
15680  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
15681  */
15682   /*else*/ {
15683     __pyx_t_3 = (__pyx_v_self->name != Py_None);
15684     __pyx_v_use_setstate = __pyx_t_3;
15685   }
15686   __pyx_L3:;
15687 
15688   /* "(tree fragment)":12
15689  *     else:
15690  *         use_setstate = self.name is not None
15691  *     if use_setstate:             # <<<<<<<<<<<<<<
15692  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
15693  *     else:
15694  */
15695   __pyx_t_3 = (__pyx_v_use_setstate != 0);
15696   if (__pyx_t_3) {
15697 
15698     /* "(tree fragment)":13
15699  *         use_setstate = self.name is not None
15700  *     if use_setstate:
15701  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state             # <<<<<<<<<<<<<<
15702  *     else:
15703  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
15704  */
15705     __Pyx_XDECREF(__pyx_r);
15706     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
15707     __Pyx_GOTREF(__pyx_t_4);
15708     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
15709     __Pyx_GOTREF(__pyx_t_1);
15710     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15711     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15712     PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15713     __Pyx_INCREF(__pyx_int_184977713);
15714     __Pyx_GIVEREF(__pyx_int_184977713);
15715     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713);
15716     __Pyx_INCREF(Py_None);
15717     __Pyx_GIVEREF(Py_None);
15718     PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
15719     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
15720     __Pyx_GOTREF(__pyx_t_5);
15721     __Pyx_GIVEREF(__pyx_t_4);
15722     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
15723     __Pyx_GIVEREF(__pyx_t_1);
15724     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
15725     __Pyx_INCREF(__pyx_v_state);
15726     __Pyx_GIVEREF(__pyx_v_state);
15727     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
15728     __pyx_t_4 = 0;
15729     __pyx_t_1 = 0;
15730     __pyx_r = __pyx_t_5;
15731     __pyx_t_5 = 0;
15732     goto __pyx_L0;
15733 
15734     /* "(tree fragment)":12
15735  *     else:
15736  *         use_setstate = self.name is not None
15737  *     if use_setstate:             # <<<<<<<<<<<<<<
15738  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
15739  *     else:
15740  */
15741   }
15742 
15743   /* "(tree fragment)":15
15744  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, None), state
15745  *     else:
15746  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)             # <<<<<<<<<<<<<<
15747  * def __setstate_cython__(self, __pyx_state):
15748  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
15749  */
15750   /*else*/ {
15751     __Pyx_XDECREF(__pyx_r);
15752     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
15753     __Pyx_GOTREF(__pyx_t_5);
15754     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
15755     __Pyx_GOTREF(__pyx_t_1);
15756     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15757     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15758     PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
15759     __Pyx_INCREF(__pyx_int_184977713);
15760     __Pyx_GIVEREF(__pyx_int_184977713);
15761     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713);
15762     __Pyx_INCREF(__pyx_v_state);
15763     __Pyx_GIVEREF(__pyx_v_state);
15764     PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
15765     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
15766     __Pyx_GOTREF(__pyx_t_4);
15767     __Pyx_GIVEREF(__pyx_t_5);
15768     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
15769     __Pyx_GIVEREF(__pyx_t_1);
15770     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
15771     __pyx_t_5 = 0;
15772     __pyx_t_1 = 0;
15773     __pyx_r = __pyx_t_4;
15774     __pyx_t_4 = 0;
15775     goto __pyx_L0;
15776   }
15777 
15778   /* "(tree fragment)":1
15779  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
15780  *     cdef tuple state
15781  *     cdef object _dict
15782  */
15783 
15784   /* function exit code */
15785   __pyx_L1_error:;
15786   __Pyx_XDECREF(__pyx_t_1);
15787   __Pyx_XDECREF(__pyx_t_4);
15788   __Pyx_XDECREF(__pyx_t_5);
15789   __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15790   __pyx_r = NULL;
15791   __pyx_L0:;
15792   __Pyx_XDECREF(__pyx_v_state);
15793   __Pyx_XDECREF(__pyx_v__dict);
15794   __Pyx_XGIVEREF(__pyx_r);
15795   __Pyx_RefNannyFinishContext();
15796   return __pyx_r;
15797 }
15798 
15799 /* "(tree fragment)":16
15800  *     else:
15801  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
15802  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
15803  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
15804  */
15805 
15806 /* Python wrapper */
15807 static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)15808 static PyObject *__pyx_pw___pyx_MemviewEnum_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
15809   PyObject *__pyx_r = 0;
15810   __Pyx_RefNannyDeclarations
15811   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
15812   __pyx_r = __pyx_pf___pyx_MemviewEnum_2__setstate_cython__(((struct __pyx_MemviewEnum_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
15813 
15814   /* function exit code */
15815   __Pyx_RefNannyFinishContext();
15816   return __pyx_r;
15817 }
15818 
__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj * __pyx_v_self,PyObject * __pyx_v___pyx_state)15819 static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_MemviewEnum_obj *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
15820   PyObject *__pyx_r = NULL;
15821   __Pyx_RefNannyDeclarations
15822   PyObject *__pyx_t_1 = NULL;
15823   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
15824 
15825   /* "(tree fragment)":17
15826  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
15827  * def __setstate_cython__(self, __pyx_state):
15828  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
15829  */
15830   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)
15831   __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
15832   __Pyx_GOTREF(__pyx_t_1);
15833   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15834 
15835   /* "(tree fragment)":16
15836  *     else:
15837  *         return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
15838  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
15839  *     __pyx_unpickle_Enum__set_state(self, __pyx_state)
15840  */
15841 
15842   /* function exit code */
15843   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15844   goto __pyx_L0;
15845   __pyx_L1_error:;
15846   __Pyx_XDECREF(__pyx_t_1);
15847   __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15848   __pyx_r = NULL;
15849   __pyx_L0:;
15850   __Pyx_XGIVEREF(__pyx_r);
15851   __Pyx_RefNannyFinishContext();
15852   return __pyx_r;
15853 }
15854 
15855 /* "View.MemoryView":298
15856  *
15857  * @cname('__pyx_align_pointer')
15858  * cdef void *align_pointer(void *memory, size_t alignment) nogil:             # <<<<<<<<<<<<<<
15859  *     "Align pointer memory on a given boundary"
15860  *     cdef Py_intptr_t aligned_p = <Py_intptr_t> memory
15861  */
15862 
__pyx_align_pointer(void * __pyx_v_memory,size_t __pyx_v_alignment)15863 static void *__pyx_align_pointer(void *__pyx_v_memory, size_t __pyx_v_alignment) {
15864   Py_intptr_t __pyx_v_aligned_p;
15865   size_t __pyx_v_offset;
15866   void *__pyx_r;
15867   int __pyx_t_1;
15868 
15869   /* "View.MemoryView":300
15870  * cdef void *align_pointer(void *memory, size_t alignment) nogil:
15871  *     "Align pointer memory on a given boundary"
15872  *     cdef Py_intptr_t aligned_p = <Py_intptr_t> memory             # <<<<<<<<<<<<<<
15873  *     cdef size_t offset
15874  *
15875  */
15876   __pyx_v_aligned_p = ((Py_intptr_t)__pyx_v_memory);
15877 
15878   /* "View.MemoryView":304
15879  *
15880  *     with cython.cdivision(True):
15881  *         offset = aligned_p % alignment             # <<<<<<<<<<<<<<
15882  *
15883  *     if offset > 0:
15884  */
15885   __pyx_v_offset = (__pyx_v_aligned_p % __pyx_v_alignment);
15886 
15887   /* "View.MemoryView":306
15888  *         offset = aligned_p % alignment
15889  *
15890  *     if offset > 0:             # <<<<<<<<<<<<<<
15891  *         aligned_p += alignment - offset
15892  *
15893  */
15894   __pyx_t_1 = ((__pyx_v_offset > 0) != 0);
15895   if (__pyx_t_1) {
15896 
15897     /* "View.MemoryView":307
15898  *
15899  *     if offset > 0:
15900  *         aligned_p += alignment - offset             # <<<<<<<<<<<<<<
15901  *
15902  *     return <void *> aligned_p
15903  */
15904     __pyx_v_aligned_p = (__pyx_v_aligned_p + (__pyx_v_alignment - __pyx_v_offset));
15905 
15906     /* "View.MemoryView":306
15907  *         offset = aligned_p % alignment
15908  *
15909  *     if offset > 0:             # <<<<<<<<<<<<<<
15910  *         aligned_p += alignment - offset
15911  *
15912  */
15913   }
15914 
15915   /* "View.MemoryView":309
15916  *         aligned_p += alignment - offset
15917  *
15918  *     return <void *> aligned_p             # <<<<<<<<<<<<<<
15919  *
15920  *
15921  */
15922   __pyx_r = ((void *)__pyx_v_aligned_p);
15923   goto __pyx_L0;
15924 
15925   /* "View.MemoryView":298
15926  *
15927  * @cname('__pyx_align_pointer')
15928  * cdef void *align_pointer(void *memory, size_t alignment) nogil:             # <<<<<<<<<<<<<<
15929  *     "Align pointer memory on a given boundary"
15930  *     cdef Py_intptr_t aligned_p = <Py_intptr_t> memory
15931  */
15932 
15933   /* function exit code */
15934   __pyx_L0:;
15935   return __pyx_r;
15936 }
15937 
15938 /* "View.MemoryView":345
15939  *     cdef __Pyx_TypeInfo *typeinfo
15940  *
15941  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):             # <<<<<<<<<<<<<<
15942  *         self.obj = obj
15943  *         self.flags = flags
15944  */
15945 
15946 /* Python wrapper */
15947 static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_memoryview___cinit__(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)15948 static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15949   PyObject *__pyx_v_obj = 0;
15950   int __pyx_v_flags;
15951   int __pyx_v_dtype_is_object;
15952   int __pyx_r;
15953   __Pyx_RefNannyDeclarations
15954   __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
15955   {
15956     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_flags,&__pyx_n_s_dtype_is_object,0};
15957     PyObject* values[3] = {0,0,0};
15958     if (unlikely(__pyx_kwds)) {
15959       Py_ssize_t kw_args;
15960       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
15961       switch (pos_args) {
15962         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
15963         CYTHON_FALLTHROUGH;
15964         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15965         CYTHON_FALLTHROUGH;
15966         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15967         CYTHON_FALLTHROUGH;
15968         case  0: break;
15969         default: goto __pyx_L5_argtuple_error;
15970       }
15971       kw_args = PyDict_Size(__pyx_kwds);
15972       switch (pos_args) {
15973         case  0:
15974         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obj)) != 0)) kw_args--;
15975         else goto __pyx_L5_argtuple_error;
15976         CYTHON_FALLTHROUGH;
15977         case  1:
15978         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
15979         else {
15980           __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); __PYX_ERR(1, 345, __pyx_L3_error)
15981         }
15982         CYTHON_FALLTHROUGH;
15983         case  2:
15984         if (kw_args > 0) {
15985           PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dtype_is_object);
15986           if (value) { values[2] = value; kw_args--; }
15987         }
15988       }
15989       if (unlikely(kw_args > 0)) {
15990         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 345, __pyx_L3_error)
15991       }
15992     } else {
15993       switch (PyTuple_GET_SIZE(__pyx_args)) {
15994         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
15995         CYTHON_FALLTHROUGH;
15996         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15997         values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15998         break;
15999         default: goto __pyx_L5_argtuple_error;
16000       }
16001     }
16002     __pyx_v_obj = values[0];
16003     __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L3_error)
16004     if (values[2]) {
16005       __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L3_error)
16006     } else {
16007       __pyx_v_dtype_is_object = ((int)0);
16008     }
16009   }
16010   goto __pyx_L4_argument_unpacking_done;
16011   __pyx_L5_argtuple_error:;
16012   __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 345, __pyx_L3_error)
16013   __pyx_L3_error:;
16014   __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16015   __Pyx_RefNannyFinishContext();
16016   return -1;
16017   __pyx_L4_argument_unpacking_done:;
16018   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_obj, __pyx_v_flags, __pyx_v_dtype_is_object);
16019 
16020   /* function exit code */
16021   __Pyx_RefNannyFinishContext();
16022   return __pyx_r;
16023 }
16024 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_obj,int __pyx_v_flags,int __pyx_v_dtype_is_object)16025 static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_flags, int __pyx_v_dtype_is_object) {
16026   int __pyx_r;
16027   __Pyx_RefNannyDeclarations
16028   int __pyx_t_1;
16029   int __pyx_t_2;
16030   int __pyx_t_3;
16031   int __pyx_t_4;
16032   __Pyx_RefNannySetupContext("__cinit__", 0);
16033 
16034   /* "View.MemoryView":346
16035  *
16036  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):
16037  *         self.obj = obj             # <<<<<<<<<<<<<<
16038  *         self.flags = flags
16039  *         if type(self) is memoryview or obj is not None:
16040  */
16041   __Pyx_INCREF(__pyx_v_obj);
16042   __Pyx_GIVEREF(__pyx_v_obj);
16043   __Pyx_GOTREF(__pyx_v_self->obj);
16044   __Pyx_DECREF(__pyx_v_self->obj);
16045   __pyx_v_self->obj = __pyx_v_obj;
16046 
16047   /* "View.MemoryView":347
16048  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):
16049  *         self.obj = obj
16050  *         self.flags = flags             # <<<<<<<<<<<<<<
16051  *         if type(self) is memoryview or obj is not None:
16052  *             __Pyx_GetBuffer(obj, &self.view, flags)
16053  */
16054   __pyx_v_self->flags = __pyx_v_flags;
16055 
16056   /* "View.MemoryView":348
16057  *         self.obj = obj
16058  *         self.flags = flags
16059  *         if type(self) is memoryview or obj is not None:             # <<<<<<<<<<<<<<
16060  *             __Pyx_GetBuffer(obj, &self.view, flags)
16061  *             if <PyObject *> self.view.obj == NULL:
16062  */
16063   __pyx_t_2 = (((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))) == ((PyObject *)__pyx_memoryview_type));
16064   __pyx_t_3 = (__pyx_t_2 != 0);
16065   if (!__pyx_t_3) {
16066   } else {
16067     __pyx_t_1 = __pyx_t_3;
16068     goto __pyx_L4_bool_binop_done;
16069   }
16070   __pyx_t_3 = (__pyx_v_obj != Py_None);
16071   __pyx_t_2 = (__pyx_t_3 != 0);
16072   __pyx_t_1 = __pyx_t_2;
16073   __pyx_L4_bool_binop_done:;
16074   if (__pyx_t_1) {
16075 
16076     /* "View.MemoryView":349
16077  *         self.flags = flags
16078  *         if type(self) is memoryview or obj is not None:
16079  *             __Pyx_GetBuffer(obj, &self.view, flags)             # <<<<<<<<<<<<<<
16080  *             if <PyObject *> self.view.obj == NULL:
16081  *                 (<__pyx_buffer *> &self.view).obj = Py_None
16082  */
16083     __pyx_t_4 = __Pyx_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 349, __pyx_L1_error)
16084 
16085     /* "View.MemoryView":350
16086  *         if type(self) is memoryview or obj is not None:
16087  *             __Pyx_GetBuffer(obj, &self.view, flags)
16088  *             if <PyObject *> self.view.obj == NULL:             # <<<<<<<<<<<<<<
16089  *                 (<__pyx_buffer *> &self.view).obj = Py_None
16090  *                 Py_INCREF(Py_None)
16091  */
16092     __pyx_t_1 = ((((PyObject *)__pyx_v_self->view.obj) == NULL) != 0);
16093     if (__pyx_t_1) {
16094 
16095       /* "View.MemoryView":351
16096  *             __Pyx_GetBuffer(obj, &self.view, flags)
16097  *             if <PyObject *> self.view.obj == NULL:
16098  *                 (<__pyx_buffer *> &self.view).obj = Py_None             # <<<<<<<<<<<<<<
16099  *                 Py_INCREF(Py_None)
16100  *
16101  */
16102       ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None;
16103 
16104       /* "View.MemoryView":352
16105  *             if <PyObject *> self.view.obj == NULL:
16106  *                 (<__pyx_buffer *> &self.view).obj = Py_None
16107  *                 Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
16108  *
16109  *         global __pyx_memoryview_thread_locks_used
16110  */
16111       Py_INCREF(Py_None);
16112 
16113       /* "View.MemoryView":350
16114  *         if type(self) is memoryview or obj is not None:
16115  *             __Pyx_GetBuffer(obj, &self.view, flags)
16116  *             if <PyObject *> self.view.obj == NULL:             # <<<<<<<<<<<<<<
16117  *                 (<__pyx_buffer *> &self.view).obj = Py_None
16118  *                 Py_INCREF(Py_None)
16119  */
16120     }
16121 
16122     /* "View.MemoryView":348
16123  *         self.obj = obj
16124  *         self.flags = flags
16125  *         if type(self) is memoryview or obj is not None:             # <<<<<<<<<<<<<<
16126  *             __Pyx_GetBuffer(obj, &self.view, flags)
16127  *             if <PyObject *> self.view.obj == NULL:
16128  */
16129   }
16130 
16131   /* "View.MemoryView":355
16132  *
16133  *         global __pyx_memoryview_thread_locks_used
16134  *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:             # <<<<<<<<<<<<<<
16135  *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
16136  *             __pyx_memoryview_thread_locks_used += 1
16137  */
16138   __pyx_t_1 = ((__pyx_memoryview_thread_locks_used < 8) != 0);
16139   if (__pyx_t_1) {
16140 
16141     /* "View.MemoryView":356
16142  *         global __pyx_memoryview_thread_locks_used
16143  *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:
16144  *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]             # <<<<<<<<<<<<<<
16145  *             __pyx_memoryview_thread_locks_used += 1
16146  *         if self.lock is NULL:
16147  */
16148     __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]);
16149 
16150     /* "View.MemoryView":357
16151  *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:
16152  *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
16153  *             __pyx_memoryview_thread_locks_used += 1             # <<<<<<<<<<<<<<
16154  *         if self.lock is NULL:
16155  *             self.lock = PyThread_allocate_lock()
16156  */
16157     __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1);
16158 
16159     /* "View.MemoryView":355
16160  *
16161  *         global __pyx_memoryview_thread_locks_used
16162  *         if __pyx_memoryview_thread_locks_used < THREAD_LOCKS_PREALLOCATED:             # <<<<<<<<<<<<<<
16163  *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
16164  *             __pyx_memoryview_thread_locks_used += 1
16165  */
16166   }
16167 
16168   /* "View.MemoryView":358
16169  *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
16170  *             __pyx_memoryview_thread_locks_used += 1
16171  *         if self.lock is NULL:             # <<<<<<<<<<<<<<
16172  *             self.lock = PyThread_allocate_lock()
16173  *             if self.lock is NULL:
16174  */
16175   __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0);
16176   if (__pyx_t_1) {
16177 
16178     /* "View.MemoryView":359
16179  *             __pyx_memoryview_thread_locks_used += 1
16180  *         if self.lock is NULL:
16181  *             self.lock = PyThread_allocate_lock()             # <<<<<<<<<<<<<<
16182  *             if self.lock is NULL:
16183  *                 raise MemoryError
16184  */
16185     __pyx_v_self->lock = PyThread_allocate_lock();
16186 
16187     /* "View.MemoryView":360
16188  *         if self.lock is NULL:
16189  *             self.lock = PyThread_allocate_lock()
16190  *             if self.lock is NULL:             # <<<<<<<<<<<<<<
16191  *                 raise MemoryError
16192  *
16193  */
16194     __pyx_t_1 = ((__pyx_v_self->lock == NULL) != 0);
16195     if (unlikely(__pyx_t_1)) {
16196 
16197       /* "View.MemoryView":361
16198  *             self.lock = PyThread_allocate_lock()
16199  *             if self.lock is NULL:
16200  *                 raise MemoryError             # <<<<<<<<<<<<<<
16201  *
16202  *         if flags & PyBUF_FORMAT:
16203  */
16204       PyErr_NoMemory(); __PYX_ERR(1, 361, __pyx_L1_error)
16205 
16206       /* "View.MemoryView":360
16207  *         if self.lock is NULL:
16208  *             self.lock = PyThread_allocate_lock()
16209  *             if self.lock is NULL:             # <<<<<<<<<<<<<<
16210  *                 raise MemoryError
16211  *
16212  */
16213     }
16214 
16215     /* "View.MemoryView":358
16216  *             self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]
16217  *             __pyx_memoryview_thread_locks_used += 1
16218  *         if self.lock is NULL:             # <<<<<<<<<<<<<<
16219  *             self.lock = PyThread_allocate_lock()
16220  *             if self.lock is NULL:
16221  */
16222   }
16223 
16224   /* "View.MemoryView":363
16225  *                 raise MemoryError
16226  *
16227  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
16228  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
16229  *         else:
16230  */
16231   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
16232   if (__pyx_t_1) {
16233 
16234     /* "View.MemoryView":364
16235  *
16236  *         if flags & PyBUF_FORMAT:
16237  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')             # <<<<<<<<<<<<<<
16238  *         else:
16239  *             self.dtype_is_object = dtype_is_object
16240  */
16241     __pyx_t_2 = (((__pyx_v_self->view.format[0]) == 'O') != 0);
16242     if (__pyx_t_2) {
16243     } else {
16244       __pyx_t_1 = __pyx_t_2;
16245       goto __pyx_L11_bool_binop_done;
16246     }
16247     __pyx_t_2 = (((__pyx_v_self->view.format[1]) == '\x00') != 0);
16248     __pyx_t_1 = __pyx_t_2;
16249     __pyx_L11_bool_binop_done:;
16250     __pyx_v_self->dtype_is_object = __pyx_t_1;
16251 
16252     /* "View.MemoryView":363
16253  *                 raise MemoryError
16254  *
16255  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
16256  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
16257  *         else:
16258  */
16259     goto __pyx_L10;
16260   }
16261 
16262   /* "View.MemoryView":366
16263  *             self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0')
16264  *         else:
16265  *             self.dtype_is_object = dtype_is_object             # <<<<<<<<<<<<<<
16266  *
16267  *         self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer(
16268  */
16269   /*else*/ {
16270     __pyx_v_self->dtype_is_object = __pyx_v_dtype_is_object;
16271   }
16272   __pyx_L10:;
16273 
16274   /* "View.MemoryView":368
16275  *             self.dtype_is_object = dtype_is_object
16276  *
16277  *         self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer(             # <<<<<<<<<<<<<<
16278  *                   <void *> &self.acquisition_count[0], sizeof(__pyx_atomic_int))
16279  *         self.typeinfo = NULL
16280  */
16281   __pyx_v_self->acquisition_count_aligned_p = ((__pyx_atomic_int *)__pyx_align_pointer(((void *)(&(__pyx_v_self->acquisition_count[0]))), (sizeof(__pyx_atomic_int))));
16282 
16283   /* "View.MemoryView":370
16284  *         self.acquisition_count_aligned_p = <__pyx_atomic_int *> align_pointer(
16285  *                   <void *> &self.acquisition_count[0], sizeof(__pyx_atomic_int))
16286  *         self.typeinfo = NULL             # <<<<<<<<<<<<<<
16287  *
16288  *     def __dealloc__(memoryview self):
16289  */
16290   __pyx_v_self->typeinfo = NULL;
16291 
16292   /* "View.MemoryView":345
16293  *     cdef __Pyx_TypeInfo *typeinfo
16294  *
16295  *     def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False):             # <<<<<<<<<<<<<<
16296  *         self.obj = obj
16297  *         self.flags = flags
16298  */
16299 
16300   /* function exit code */
16301   __pyx_r = 0;
16302   goto __pyx_L0;
16303   __pyx_L1_error:;
16304   __Pyx_AddTraceback("View.MemoryView.memoryview.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16305   __pyx_r = -1;
16306   __pyx_L0:;
16307   __Pyx_RefNannyFinishContext();
16308   return __pyx_r;
16309 }
16310 
16311 /* "View.MemoryView":372
16312  *         self.typeinfo = NULL
16313  *
16314  *     def __dealloc__(memoryview self):             # <<<<<<<<<<<<<<
16315  *         if self.obj is not None:
16316  *             __Pyx_ReleaseBuffer(&self.view)
16317  */
16318 
16319 /* Python wrapper */
16320 static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_memoryview___dealloc__(PyObject * __pyx_v_self)16321 static void __pyx_memoryview___dealloc__(PyObject *__pyx_v_self) {
16322   __Pyx_RefNannyDeclarations
16323   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
16324   __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(((struct __pyx_memoryview_obj *)__pyx_v_self));
16325 
16326   /* function exit code */
16327   __Pyx_RefNannyFinishContext();
16328 }
16329 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj * __pyx_v_self)16330 static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__dealloc__(struct __pyx_memoryview_obj *__pyx_v_self) {
16331   int __pyx_v_i;
16332   __Pyx_RefNannyDeclarations
16333   int __pyx_t_1;
16334   int __pyx_t_2;
16335   int __pyx_t_3;
16336   int __pyx_t_4;
16337   int __pyx_t_5;
16338   PyThread_type_lock __pyx_t_6;
16339   PyThread_type_lock __pyx_t_7;
16340   __Pyx_RefNannySetupContext("__dealloc__", 0);
16341 
16342   /* "View.MemoryView":373
16343  *
16344  *     def __dealloc__(memoryview self):
16345  *         if self.obj is not None:             # <<<<<<<<<<<<<<
16346  *             __Pyx_ReleaseBuffer(&self.view)
16347  *
16348  */
16349   __pyx_t_1 = (__pyx_v_self->obj != Py_None);
16350   __pyx_t_2 = (__pyx_t_1 != 0);
16351   if (__pyx_t_2) {
16352 
16353     /* "View.MemoryView":374
16354  *     def __dealloc__(memoryview self):
16355  *         if self.obj is not None:
16356  *             __Pyx_ReleaseBuffer(&self.view)             # <<<<<<<<<<<<<<
16357  *
16358  *         cdef int i
16359  */
16360     __Pyx_ReleaseBuffer((&__pyx_v_self->view));
16361 
16362     /* "View.MemoryView":373
16363  *
16364  *     def __dealloc__(memoryview self):
16365  *         if self.obj is not None:             # <<<<<<<<<<<<<<
16366  *             __Pyx_ReleaseBuffer(&self.view)
16367  *
16368  */
16369   }
16370 
16371   /* "View.MemoryView":378
16372  *         cdef int i
16373  *         global __pyx_memoryview_thread_locks_used
16374  *         if self.lock != NULL:             # <<<<<<<<<<<<<<
16375  *             for i in range(__pyx_memoryview_thread_locks_used):
16376  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
16377  */
16378   __pyx_t_2 = ((__pyx_v_self->lock != NULL) != 0);
16379   if (__pyx_t_2) {
16380 
16381     /* "View.MemoryView":379
16382  *         global __pyx_memoryview_thread_locks_used
16383  *         if self.lock != NULL:
16384  *             for i in range(__pyx_memoryview_thread_locks_used):             # <<<<<<<<<<<<<<
16385  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
16386  *                     __pyx_memoryview_thread_locks_used -= 1
16387  */
16388     __pyx_t_3 = __pyx_memoryview_thread_locks_used;
16389     __pyx_t_4 = __pyx_t_3;
16390     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
16391       __pyx_v_i = __pyx_t_5;
16392 
16393       /* "View.MemoryView":380
16394  *         if self.lock != NULL:
16395  *             for i in range(__pyx_memoryview_thread_locks_used):
16396  *                 if __pyx_memoryview_thread_locks[i] is self.lock:             # <<<<<<<<<<<<<<
16397  *                     __pyx_memoryview_thread_locks_used -= 1
16398  *                     if i != __pyx_memoryview_thread_locks_used:
16399  */
16400       __pyx_t_2 = (((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock) != 0);
16401       if (__pyx_t_2) {
16402 
16403         /* "View.MemoryView":381
16404  *             for i in range(__pyx_memoryview_thread_locks_used):
16405  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
16406  *                     __pyx_memoryview_thread_locks_used -= 1             # <<<<<<<<<<<<<<
16407  *                     if i != __pyx_memoryview_thread_locks_used:
16408  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
16409  */
16410         __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1);
16411 
16412         /* "View.MemoryView":382
16413  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
16414  *                     __pyx_memoryview_thread_locks_used -= 1
16415  *                     if i != __pyx_memoryview_thread_locks_used:             # <<<<<<<<<<<<<<
16416  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
16417  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
16418  */
16419         __pyx_t_2 = ((__pyx_v_i != __pyx_memoryview_thread_locks_used) != 0);
16420         if (__pyx_t_2) {
16421 
16422           /* "View.MemoryView":384
16423  *                     if i != __pyx_memoryview_thread_locks_used:
16424  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
16425  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])             # <<<<<<<<<<<<<<
16426  *                     break
16427  *             else:
16428  */
16429           __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]);
16430           __pyx_t_7 = (__pyx_memoryview_thread_locks[__pyx_v_i]);
16431 
16432           /* "View.MemoryView":383
16433  *                     __pyx_memoryview_thread_locks_used -= 1
16434  *                     if i != __pyx_memoryview_thread_locks_used:
16435  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (             # <<<<<<<<<<<<<<
16436  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
16437  *                     break
16438  */
16439           (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_6;
16440           (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_7;
16441 
16442           /* "View.MemoryView":382
16443  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
16444  *                     __pyx_memoryview_thread_locks_used -= 1
16445  *                     if i != __pyx_memoryview_thread_locks_used:             # <<<<<<<<<<<<<<
16446  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
16447  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
16448  */
16449         }
16450 
16451         /* "View.MemoryView":385
16452  *                         __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = (
16453  *                             __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i])
16454  *                     break             # <<<<<<<<<<<<<<
16455  *             else:
16456  *                 PyThread_free_lock(self.lock)
16457  */
16458         goto __pyx_L6_break;
16459 
16460         /* "View.MemoryView":380
16461  *         if self.lock != NULL:
16462  *             for i in range(__pyx_memoryview_thread_locks_used):
16463  *                 if __pyx_memoryview_thread_locks[i] is self.lock:             # <<<<<<<<<<<<<<
16464  *                     __pyx_memoryview_thread_locks_used -= 1
16465  *                     if i != __pyx_memoryview_thread_locks_used:
16466  */
16467       }
16468     }
16469     /*else*/ {
16470 
16471       /* "View.MemoryView":387
16472  *                     break
16473  *             else:
16474  *                 PyThread_free_lock(self.lock)             # <<<<<<<<<<<<<<
16475  *
16476  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:
16477  */
16478       PyThread_free_lock(__pyx_v_self->lock);
16479     }
16480     __pyx_L6_break:;
16481 
16482     /* "View.MemoryView":378
16483  *         cdef int i
16484  *         global __pyx_memoryview_thread_locks_used
16485  *         if self.lock != NULL:             # <<<<<<<<<<<<<<
16486  *             for i in range(__pyx_memoryview_thread_locks_used):
16487  *                 if __pyx_memoryview_thread_locks[i] is self.lock:
16488  */
16489   }
16490 
16491   /* "View.MemoryView":372
16492  *         self.typeinfo = NULL
16493  *
16494  *     def __dealloc__(memoryview self):             # <<<<<<<<<<<<<<
16495  *         if self.obj is not None:
16496  *             __Pyx_ReleaseBuffer(&self.view)
16497  */
16498 
16499   /* function exit code */
16500   __Pyx_RefNannyFinishContext();
16501 }
16502 
16503 /* "View.MemoryView":389
16504  *                 PyThread_free_lock(self.lock)
16505  *
16506  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:             # <<<<<<<<<<<<<<
16507  *         cdef Py_ssize_t dim
16508  *         cdef char *itemp = <char *> self.view.buf
16509  */
16510 
__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_index)16511 static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) {
16512   Py_ssize_t __pyx_v_dim;
16513   char *__pyx_v_itemp;
16514   PyObject *__pyx_v_idx = NULL;
16515   char *__pyx_r;
16516   __Pyx_RefNannyDeclarations
16517   Py_ssize_t __pyx_t_1;
16518   PyObject *__pyx_t_2 = NULL;
16519   Py_ssize_t __pyx_t_3;
16520   PyObject *(*__pyx_t_4)(PyObject *);
16521   PyObject *__pyx_t_5 = NULL;
16522   Py_ssize_t __pyx_t_6;
16523   char *__pyx_t_7;
16524   __Pyx_RefNannySetupContext("get_item_pointer", 0);
16525 
16526   /* "View.MemoryView":391
16527  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:
16528  *         cdef Py_ssize_t dim
16529  *         cdef char *itemp = <char *> self.view.buf             # <<<<<<<<<<<<<<
16530  *
16531  *         for dim, idx in enumerate(index):
16532  */
16533   __pyx_v_itemp = ((char *)__pyx_v_self->view.buf);
16534 
16535   /* "View.MemoryView":393
16536  *         cdef char *itemp = <char *> self.view.buf
16537  *
16538  *         for dim, idx in enumerate(index):             # <<<<<<<<<<<<<<
16539  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
16540  *
16541  */
16542   __pyx_t_1 = 0;
16543   if (likely(PyList_CheckExact(__pyx_v_index)) || PyTuple_CheckExact(__pyx_v_index)) {
16544     __pyx_t_2 = __pyx_v_index; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
16545     __pyx_t_4 = NULL;
16546   } else {
16547     __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 393, __pyx_L1_error)
16548     __Pyx_GOTREF(__pyx_t_2);
16549     __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 393, __pyx_L1_error)
16550   }
16551   for (;;) {
16552     if (likely(!__pyx_t_4)) {
16553       if (likely(PyList_CheckExact(__pyx_t_2))) {
16554         if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
16555         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
16556         __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 393, __pyx_L1_error)
16557         #else
16558         __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 393, __pyx_L1_error)
16559         __Pyx_GOTREF(__pyx_t_5);
16560         #endif
16561       } else {
16562         if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
16563         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
16564         __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 393, __pyx_L1_error)
16565         #else
16566         __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 393, __pyx_L1_error)
16567         __Pyx_GOTREF(__pyx_t_5);
16568         #endif
16569       }
16570     } else {
16571       __pyx_t_5 = __pyx_t_4(__pyx_t_2);
16572       if (unlikely(!__pyx_t_5)) {
16573         PyObject* exc_type = PyErr_Occurred();
16574         if (exc_type) {
16575           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16576           else __PYX_ERR(1, 393, __pyx_L1_error)
16577         }
16578         break;
16579       }
16580       __Pyx_GOTREF(__pyx_t_5);
16581     }
16582     __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
16583     __pyx_t_5 = 0;
16584     __pyx_v_dim = __pyx_t_1;
16585     __pyx_t_1 = (__pyx_t_1 + 1);
16586 
16587     /* "View.MemoryView":394
16588  *
16589  *         for dim, idx in enumerate(index):
16590  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)             # <<<<<<<<<<<<<<
16591  *
16592  *         return itemp
16593  */
16594     __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 394, __pyx_L1_error)
16595     __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)NULL))) __PYX_ERR(1, 394, __pyx_L1_error)
16596     __pyx_v_itemp = __pyx_t_7;
16597 
16598     /* "View.MemoryView":393
16599  *         cdef char *itemp = <char *> self.view.buf
16600  *
16601  *         for dim, idx in enumerate(index):             # <<<<<<<<<<<<<<
16602  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
16603  *
16604  */
16605   }
16606   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16607 
16608   /* "View.MemoryView":396
16609  *             itemp = pybuffer_index(&self.view, itemp, idx, dim)
16610  *
16611  *         return itemp             # <<<<<<<<<<<<<<
16612  *
16613  *
16614  */
16615   __pyx_r = __pyx_v_itemp;
16616   goto __pyx_L0;
16617 
16618   /* "View.MemoryView":389
16619  *                 PyThread_free_lock(self.lock)
16620  *
16621  *     cdef char *get_item_pointer(memoryview self, object index) except NULL:             # <<<<<<<<<<<<<<
16622  *         cdef Py_ssize_t dim
16623  *         cdef char *itemp = <char *> self.view.buf
16624  */
16625 
16626   /* function exit code */
16627   __pyx_L1_error:;
16628   __Pyx_XDECREF(__pyx_t_2);
16629   __Pyx_XDECREF(__pyx_t_5);
16630   __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename);
16631   __pyx_r = NULL;
16632   __pyx_L0:;
16633   __Pyx_XDECREF(__pyx_v_idx);
16634   __Pyx_RefNannyFinishContext();
16635   return __pyx_r;
16636 }
16637 
16638 /* "View.MemoryView":399
16639  *
16640  *
16641  *     def __getitem__(memoryview self, object index):             # <<<<<<<<<<<<<<
16642  *         if index is Ellipsis:
16643  *             return self
16644  */
16645 
16646 /* Python wrapper */
16647 static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
__pyx_memoryview___getitem__(PyObject * __pyx_v_self,PyObject * __pyx_v_index)16648 static PyObject *__pyx_memoryview___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
16649   PyObject *__pyx_r = 0;
16650   __Pyx_RefNannyDeclarations
16651   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
16652   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index));
16653 
16654   /* function exit code */
16655   __Pyx_RefNannyFinishContext();
16656   return __pyx_r;
16657 }
16658 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_index)16659 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4__getitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index) {
16660   PyObject *__pyx_v_have_slices = NULL;
16661   PyObject *__pyx_v_indices = NULL;
16662   char *__pyx_v_itemp;
16663   PyObject *__pyx_r = NULL;
16664   __Pyx_RefNannyDeclarations
16665   int __pyx_t_1;
16666   int __pyx_t_2;
16667   PyObject *__pyx_t_3 = NULL;
16668   PyObject *__pyx_t_4 = NULL;
16669   PyObject *__pyx_t_5 = NULL;
16670   char *__pyx_t_6;
16671   __Pyx_RefNannySetupContext("__getitem__", 0);
16672 
16673   /* "View.MemoryView":400
16674  *
16675  *     def __getitem__(memoryview self, object index):
16676  *         if index is Ellipsis:             # <<<<<<<<<<<<<<
16677  *             return self
16678  *
16679  */
16680   __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis);
16681   __pyx_t_2 = (__pyx_t_1 != 0);
16682   if (__pyx_t_2) {
16683 
16684     /* "View.MemoryView":401
16685  *     def __getitem__(memoryview self, object index):
16686  *         if index is Ellipsis:
16687  *             return self             # <<<<<<<<<<<<<<
16688  *
16689  *         have_slices, indices = _unellipsify(index, self.view.ndim)
16690  */
16691     __Pyx_XDECREF(__pyx_r);
16692     __Pyx_INCREF(((PyObject *)__pyx_v_self));
16693     __pyx_r = ((PyObject *)__pyx_v_self);
16694     goto __pyx_L0;
16695 
16696     /* "View.MemoryView":400
16697  *
16698  *     def __getitem__(memoryview self, object index):
16699  *         if index is Ellipsis:             # <<<<<<<<<<<<<<
16700  *             return self
16701  *
16702  */
16703   }
16704 
16705   /* "View.MemoryView":403
16706  *             return self
16707  *
16708  *         have_slices, indices = _unellipsify(index, self.view.ndim)             # <<<<<<<<<<<<<<
16709  *
16710  *         cdef char *itemp
16711  */
16712   __pyx_t_3 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 403, __pyx_L1_error)
16713   __Pyx_GOTREF(__pyx_t_3);
16714   if (likely(__pyx_t_3 != Py_None)) {
16715     PyObject* sequence = __pyx_t_3;
16716     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
16717     if (unlikely(size != 2)) {
16718       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
16719       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
16720       __PYX_ERR(1, 403, __pyx_L1_error)
16721     }
16722     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
16723     __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
16724     __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
16725     __Pyx_INCREF(__pyx_t_4);
16726     __Pyx_INCREF(__pyx_t_5);
16727     #else
16728     __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 403, __pyx_L1_error)
16729     __Pyx_GOTREF(__pyx_t_4);
16730     __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 403, __pyx_L1_error)
16731     __Pyx_GOTREF(__pyx_t_5);
16732     #endif
16733     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16734   } else {
16735     __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 403, __pyx_L1_error)
16736   }
16737   __pyx_v_have_slices = __pyx_t_4;
16738   __pyx_t_4 = 0;
16739   __pyx_v_indices = __pyx_t_5;
16740   __pyx_t_5 = 0;
16741 
16742   /* "View.MemoryView":406
16743  *
16744  *         cdef char *itemp
16745  *         if have_slices:             # <<<<<<<<<<<<<<
16746  *             return memview_slice(self, indices)
16747  *         else:
16748  */
16749   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 406, __pyx_L1_error)
16750   if (__pyx_t_2) {
16751 
16752     /* "View.MemoryView":407
16753  *         cdef char *itemp
16754  *         if have_slices:
16755  *             return memview_slice(self, indices)             # <<<<<<<<<<<<<<
16756  *         else:
16757  *             itemp = self.get_item_pointer(indices)
16758  */
16759     __Pyx_XDECREF(__pyx_r);
16760     __pyx_t_3 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 407, __pyx_L1_error)
16761     __Pyx_GOTREF(__pyx_t_3);
16762     __pyx_r = __pyx_t_3;
16763     __pyx_t_3 = 0;
16764     goto __pyx_L0;
16765 
16766     /* "View.MemoryView":406
16767  *
16768  *         cdef char *itemp
16769  *         if have_slices:             # <<<<<<<<<<<<<<
16770  *             return memview_slice(self, indices)
16771  *         else:
16772  */
16773   }
16774 
16775   /* "View.MemoryView":409
16776  *             return memview_slice(self, indices)
16777  *         else:
16778  *             itemp = self.get_item_pointer(indices)             # <<<<<<<<<<<<<<
16779  *             return self.convert_item_to_object(itemp)
16780  *
16781  */
16782   /*else*/ {
16783     __pyx_t_6 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_6 == ((char *)NULL))) __PYX_ERR(1, 409, __pyx_L1_error)
16784     __pyx_v_itemp = __pyx_t_6;
16785 
16786     /* "View.MemoryView":410
16787  *         else:
16788  *             itemp = self.get_item_pointer(indices)
16789  *             return self.convert_item_to_object(itemp)             # <<<<<<<<<<<<<<
16790  *
16791  *     def __setitem__(memoryview self, object index, object value):
16792  */
16793     __Pyx_XDECREF(__pyx_r);
16794     __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 410, __pyx_L1_error)
16795     __Pyx_GOTREF(__pyx_t_3);
16796     __pyx_r = __pyx_t_3;
16797     __pyx_t_3 = 0;
16798     goto __pyx_L0;
16799   }
16800 
16801   /* "View.MemoryView":399
16802  *
16803  *
16804  *     def __getitem__(memoryview self, object index):             # <<<<<<<<<<<<<<
16805  *         if index is Ellipsis:
16806  *             return self
16807  */
16808 
16809   /* function exit code */
16810   __pyx_L1_error:;
16811   __Pyx_XDECREF(__pyx_t_3);
16812   __Pyx_XDECREF(__pyx_t_4);
16813   __Pyx_XDECREF(__pyx_t_5);
16814   __Pyx_AddTraceback("View.MemoryView.memoryview.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16815   __pyx_r = NULL;
16816   __pyx_L0:;
16817   __Pyx_XDECREF(__pyx_v_have_slices);
16818   __Pyx_XDECREF(__pyx_v_indices);
16819   __Pyx_XGIVEREF(__pyx_r);
16820   __Pyx_RefNannyFinishContext();
16821   return __pyx_r;
16822 }
16823 
16824 /* "View.MemoryView":412
16825  *             return self.convert_item_to_object(itemp)
16826  *
16827  *     def __setitem__(memoryview self, object index, object value):             # <<<<<<<<<<<<<<
16828  *         if self.view.readonly:
16829  *             raise TypeError("Cannot assign to read-only memoryview")
16830  */
16831 
16832 /* Python wrapper */
16833 static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
__pyx_memoryview___setitem__(PyObject * __pyx_v_self,PyObject * __pyx_v_index,PyObject * __pyx_v_value)16834 static int __pyx_memoryview___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
16835   int __pyx_r;
16836   __Pyx_RefNannyDeclarations
16837   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
16838   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v_index), ((PyObject *)__pyx_v_value));
16839 
16840   /* function exit code */
16841   __Pyx_RefNannyFinishContext();
16842   return __pyx_r;
16843 }
16844 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_index,PyObject * __pyx_v_value)16845 static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setitem__(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
16846   PyObject *__pyx_v_have_slices = NULL;
16847   PyObject *__pyx_v_obj = NULL;
16848   int __pyx_r;
16849   __Pyx_RefNannyDeclarations
16850   int __pyx_t_1;
16851   PyObject *__pyx_t_2 = NULL;
16852   PyObject *__pyx_t_3 = NULL;
16853   PyObject *__pyx_t_4 = NULL;
16854   __Pyx_RefNannySetupContext("__setitem__", 0);
16855   __Pyx_INCREF(__pyx_v_index);
16856 
16857   /* "View.MemoryView":413
16858  *
16859  *     def __setitem__(memoryview self, object index, object value):
16860  *         if self.view.readonly:             # <<<<<<<<<<<<<<
16861  *             raise TypeError("Cannot assign to read-only memoryview")
16862  *
16863  */
16864   __pyx_t_1 = (__pyx_v_self->view.readonly != 0);
16865   if (unlikely(__pyx_t_1)) {
16866 
16867     /* "View.MemoryView":414
16868  *     def __setitem__(memoryview self, object index, object value):
16869  *         if self.view.readonly:
16870  *             raise TypeError("Cannot assign to read-only memoryview")             # <<<<<<<<<<<<<<
16871  *
16872  *         have_slices, index = _unellipsify(index, self.view.ndim)
16873  */
16874     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 414, __pyx_L1_error)
16875     __Pyx_GOTREF(__pyx_t_2);
16876     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
16877     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16878     __PYX_ERR(1, 414, __pyx_L1_error)
16879 
16880     /* "View.MemoryView":413
16881  *
16882  *     def __setitem__(memoryview self, object index, object value):
16883  *         if self.view.readonly:             # <<<<<<<<<<<<<<
16884  *             raise TypeError("Cannot assign to read-only memoryview")
16885  *
16886  */
16887   }
16888 
16889   /* "View.MemoryView":416
16890  *             raise TypeError("Cannot assign to read-only memoryview")
16891  *
16892  *         have_slices, index = _unellipsify(index, self.view.ndim)             # <<<<<<<<<<<<<<
16893  *
16894  *         if have_slices:
16895  */
16896   __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 416, __pyx_L1_error)
16897   __Pyx_GOTREF(__pyx_t_2);
16898   if (likely(__pyx_t_2 != Py_None)) {
16899     PyObject* sequence = __pyx_t_2;
16900     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
16901     if (unlikely(size != 2)) {
16902       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
16903       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
16904       __PYX_ERR(1, 416, __pyx_L1_error)
16905     }
16906     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
16907     __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
16908     __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
16909     __Pyx_INCREF(__pyx_t_3);
16910     __Pyx_INCREF(__pyx_t_4);
16911     #else
16912     __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 416, __pyx_L1_error)
16913     __Pyx_GOTREF(__pyx_t_3);
16914     __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 416, __pyx_L1_error)
16915     __Pyx_GOTREF(__pyx_t_4);
16916     #endif
16917     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16918   } else {
16919     __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 416, __pyx_L1_error)
16920   }
16921   __pyx_v_have_slices = __pyx_t_3;
16922   __pyx_t_3 = 0;
16923   __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_4);
16924   __pyx_t_4 = 0;
16925 
16926   /* "View.MemoryView":418
16927  *         have_slices, index = _unellipsify(index, self.view.ndim)
16928  *
16929  *         if have_slices:             # <<<<<<<<<<<<<<
16930  *             obj = self.is_slice(value)
16931  *             if obj:
16932  */
16933   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 418, __pyx_L1_error)
16934   if (__pyx_t_1) {
16935 
16936     /* "View.MemoryView":419
16937  *
16938  *         if have_slices:
16939  *             obj = self.is_slice(value)             # <<<<<<<<<<<<<<
16940  *             if obj:
16941  *                 self.setitem_slice_assignment(self[index], obj)
16942  */
16943     __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 419, __pyx_L1_error)
16944     __Pyx_GOTREF(__pyx_t_2);
16945     __pyx_v_obj = __pyx_t_2;
16946     __pyx_t_2 = 0;
16947 
16948     /* "View.MemoryView":420
16949  *         if have_slices:
16950  *             obj = self.is_slice(value)
16951  *             if obj:             # <<<<<<<<<<<<<<
16952  *                 self.setitem_slice_assignment(self[index], obj)
16953  *             else:
16954  */
16955     __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 420, __pyx_L1_error)
16956     if (__pyx_t_1) {
16957 
16958       /* "View.MemoryView":421
16959  *             obj = self.is_slice(value)
16960  *             if obj:
16961  *                 self.setitem_slice_assignment(self[index], obj)             # <<<<<<<<<<<<<<
16962  *             else:
16963  *                 self.setitem_slice_assign_scalar(self[index], value)
16964  */
16965       __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 421, __pyx_L1_error)
16966       __Pyx_GOTREF(__pyx_t_2);
16967       __pyx_t_4 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_2, __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 421, __pyx_L1_error)
16968       __Pyx_GOTREF(__pyx_t_4);
16969       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16970       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16971 
16972       /* "View.MemoryView":420
16973  *         if have_slices:
16974  *             obj = self.is_slice(value)
16975  *             if obj:             # <<<<<<<<<<<<<<
16976  *                 self.setitem_slice_assignment(self[index], obj)
16977  *             else:
16978  */
16979       goto __pyx_L5;
16980     }
16981 
16982     /* "View.MemoryView":423
16983  *                 self.setitem_slice_assignment(self[index], obj)
16984  *             else:
16985  *                 self.setitem_slice_assign_scalar(self[index], value)             # <<<<<<<<<<<<<<
16986  *         else:
16987  *             self.setitem_indexed(index, value)
16988  */
16989     /*else*/ {
16990       __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 423, __pyx_L1_error)
16991       __Pyx_GOTREF(__pyx_t_4);
16992       if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_memoryview_type))))) __PYX_ERR(1, 423, __pyx_L1_error)
16993       __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_4), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 423, __pyx_L1_error)
16994       __Pyx_GOTREF(__pyx_t_2);
16995       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
16996       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16997     }
16998     __pyx_L5:;
16999 
17000     /* "View.MemoryView":418
17001  *         have_slices, index = _unellipsify(index, self.view.ndim)
17002  *
17003  *         if have_slices:             # <<<<<<<<<<<<<<
17004  *             obj = self.is_slice(value)
17005  *             if obj:
17006  */
17007     goto __pyx_L4;
17008   }
17009 
17010   /* "View.MemoryView":425
17011  *                 self.setitem_slice_assign_scalar(self[index], value)
17012  *         else:
17013  *             self.setitem_indexed(index, value)             # <<<<<<<<<<<<<<
17014  *
17015  *     cdef is_slice(self, obj):
17016  */
17017   /*else*/ {
17018     __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error)
17019     __Pyx_GOTREF(__pyx_t_2);
17020     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17021   }
17022   __pyx_L4:;
17023 
17024   /* "View.MemoryView":412
17025  *             return self.convert_item_to_object(itemp)
17026  *
17027  *     def __setitem__(memoryview self, object index, object value):             # <<<<<<<<<<<<<<
17028  *         if self.view.readonly:
17029  *             raise TypeError("Cannot assign to read-only memoryview")
17030  */
17031 
17032   /* function exit code */
17033   __pyx_r = 0;
17034   goto __pyx_L0;
17035   __pyx_L1_error:;
17036   __Pyx_XDECREF(__pyx_t_2);
17037   __Pyx_XDECREF(__pyx_t_3);
17038   __Pyx_XDECREF(__pyx_t_4);
17039   __Pyx_AddTraceback("View.MemoryView.memoryview.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
17040   __pyx_r = -1;
17041   __pyx_L0:;
17042   __Pyx_XDECREF(__pyx_v_have_slices);
17043   __Pyx_XDECREF(__pyx_v_obj);
17044   __Pyx_XDECREF(__pyx_v_index);
17045   __Pyx_RefNannyFinishContext();
17046   return __pyx_r;
17047 }
17048 
17049 /* "View.MemoryView":427
17050  *             self.setitem_indexed(index, value)
17051  *
17052  *     cdef is_slice(self, obj):             # <<<<<<<<<<<<<<
17053  *         if not isinstance(obj, memoryview):
17054  *             try:
17055  */
17056 
__pyx_memoryview_is_slice(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_obj)17057 static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_obj) {
17058   PyObject *__pyx_r = NULL;
17059   __Pyx_RefNannyDeclarations
17060   int __pyx_t_1;
17061   int __pyx_t_2;
17062   PyObject *__pyx_t_3 = NULL;
17063   PyObject *__pyx_t_4 = NULL;
17064   PyObject *__pyx_t_5 = NULL;
17065   PyObject *__pyx_t_6 = NULL;
17066   PyObject *__pyx_t_7 = NULL;
17067   PyObject *__pyx_t_8 = NULL;
17068   int __pyx_t_9;
17069   __Pyx_RefNannySetupContext("is_slice", 0);
17070   __Pyx_INCREF(__pyx_v_obj);
17071 
17072   /* "View.MemoryView":428
17073  *
17074  *     cdef is_slice(self, obj):
17075  *         if not isinstance(obj, memoryview):             # <<<<<<<<<<<<<<
17076  *             try:
17077  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17078  */
17079   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_memoryview_type);
17080   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
17081   if (__pyx_t_2) {
17082 
17083     /* "View.MemoryView":429
17084  *     cdef is_slice(self, obj):
17085  *         if not isinstance(obj, memoryview):
17086  *             try:             # <<<<<<<<<<<<<<
17087  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17088  *                                  self.dtype_is_object)
17089  */
17090     {
17091       __Pyx_PyThreadState_declare
17092       __Pyx_PyThreadState_assign
17093       __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
17094       __Pyx_XGOTREF(__pyx_t_3);
17095       __Pyx_XGOTREF(__pyx_t_4);
17096       __Pyx_XGOTREF(__pyx_t_5);
17097       /*try:*/ {
17098 
17099         /* "View.MemoryView":430
17100  *         if not isinstance(obj, memoryview):
17101  *             try:
17102  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,             # <<<<<<<<<<<<<<
17103  *                                  self.dtype_is_object)
17104  *             except TypeError:
17105  */
17106         __pyx_t_6 = __Pyx_PyInt_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 430, __pyx_L4_error)
17107         __Pyx_GOTREF(__pyx_t_6);
17108 
17109         /* "View.MemoryView":431
17110  *             try:
17111  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17112  *                                  self.dtype_is_object)             # <<<<<<<<<<<<<<
17113  *             except TypeError:
17114  *                 return None
17115  */
17116         __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 431, __pyx_L4_error)
17117         __Pyx_GOTREF(__pyx_t_7);
17118 
17119         /* "View.MemoryView":430
17120  *         if not isinstance(obj, memoryview):
17121  *             try:
17122  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,             # <<<<<<<<<<<<<<
17123  *                                  self.dtype_is_object)
17124  *             except TypeError:
17125  */
17126         __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 430, __pyx_L4_error)
17127         __Pyx_GOTREF(__pyx_t_8);
17128         __Pyx_INCREF(__pyx_v_obj);
17129         __Pyx_GIVEREF(__pyx_v_obj);
17130         PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_obj);
17131         __Pyx_GIVEREF(__pyx_t_6);
17132         PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
17133         __Pyx_GIVEREF(__pyx_t_7);
17134         PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7);
17135         __pyx_t_6 = 0;
17136         __pyx_t_7 = 0;
17137         __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 430, __pyx_L4_error)
17138         __Pyx_GOTREF(__pyx_t_7);
17139         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17140         __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_7);
17141         __pyx_t_7 = 0;
17142 
17143         /* "View.MemoryView":429
17144  *     cdef is_slice(self, obj):
17145  *         if not isinstance(obj, memoryview):
17146  *             try:             # <<<<<<<<<<<<<<
17147  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17148  *                                  self.dtype_is_object)
17149  */
17150       }
17151       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17152       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
17153       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17154       goto __pyx_L9_try_end;
17155       __pyx_L4_error:;
17156       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
17157       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17158       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
17159 
17160       /* "View.MemoryView":432
17161  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17162  *                                  self.dtype_is_object)
17163  *             except TypeError:             # <<<<<<<<<<<<<<
17164  *                 return None
17165  *
17166  */
17167       __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
17168       if (__pyx_t_9) {
17169         __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
17170         if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 432, __pyx_L6_except_error)
17171         __Pyx_GOTREF(__pyx_t_7);
17172         __Pyx_GOTREF(__pyx_t_8);
17173         __Pyx_GOTREF(__pyx_t_6);
17174 
17175         /* "View.MemoryView":433
17176  *                                  self.dtype_is_object)
17177  *             except TypeError:
17178  *                 return None             # <<<<<<<<<<<<<<
17179  *
17180  *         return obj
17181  */
17182         __Pyx_XDECREF(__pyx_r);
17183         __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17184         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17185         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17186         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17187         goto __pyx_L7_except_return;
17188       }
17189       goto __pyx_L6_except_error;
17190       __pyx_L6_except_error:;
17191 
17192       /* "View.MemoryView":429
17193  *     cdef is_slice(self, obj):
17194  *         if not isinstance(obj, memoryview):
17195  *             try:             # <<<<<<<<<<<<<<
17196  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17197  *                                  self.dtype_is_object)
17198  */
17199       __Pyx_XGIVEREF(__pyx_t_3);
17200       __Pyx_XGIVEREF(__pyx_t_4);
17201       __Pyx_XGIVEREF(__pyx_t_5);
17202       __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
17203       goto __pyx_L1_error;
17204       __pyx_L7_except_return:;
17205       __Pyx_XGIVEREF(__pyx_t_3);
17206       __Pyx_XGIVEREF(__pyx_t_4);
17207       __Pyx_XGIVEREF(__pyx_t_5);
17208       __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
17209       goto __pyx_L0;
17210       __pyx_L9_try_end:;
17211     }
17212 
17213     /* "View.MemoryView":428
17214  *
17215  *     cdef is_slice(self, obj):
17216  *         if not isinstance(obj, memoryview):             # <<<<<<<<<<<<<<
17217  *             try:
17218  *                 obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS,
17219  */
17220   }
17221 
17222   /* "View.MemoryView":435
17223  *                 return None
17224  *
17225  *         return obj             # <<<<<<<<<<<<<<
17226  *
17227  *     cdef setitem_slice_assignment(self, dst, src):
17228  */
17229   __Pyx_XDECREF(__pyx_r);
17230   __Pyx_INCREF(__pyx_v_obj);
17231   __pyx_r = __pyx_v_obj;
17232   goto __pyx_L0;
17233 
17234   /* "View.MemoryView":427
17235  *             self.setitem_indexed(index, value)
17236  *
17237  *     cdef is_slice(self, obj):             # <<<<<<<<<<<<<<
17238  *         if not isinstance(obj, memoryview):
17239  *             try:
17240  */
17241 
17242   /* function exit code */
17243   __pyx_L1_error:;
17244   __Pyx_XDECREF(__pyx_t_6);
17245   __Pyx_XDECREF(__pyx_t_7);
17246   __Pyx_XDECREF(__pyx_t_8);
17247   __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
17248   __pyx_r = 0;
17249   __pyx_L0:;
17250   __Pyx_XDECREF(__pyx_v_obj);
17251   __Pyx_XGIVEREF(__pyx_r);
17252   __Pyx_RefNannyFinishContext();
17253   return __pyx_r;
17254 }
17255 
17256 /* "View.MemoryView":437
17257  *         return obj
17258  *
17259  *     cdef setitem_slice_assignment(self, dst, src):             # <<<<<<<<<<<<<<
17260  *         cdef __Pyx_memviewslice dst_slice
17261  *         cdef __Pyx_memviewslice src_slice
17262  */
17263 
__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_dst,PyObject * __pyx_v_src)17264 static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_src) {
17265   __Pyx_memviewslice __pyx_v_dst_slice;
17266   __Pyx_memviewslice __pyx_v_src_slice;
17267   PyObject *__pyx_r = NULL;
17268   __Pyx_RefNannyDeclarations
17269   PyObject *__pyx_t_1 = NULL;
17270   int __pyx_t_2;
17271   int __pyx_t_3;
17272   int __pyx_t_4;
17273   __Pyx_RefNannySetupContext("setitem_slice_assignment", 0);
17274 
17275   /* "View.MemoryView":441
17276  *         cdef __Pyx_memviewslice src_slice
17277  *
17278  *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],             # <<<<<<<<<<<<<<
17279  *                                  get_slice_from_memview(dst, &dst_slice)[0],
17280  *                                  src.ndim, dst.ndim, self.dtype_is_object)
17281  */
17282   if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_memoryview_type))))) __PYX_ERR(1, 441, __pyx_L1_error)
17283 
17284   /* "View.MemoryView":442
17285  *
17286  *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],
17287  *                                  get_slice_from_memview(dst, &dst_slice)[0],             # <<<<<<<<<<<<<<
17288  *                                  src.ndim, dst.ndim, self.dtype_is_object)
17289  *
17290  */
17291   if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_memoryview_type))))) __PYX_ERR(1, 442, __pyx_L1_error)
17292 
17293   /* "View.MemoryView":443
17294  *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],
17295  *                                  get_slice_from_memview(dst, &dst_slice)[0],
17296  *                                  src.ndim, dst.ndim, self.dtype_is_object)             # <<<<<<<<<<<<<<
17297  *
17298  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):
17299  */
17300   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 443, __pyx_L1_error)
17301   __Pyx_GOTREF(__pyx_t_1);
17302   __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 443, __pyx_L1_error)
17303   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17304   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 443, __pyx_L1_error)
17305   __Pyx_GOTREF(__pyx_t_1);
17306   __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 443, __pyx_L1_error)
17307   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17308 
17309   /* "View.MemoryView":441
17310  *         cdef __Pyx_memviewslice src_slice
17311  *
17312  *         memoryview_copy_contents(get_slice_from_memview(src, &src_slice)[0],             # <<<<<<<<<<<<<<
17313  *                                  get_slice_from_memview(dst, &dst_slice)[0],
17314  *                                  src.ndim, dst.ndim, self.dtype_is_object)
17315  */
17316   __pyx_t_4 = __pyx_memoryview_copy_contents((__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice))[0]), (__pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice))[0]), __pyx_t_2, __pyx_t_3, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 441, __pyx_L1_error)
17317 
17318   /* "View.MemoryView":437
17319  *         return obj
17320  *
17321  *     cdef setitem_slice_assignment(self, dst, src):             # <<<<<<<<<<<<<<
17322  *         cdef __Pyx_memviewslice dst_slice
17323  *         cdef __Pyx_memviewslice src_slice
17324  */
17325 
17326   /* function exit code */
17327   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17328   goto __pyx_L0;
17329   __pyx_L1_error:;
17330   __Pyx_XDECREF(__pyx_t_1);
17331   __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
17332   __pyx_r = 0;
17333   __pyx_L0:;
17334   __Pyx_XGIVEREF(__pyx_r);
17335   __Pyx_RefNannyFinishContext();
17336   return __pyx_r;
17337 }
17338 
17339 /* "View.MemoryView":445
17340  *                                  src.ndim, dst.ndim, self.dtype_is_object)
17341  *
17342  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):             # <<<<<<<<<<<<<<
17343  *         cdef int array[128]
17344  *         cdef void *tmp = NULL
17345  */
17346 
__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj * __pyx_v_self,struct __pyx_memoryview_obj * __pyx_v_dst,PyObject * __pyx_v_value)17347 static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) {
17348   int __pyx_v_array[0x80];
17349   void *__pyx_v_tmp;
17350   void *__pyx_v_item;
17351   __Pyx_memviewslice *__pyx_v_dst_slice;
17352   __Pyx_memviewslice __pyx_v_tmp_slice;
17353   PyObject *__pyx_r = NULL;
17354   __Pyx_RefNannyDeclarations
17355   int __pyx_t_1;
17356   PyObject *__pyx_t_2 = NULL;
17357   int __pyx_t_3;
17358   int __pyx_t_4;
17359   char const *__pyx_t_5;
17360   PyObject *__pyx_t_6 = NULL;
17361   PyObject *__pyx_t_7 = NULL;
17362   PyObject *__pyx_t_8 = NULL;
17363   PyObject *__pyx_t_9 = NULL;
17364   PyObject *__pyx_t_10 = NULL;
17365   PyObject *__pyx_t_11 = NULL;
17366   __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0);
17367 
17368   /* "View.MemoryView":447
17369  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):
17370  *         cdef int array[128]
17371  *         cdef void *tmp = NULL             # <<<<<<<<<<<<<<
17372  *         cdef void *item
17373  *
17374  */
17375   __pyx_v_tmp = NULL;
17376 
17377   /* "View.MemoryView":452
17378  *         cdef __Pyx_memviewslice *dst_slice
17379  *         cdef __Pyx_memviewslice tmp_slice
17380  *         dst_slice = get_slice_from_memview(dst, &tmp_slice)             # <<<<<<<<<<<<<<
17381  *
17382  *         if <size_t>self.view.itemsize > sizeof(array):
17383  */
17384   __pyx_v_dst_slice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice));
17385 
17386   /* "View.MemoryView":454
17387  *         dst_slice = get_slice_from_memview(dst, &tmp_slice)
17388  *
17389  *         if <size_t>self.view.itemsize > sizeof(array):             # <<<<<<<<<<<<<<
17390  *             tmp = PyMem_Malloc(self.view.itemsize)
17391  *             if tmp == NULL:
17392  */
17393   __pyx_t_1 = ((((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))) != 0);
17394   if (__pyx_t_1) {
17395 
17396     /* "View.MemoryView":455
17397  *
17398  *         if <size_t>self.view.itemsize > sizeof(array):
17399  *             tmp = PyMem_Malloc(self.view.itemsize)             # <<<<<<<<<<<<<<
17400  *             if tmp == NULL:
17401  *                 raise MemoryError
17402  */
17403     __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize);
17404 
17405     /* "View.MemoryView":456
17406  *         if <size_t>self.view.itemsize > sizeof(array):
17407  *             tmp = PyMem_Malloc(self.view.itemsize)
17408  *             if tmp == NULL:             # <<<<<<<<<<<<<<
17409  *                 raise MemoryError
17410  *             item = tmp
17411  */
17412     __pyx_t_1 = ((__pyx_v_tmp == NULL) != 0);
17413     if (unlikely(__pyx_t_1)) {
17414 
17415       /* "View.MemoryView":457
17416  *             tmp = PyMem_Malloc(self.view.itemsize)
17417  *             if tmp == NULL:
17418  *                 raise MemoryError             # <<<<<<<<<<<<<<
17419  *             item = tmp
17420  *         else:
17421  */
17422       PyErr_NoMemory(); __PYX_ERR(1, 457, __pyx_L1_error)
17423 
17424       /* "View.MemoryView":456
17425  *         if <size_t>self.view.itemsize > sizeof(array):
17426  *             tmp = PyMem_Malloc(self.view.itemsize)
17427  *             if tmp == NULL:             # <<<<<<<<<<<<<<
17428  *                 raise MemoryError
17429  *             item = tmp
17430  */
17431     }
17432 
17433     /* "View.MemoryView":458
17434  *             if tmp == NULL:
17435  *                 raise MemoryError
17436  *             item = tmp             # <<<<<<<<<<<<<<
17437  *         else:
17438  *             item = <void *> array
17439  */
17440     __pyx_v_item = __pyx_v_tmp;
17441 
17442     /* "View.MemoryView":454
17443  *         dst_slice = get_slice_from_memview(dst, &tmp_slice)
17444  *
17445  *         if <size_t>self.view.itemsize > sizeof(array):             # <<<<<<<<<<<<<<
17446  *             tmp = PyMem_Malloc(self.view.itemsize)
17447  *             if tmp == NULL:
17448  */
17449     goto __pyx_L3;
17450   }
17451 
17452   /* "View.MemoryView":460
17453  *             item = tmp
17454  *         else:
17455  *             item = <void *> array             # <<<<<<<<<<<<<<
17456  *
17457  *         try:
17458  */
17459   /*else*/ {
17460     __pyx_v_item = ((void *)__pyx_v_array);
17461   }
17462   __pyx_L3:;
17463 
17464   /* "View.MemoryView":462
17465  *             item = <void *> array
17466  *
17467  *         try:             # <<<<<<<<<<<<<<
17468  *             if self.dtype_is_object:
17469  *                 (<PyObject **> item)[0] = <PyObject *> value
17470  */
17471   /*try:*/ {
17472 
17473     /* "View.MemoryView":463
17474  *
17475  *         try:
17476  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
17477  *                 (<PyObject **> item)[0] = <PyObject *> value
17478  *             else:
17479  */
17480     __pyx_t_1 = (__pyx_v_self->dtype_is_object != 0);
17481     if (__pyx_t_1) {
17482 
17483       /* "View.MemoryView":464
17484  *         try:
17485  *             if self.dtype_is_object:
17486  *                 (<PyObject **> item)[0] = <PyObject *> value             # <<<<<<<<<<<<<<
17487  *             else:
17488  *                 self.assign_item_from_object(<char *> item, value)
17489  */
17490       (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value);
17491 
17492       /* "View.MemoryView":463
17493  *
17494  *         try:
17495  *             if self.dtype_is_object:             # <<<<<<<<<<<<<<
17496  *                 (<PyObject **> item)[0] = <PyObject *> value
17497  *             else:
17498  */
17499       goto __pyx_L8;
17500     }
17501 
17502     /* "View.MemoryView":466
17503  *                 (<PyObject **> item)[0] = <PyObject *> value
17504  *             else:
17505  *                 self.assign_item_from_object(<char *> item, value)             # <<<<<<<<<<<<<<
17506  *
17507  *
17508  */
17509     /*else*/ {
17510       __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 466, __pyx_L6_error)
17511       __Pyx_GOTREF(__pyx_t_2);
17512       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17513     }
17514     __pyx_L8:;
17515 
17516     /* "View.MemoryView":470
17517  *
17518  *
17519  *             if self.view.suboffsets != NULL:             # <<<<<<<<<<<<<<
17520  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
17521  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
17522  */
17523     __pyx_t_1 = ((__pyx_v_self->view.suboffsets != NULL) != 0);
17524     if (__pyx_t_1) {
17525 
17526       /* "View.MemoryView":471
17527  *
17528  *             if self.view.suboffsets != NULL:
17529  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)             # <<<<<<<<<<<<<<
17530  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
17531  *                                 item, self.dtype_is_object)
17532  */
17533       __pyx_t_2 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 471, __pyx_L6_error)
17534       __Pyx_GOTREF(__pyx_t_2);
17535       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17536 
17537       /* "View.MemoryView":470
17538  *
17539  *
17540  *             if self.view.suboffsets != NULL:             # <<<<<<<<<<<<<<
17541  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
17542  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,
17543  */
17544     }
17545 
17546     /* "View.MemoryView":472
17547  *             if self.view.suboffsets != NULL:
17548  *                 assert_direct_dimensions(self.view.suboffsets, self.view.ndim)
17549  *             slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize,             # <<<<<<<<<<<<<<
17550  *                                 item, self.dtype_is_object)
17551  *         finally:
17552  */
17553     __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object);
17554   }
17555 
17556   /* "View.MemoryView":475
17557  *                                 item, self.dtype_is_object)
17558  *         finally:
17559  *             PyMem_Free(tmp)             # <<<<<<<<<<<<<<
17560  *
17561  *     cdef setitem_indexed(self, index, value):
17562  */
17563   /*finally:*/ {
17564     /*normal exit:*/{
17565       PyMem_Free(__pyx_v_tmp);
17566       goto __pyx_L7;
17567     }
17568     __pyx_L6_error:;
17569     /*exception exit:*/{
17570       __Pyx_PyThreadState_declare
17571       __Pyx_PyThreadState_assign
17572       __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
17573       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
17574       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
17575       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
17576       __Pyx_XGOTREF(__pyx_t_6);
17577       __Pyx_XGOTREF(__pyx_t_7);
17578       __Pyx_XGOTREF(__pyx_t_8);
17579       __Pyx_XGOTREF(__pyx_t_9);
17580       __Pyx_XGOTREF(__pyx_t_10);
17581       __Pyx_XGOTREF(__pyx_t_11);
17582       __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
17583       {
17584         PyMem_Free(__pyx_v_tmp);
17585       }
17586       if (PY_MAJOR_VERSION >= 3) {
17587         __Pyx_XGIVEREF(__pyx_t_9);
17588         __Pyx_XGIVEREF(__pyx_t_10);
17589         __Pyx_XGIVEREF(__pyx_t_11);
17590         __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
17591       }
17592       __Pyx_XGIVEREF(__pyx_t_6);
17593       __Pyx_XGIVEREF(__pyx_t_7);
17594       __Pyx_XGIVEREF(__pyx_t_8);
17595       __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
17596       __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
17597       __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
17598       goto __pyx_L1_error;
17599     }
17600     __pyx_L7:;
17601   }
17602 
17603   /* "View.MemoryView":445
17604  *                                  src.ndim, dst.ndim, self.dtype_is_object)
17605  *
17606  *     cdef setitem_slice_assign_scalar(self, memoryview dst, value):             # <<<<<<<<<<<<<<
17607  *         cdef int array[128]
17608  *         cdef void *tmp = NULL
17609  */
17610 
17611   /* function exit code */
17612   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17613   goto __pyx_L0;
17614   __pyx_L1_error:;
17615   __Pyx_XDECREF(__pyx_t_2);
17616   __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_slice_assign_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
17617   __pyx_r = 0;
17618   __pyx_L0:;
17619   __Pyx_XGIVEREF(__pyx_r);
17620   __Pyx_RefNannyFinishContext();
17621   return __pyx_r;
17622 }
17623 
17624 /* "View.MemoryView":477
17625  *             PyMem_Free(tmp)
17626  *
17627  *     cdef setitem_indexed(self, index, value):             # <<<<<<<<<<<<<<
17628  *         cdef char *itemp = self.get_item_pointer(index)
17629  *         self.assign_item_from_object(itemp, value)
17630  */
17631 
__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj * __pyx_v_self,PyObject * __pyx_v_index,PyObject * __pyx_v_value)17632 static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
17633   char *__pyx_v_itemp;
17634   PyObject *__pyx_r = NULL;
17635   __Pyx_RefNannyDeclarations
17636   char *__pyx_t_1;
17637   PyObject *__pyx_t_2 = NULL;
17638   __Pyx_RefNannySetupContext("setitem_indexed", 0);
17639 
17640   /* "View.MemoryView":478
17641  *
17642  *     cdef setitem_indexed(self, index, value):
17643  *         cdef char *itemp = self.get_item_pointer(index)             # <<<<<<<<<<<<<<
17644  *         self.assign_item_from_object(itemp, value)
17645  *
17646  */
17647   __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)NULL))) __PYX_ERR(1, 478, __pyx_L1_error)
17648   __pyx_v_itemp = __pyx_t_1;
17649 
17650   /* "View.MemoryView":479
17651  *     cdef setitem_indexed(self, index, value):
17652  *         cdef char *itemp = self.get_item_pointer(index)
17653  *         self.assign_item_from_object(itemp, value)             # <<<<<<<<<<<<<<
17654  *
17655  *     cdef convert_item_to_object(self, char *itemp):
17656  */
17657   __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 479, __pyx_L1_error)
17658   __Pyx_GOTREF(__pyx_t_2);
17659   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17660 
17661   /* "View.MemoryView":477
17662  *             PyMem_Free(tmp)
17663  *
17664  *     cdef setitem_indexed(self, index, value):             # <<<<<<<<<<<<<<
17665  *         cdef char *itemp = self.get_item_pointer(index)
17666  *         self.assign_item_from_object(itemp, value)
17667  */
17668 
17669   /* function exit code */
17670   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
17671   goto __pyx_L0;
17672   __pyx_L1_error:;
17673   __Pyx_XDECREF(__pyx_t_2);
17674   __Pyx_AddTraceback("View.MemoryView.memoryview.setitem_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
17675   __pyx_r = 0;
17676   __pyx_L0:;
17677   __Pyx_XGIVEREF(__pyx_r);
17678   __Pyx_RefNannyFinishContext();
17679   return __pyx_r;
17680 }
17681 
17682 /* "View.MemoryView":481
17683  *         self.assign_item_from_object(itemp, value)
17684  *
17685  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
17686  *         """Only used if instantiated manually by the user, or if Cython doesn't
17687  *         know how to convert the type"""
17688  */
17689 
__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj * __pyx_v_self,char * __pyx_v_itemp)17690 static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp) {
17691   PyObject *__pyx_v_struct = NULL;
17692   PyObject *__pyx_v_bytesitem = 0;
17693   PyObject *__pyx_v_result = NULL;
17694   PyObject *__pyx_r = NULL;
17695   __Pyx_RefNannyDeclarations
17696   PyObject *__pyx_t_1 = NULL;
17697   PyObject *__pyx_t_2 = NULL;
17698   PyObject *__pyx_t_3 = NULL;
17699   PyObject *__pyx_t_4 = NULL;
17700   PyObject *__pyx_t_5 = NULL;
17701   PyObject *__pyx_t_6 = NULL;
17702   PyObject *__pyx_t_7 = NULL;
17703   int __pyx_t_8;
17704   PyObject *__pyx_t_9 = NULL;
17705   size_t __pyx_t_10;
17706   int __pyx_t_11;
17707   __Pyx_RefNannySetupContext("convert_item_to_object", 0);
17708 
17709   /* "View.MemoryView":484
17710  *         """Only used if instantiated manually by the user, or if Cython doesn't
17711  *         know how to convert the type"""
17712  *         import struct             # <<<<<<<<<<<<<<
17713  *         cdef bytes bytesitem
17714  *
17715  */
17716   __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 484, __pyx_L1_error)
17717   __Pyx_GOTREF(__pyx_t_1);
17718   __pyx_v_struct = __pyx_t_1;
17719   __pyx_t_1 = 0;
17720 
17721   /* "View.MemoryView":487
17722  *         cdef bytes bytesitem
17723  *
17724  *         bytesitem = itemp[:self.view.itemsize]             # <<<<<<<<<<<<<<
17725  *         try:
17726  *             result = struct.unpack(self.view.format, bytesitem)
17727  */
17728   __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 487, __pyx_L1_error)
17729   __Pyx_GOTREF(__pyx_t_1);
17730   __pyx_v_bytesitem = ((PyObject*)__pyx_t_1);
17731   __pyx_t_1 = 0;
17732 
17733   /* "View.MemoryView":488
17734  *
17735  *         bytesitem = itemp[:self.view.itemsize]
17736  *         try:             # <<<<<<<<<<<<<<
17737  *             result = struct.unpack(self.view.format, bytesitem)
17738  *         except struct.error:
17739  */
17740   {
17741     __Pyx_PyThreadState_declare
17742     __Pyx_PyThreadState_assign
17743     __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
17744     __Pyx_XGOTREF(__pyx_t_2);
17745     __Pyx_XGOTREF(__pyx_t_3);
17746     __Pyx_XGOTREF(__pyx_t_4);
17747     /*try:*/ {
17748 
17749       /* "View.MemoryView":489
17750  *         bytesitem = itemp[:self.view.itemsize]
17751  *         try:
17752  *             result = struct.unpack(self.view.format, bytesitem)             # <<<<<<<<<<<<<<
17753  *         except struct.error:
17754  *             raise ValueError("Unable to convert item to object")
17755  */
17756       __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_unpack); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 489, __pyx_L3_error)
17757       __Pyx_GOTREF(__pyx_t_5);
17758       __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 489, __pyx_L3_error)
17759       __Pyx_GOTREF(__pyx_t_6);
17760       __pyx_t_7 = NULL;
17761       __pyx_t_8 = 0;
17762       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
17763         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
17764         if (likely(__pyx_t_7)) {
17765           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
17766           __Pyx_INCREF(__pyx_t_7);
17767           __Pyx_INCREF(function);
17768           __Pyx_DECREF_SET(__pyx_t_5, function);
17769           __pyx_t_8 = 1;
17770         }
17771       }
17772       #if CYTHON_FAST_PYCALL
17773       if (PyFunction_Check(__pyx_t_5)) {
17774         PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem};
17775         __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 489, __pyx_L3_error)
17776         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17777         __Pyx_GOTREF(__pyx_t_1);
17778         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17779       } else
17780       #endif
17781       #if CYTHON_FAST_PYCCALL
17782       if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
17783         PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_v_bytesitem};
17784         __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 489, __pyx_L3_error)
17785         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17786         __Pyx_GOTREF(__pyx_t_1);
17787         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17788       } else
17789       #endif
17790       {
17791         __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 489, __pyx_L3_error)
17792         __Pyx_GOTREF(__pyx_t_9);
17793         if (__pyx_t_7) {
17794           __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
17795         }
17796         __Pyx_GIVEREF(__pyx_t_6);
17797         PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6);
17798         __Pyx_INCREF(__pyx_v_bytesitem);
17799         __Pyx_GIVEREF(__pyx_v_bytesitem);
17800         PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_bytesitem);
17801         __pyx_t_6 = 0;
17802         __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 489, __pyx_L3_error)
17803         __Pyx_GOTREF(__pyx_t_1);
17804         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
17805       }
17806       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17807       __pyx_v_result = __pyx_t_1;
17808       __pyx_t_1 = 0;
17809 
17810       /* "View.MemoryView":488
17811  *
17812  *         bytesitem = itemp[:self.view.itemsize]
17813  *         try:             # <<<<<<<<<<<<<<
17814  *             result = struct.unpack(self.view.format, bytesitem)
17815  *         except struct.error:
17816  */
17817     }
17818 
17819     /* "View.MemoryView":493
17820  *             raise ValueError("Unable to convert item to object")
17821  *         else:
17822  *             if len(self.view.format) == 1:             # <<<<<<<<<<<<<<
17823  *                 return result[0]
17824  *             return result
17825  */
17826     /*else:*/ {
17827       __pyx_t_10 = strlen(__pyx_v_self->view.format);
17828       __pyx_t_11 = ((__pyx_t_10 == 1) != 0);
17829       if (__pyx_t_11) {
17830 
17831         /* "View.MemoryView":494
17832  *         else:
17833  *             if len(self.view.format) == 1:
17834  *                 return result[0]             # <<<<<<<<<<<<<<
17835  *             return result
17836  *
17837  */
17838         __Pyx_XDECREF(__pyx_r);
17839         __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 494, __pyx_L5_except_error)
17840         __Pyx_GOTREF(__pyx_t_1);
17841         __pyx_r = __pyx_t_1;
17842         __pyx_t_1 = 0;
17843         goto __pyx_L6_except_return;
17844 
17845         /* "View.MemoryView":493
17846  *             raise ValueError("Unable to convert item to object")
17847  *         else:
17848  *             if len(self.view.format) == 1:             # <<<<<<<<<<<<<<
17849  *                 return result[0]
17850  *             return result
17851  */
17852       }
17853 
17854       /* "View.MemoryView":495
17855  *             if len(self.view.format) == 1:
17856  *                 return result[0]
17857  *             return result             # <<<<<<<<<<<<<<
17858  *
17859  *     cdef assign_item_from_object(self, char *itemp, object value):
17860  */
17861       __Pyx_XDECREF(__pyx_r);
17862       __Pyx_INCREF(__pyx_v_result);
17863       __pyx_r = __pyx_v_result;
17864       goto __pyx_L6_except_return;
17865     }
17866     __pyx_L3_error:;
17867     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
17868     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
17869     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
17870     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
17871     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
17872 
17873     /* "View.MemoryView":490
17874  *         try:
17875  *             result = struct.unpack(self.view.format, bytesitem)
17876  *         except struct.error:             # <<<<<<<<<<<<<<
17877  *             raise ValueError("Unable to convert item to object")
17878  *         else:
17879  */
17880     __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_5, &__pyx_t_9);
17881     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
17882     __Pyx_GOTREF(__pyx_t_6);
17883     __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_6);
17884     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17885     __Pyx_ErrRestore(__pyx_t_1, __pyx_t_5, __pyx_t_9);
17886     __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0;
17887     if (__pyx_t_8) {
17888       __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
17889       if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 490, __pyx_L5_except_error)
17890       __Pyx_GOTREF(__pyx_t_9);
17891       __Pyx_GOTREF(__pyx_t_5);
17892       __Pyx_GOTREF(__pyx_t_1);
17893 
17894       /* "View.MemoryView":491
17895  *             result = struct.unpack(self.view.format, bytesitem)
17896  *         except struct.error:
17897  *             raise ValueError("Unable to convert item to object")             # <<<<<<<<<<<<<<
17898  *         else:
17899  *             if len(self.view.format) == 1:
17900  */
17901       __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 491, __pyx_L5_except_error)
17902       __Pyx_GOTREF(__pyx_t_6);
17903       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
17904       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17905       __PYX_ERR(1, 491, __pyx_L5_except_error)
17906     }
17907     goto __pyx_L5_except_error;
17908     __pyx_L5_except_error:;
17909 
17910     /* "View.MemoryView":488
17911  *
17912  *         bytesitem = itemp[:self.view.itemsize]
17913  *         try:             # <<<<<<<<<<<<<<
17914  *             result = struct.unpack(self.view.format, bytesitem)
17915  *         except struct.error:
17916  */
17917     __Pyx_XGIVEREF(__pyx_t_2);
17918     __Pyx_XGIVEREF(__pyx_t_3);
17919     __Pyx_XGIVEREF(__pyx_t_4);
17920     __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
17921     goto __pyx_L1_error;
17922     __pyx_L6_except_return:;
17923     __Pyx_XGIVEREF(__pyx_t_2);
17924     __Pyx_XGIVEREF(__pyx_t_3);
17925     __Pyx_XGIVEREF(__pyx_t_4);
17926     __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
17927     goto __pyx_L0;
17928   }
17929 
17930   /* "View.MemoryView":481
17931  *         self.assign_item_from_object(itemp, value)
17932  *
17933  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
17934  *         """Only used if instantiated manually by the user, or if Cython doesn't
17935  *         know how to convert the type"""
17936  */
17937 
17938   /* function exit code */
17939   __pyx_L1_error:;
17940   __Pyx_XDECREF(__pyx_t_1);
17941   __Pyx_XDECREF(__pyx_t_5);
17942   __Pyx_XDECREF(__pyx_t_6);
17943   __Pyx_XDECREF(__pyx_t_7);
17944   __Pyx_XDECREF(__pyx_t_9);
17945   __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
17946   __pyx_r = 0;
17947   __pyx_L0:;
17948   __Pyx_XDECREF(__pyx_v_struct);
17949   __Pyx_XDECREF(__pyx_v_bytesitem);
17950   __Pyx_XDECREF(__pyx_v_result);
17951   __Pyx_XGIVEREF(__pyx_r);
17952   __Pyx_RefNannyFinishContext();
17953   return __pyx_r;
17954 }
17955 
17956 /* "View.MemoryView":497
17957  *             return result
17958  *
17959  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
17960  *         """Only used if instantiated manually by the user, or if Cython doesn't
17961  *         know how to convert the type"""
17962  */
17963 
__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj * __pyx_v_self,char * __pyx_v_itemp,PyObject * __pyx_v_value)17964 static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryview_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) {
17965   PyObject *__pyx_v_struct = NULL;
17966   char __pyx_v_c;
17967   PyObject *__pyx_v_bytesvalue = 0;
17968   Py_ssize_t __pyx_v_i;
17969   PyObject *__pyx_r = NULL;
17970   __Pyx_RefNannyDeclarations
17971   PyObject *__pyx_t_1 = NULL;
17972   int __pyx_t_2;
17973   int __pyx_t_3;
17974   PyObject *__pyx_t_4 = NULL;
17975   PyObject *__pyx_t_5 = NULL;
17976   PyObject *__pyx_t_6 = NULL;
17977   int __pyx_t_7;
17978   PyObject *__pyx_t_8 = NULL;
17979   Py_ssize_t __pyx_t_9;
17980   PyObject *__pyx_t_10 = NULL;
17981   char *__pyx_t_11;
17982   char *__pyx_t_12;
17983   char *__pyx_t_13;
17984   char *__pyx_t_14;
17985   __Pyx_RefNannySetupContext("assign_item_from_object", 0);
17986 
17987   /* "View.MemoryView":500
17988  *         """Only used if instantiated manually by the user, or if Cython doesn't
17989  *         know how to convert the type"""
17990  *         import struct             # <<<<<<<<<<<<<<
17991  *         cdef char c
17992  *         cdef bytes bytesvalue
17993  */
17994   __pyx_t_1 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 500, __pyx_L1_error)
17995   __Pyx_GOTREF(__pyx_t_1);
17996   __pyx_v_struct = __pyx_t_1;
17997   __pyx_t_1 = 0;
17998 
17999   /* "View.MemoryView":505
18000  *         cdef Py_ssize_t i
18001  *
18002  *         if isinstance(value, tuple):             # <<<<<<<<<<<<<<
18003  *             bytesvalue = struct.pack(self.view.format, *value)
18004  *         else:
18005  */
18006   __pyx_t_2 = PyTuple_Check(__pyx_v_value);
18007   __pyx_t_3 = (__pyx_t_2 != 0);
18008   if (__pyx_t_3) {
18009 
18010     /* "View.MemoryView":506
18011  *
18012  *         if isinstance(value, tuple):
18013  *             bytesvalue = struct.pack(self.view.format, *value)             # <<<<<<<<<<<<<<
18014  *         else:
18015  *             bytesvalue = struct.pack(self.view.format, value)
18016  */
18017     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 506, __pyx_L1_error)
18018     __Pyx_GOTREF(__pyx_t_1);
18019     __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 506, __pyx_L1_error)
18020     __Pyx_GOTREF(__pyx_t_4);
18021     __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 506, __pyx_L1_error)
18022     __Pyx_GOTREF(__pyx_t_5);
18023     __Pyx_GIVEREF(__pyx_t_4);
18024     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
18025     __pyx_t_4 = 0;
18026     __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 506, __pyx_L1_error)
18027     __Pyx_GOTREF(__pyx_t_4);
18028     __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 506, __pyx_L1_error)
18029     __Pyx_GOTREF(__pyx_t_6);
18030     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18031     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18032     __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 506, __pyx_L1_error)
18033     __Pyx_GOTREF(__pyx_t_4);
18034     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18035     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18036     if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 506, __pyx_L1_error)
18037     __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4);
18038     __pyx_t_4 = 0;
18039 
18040     /* "View.MemoryView":505
18041  *         cdef Py_ssize_t i
18042  *
18043  *         if isinstance(value, tuple):             # <<<<<<<<<<<<<<
18044  *             bytesvalue = struct.pack(self.view.format, *value)
18045  *         else:
18046  */
18047     goto __pyx_L3;
18048   }
18049 
18050   /* "View.MemoryView":508
18051  *             bytesvalue = struct.pack(self.view.format, *value)
18052  *         else:
18053  *             bytesvalue = struct.pack(self.view.format, value)             # <<<<<<<<<<<<<<
18054  *
18055  *         for i, c in enumerate(bytesvalue):
18056  */
18057   /*else*/ {
18058     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 508, __pyx_L1_error)
18059     __Pyx_GOTREF(__pyx_t_6);
18060     __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 508, __pyx_L1_error)
18061     __Pyx_GOTREF(__pyx_t_1);
18062     __pyx_t_5 = NULL;
18063     __pyx_t_7 = 0;
18064     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
18065       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
18066       if (likely(__pyx_t_5)) {
18067         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
18068         __Pyx_INCREF(__pyx_t_5);
18069         __Pyx_INCREF(function);
18070         __Pyx_DECREF_SET(__pyx_t_6, function);
18071         __pyx_t_7 = 1;
18072       }
18073     }
18074     #if CYTHON_FAST_PYCALL
18075     if (PyFunction_Check(__pyx_t_6)) {
18076       PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value};
18077       __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 508, __pyx_L1_error)
18078       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18079       __Pyx_GOTREF(__pyx_t_4);
18080       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18081     } else
18082     #endif
18083     #if CYTHON_FAST_PYCCALL
18084     if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
18085       PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value};
18086       __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 508, __pyx_L1_error)
18087       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18088       __Pyx_GOTREF(__pyx_t_4);
18089       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18090     } else
18091     #endif
18092     {
18093       __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 508, __pyx_L1_error)
18094       __Pyx_GOTREF(__pyx_t_8);
18095       if (__pyx_t_5) {
18096         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
18097       }
18098       __Pyx_GIVEREF(__pyx_t_1);
18099       PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_1);
18100       __Pyx_INCREF(__pyx_v_value);
18101       __Pyx_GIVEREF(__pyx_v_value);
18102       PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_value);
18103       __pyx_t_1 = 0;
18104       __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 508, __pyx_L1_error)
18105       __Pyx_GOTREF(__pyx_t_4);
18106       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18107     }
18108     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18109     if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(1, 508, __pyx_L1_error)
18110     __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4);
18111     __pyx_t_4 = 0;
18112   }
18113   __pyx_L3:;
18114 
18115   /* "View.MemoryView":510
18116  *             bytesvalue = struct.pack(self.view.format, value)
18117  *
18118  *         for i, c in enumerate(bytesvalue):             # <<<<<<<<<<<<<<
18119  *             itemp[i] = c
18120  *
18121  */
18122   __pyx_t_9 = 0;
18123   if (unlikely(__pyx_v_bytesvalue == Py_None)) {
18124     PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable");
18125     __PYX_ERR(1, 510, __pyx_L1_error)
18126   }
18127   __Pyx_INCREF(__pyx_v_bytesvalue);
18128   __pyx_t_10 = __pyx_v_bytesvalue;
18129   __pyx_t_12 = PyBytes_AS_STRING(__pyx_t_10);
18130   __pyx_t_13 = (__pyx_t_12 + PyBytes_GET_SIZE(__pyx_t_10));
18131   for (__pyx_t_14 = __pyx_t_12; __pyx_t_14 < __pyx_t_13; __pyx_t_14++) {
18132     __pyx_t_11 = __pyx_t_14;
18133     __pyx_v_c = (__pyx_t_11[0]);
18134 
18135     /* "View.MemoryView":511
18136  *
18137  *         for i, c in enumerate(bytesvalue):
18138  *             itemp[i] = c             # <<<<<<<<<<<<<<
18139  *
18140  *     @cname('getbuffer')
18141  */
18142     __pyx_v_i = __pyx_t_9;
18143 
18144     /* "View.MemoryView":510
18145  *             bytesvalue = struct.pack(self.view.format, value)
18146  *
18147  *         for i, c in enumerate(bytesvalue):             # <<<<<<<<<<<<<<
18148  *             itemp[i] = c
18149  *
18150  */
18151     __pyx_t_9 = (__pyx_t_9 + 1);
18152 
18153     /* "View.MemoryView":511
18154  *
18155  *         for i, c in enumerate(bytesvalue):
18156  *             itemp[i] = c             # <<<<<<<<<<<<<<
18157  *
18158  *     @cname('getbuffer')
18159  */
18160     (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c;
18161   }
18162   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
18163 
18164   /* "View.MemoryView":497
18165  *             return result
18166  *
18167  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
18168  *         """Only used if instantiated manually by the user, or if Cython doesn't
18169  *         know how to convert the type"""
18170  */
18171 
18172   /* function exit code */
18173   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
18174   goto __pyx_L0;
18175   __pyx_L1_error:;
18176   __Pyx_XDECREF(__pyx_t_1);
18177   __Pyx_XDECREF(__pyx_t_4);
18178   __Pyx_XDECREF(__pyx_t_5);
18179   __Pyx_XDECREF(__pyx_t_6);
18180   __Pyx_XDECREF(__pyx_t_8);
18181   __Pyx_XDECREF(__pyx_t_10);
18182   __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
18183   __pyx_r = 0;
18184   __pyx_L0:;
18185   __Pyx_XDECREF(__pyx_v_struct);
18186   __Pyx_XDECREF(__pyx_v_bytesvalue);
18187   __Pyx_XGIVEREF(__pyx_r);
18188   __Pyx_RefNannyFinishContext();
18189   return __pyx_r;
18190 }
18191 
18192 /* "View.MemoryView":514
18193  *
18194  *     @cname('getbuffer')
18195  *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
18196  *         if flags & PyBUF_WRITABLE and self.view.readonly:
18197  *             raise ValueError("Cannot create writable memory view from read-only memoryview")
18198  */
18199 
18200 /* Python wrapper */
18201 static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
__pyx_memoryview_getbuffer(PyObject * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)18202 static CYTHON_UNUSED int __pyx_memoryview_getbuffer(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
18203   int __pyx_r;
18204   __Pyx_RefNannyDeclarations
18205   __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
18206   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
18207 
18208   /* function exit code */
18209   __Pyx_RefNannyFinishContext();
18210   return __pyx_r;
18211 }
18212 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)18213 static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbuffer__(struct __pyx_memoryview_obj *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
18214   int __pyx_r;
18215   __Pyx_RefNannyDeclarations
18216   int __pyx_t_1;
18217   int __pyx_t_2;
18218   PyObject *__pyx_t_3 = NULL;
18219   Py_ssize_t *__pyx_t_4;
18220   char *__pyx_t_5;
18221   void *__pyx_t_6;
18222   int __pyx_t_7;
18223   Py_ssize_t __pyx_t_8;
18224   if (__pyx_v_info == NULL) {
18225     PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
18226     return -1;
18227   }
18228   __Pyx_RefNannySetupContext("__getbuffer__", 0);
18229   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
18230   __Pyx_GIVEREF(__pyx_v_info->obj);
18231 
18232   /* "View.MemoryView":515
18233  *     @cname('getbuffer')
18234  *     def __getbuffer__(self, Py_buffer *info, int flags):
18235  *         if flags & PyBUF_WRITABLE and self.view.readonly:             # <<<<<<<<<<<<<<
18236  *             raise ValueError("Cannot create writable memory view from read-only memoryview")
18237  *
18238  */
18239   __pyx_t_2 = ((__pyx_v_flags & PyBUF_WRITABLE) != 0);
18240   if (__pyx_t_2) {
18241   } else {
18242     __pyx_t_1 = __pyx_t_2;
18243     goto __pyx_L4_bool_binop_done;
18244   }
18245   __pyx_t_2 = (__pyx_v_self->view.readonly != 0);
18246   __pyx_t_1 = __pyx_t_2;
18247   __pyx_L4_bool_binop_done:;
18248   if (unlikely(__pyx_t_1)) {
18249 
18250     /* "View.MemoryView":516
18251  *     def __getbuffer__(self, Py_buffer *info, int flags):
18252  *         if flags & PyBUF_WRITABLE and self.view.readonly:
18253  *             raise ValueError("Cannot create writable memory view from read-only memoryview")             # <<<<<<<<<<<<<<
18254  *
18255  *         if flags & PyBUF_ND:
18256  */
18257     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error)
18258     __Pyx_GOTREF(__pyx_t_3);
18259     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
18260     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18261     __PYX_ERR(1, 516, __pyx_L1_error)
18262 
18263     /* "View.MemoryView":515
18264  *     @cname('getbuffer')
18265  *     def __getbuffer__(self, Py_buffer *info, int flags):
18266  *         if flags & PyBUF_WRITABLE and self.view.readonly:             # <<<<<<<<<<<<<<
18267  *             raise ValueError("Cannot create writable memory view from read-only memoryview")
18268  *
18269  */
18270   }
18271 
18272   /* "View.MemoryView":518
18273  *             raise ValueError("Cannot create writable memory view from read-only memoryview")
18274  *
18275  *         if flags & PyBUF_ND:             # <<<<<<<<<<<<<<
18276  *             info.shape = self.view.shape
18277  *         else:
18278  */
18279   __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0);
18280   if (__pyx_t_1) {
18281 
18282     /* "View.MemoryView":519
18283  *
18284  *         if flags & PyBUF_ND:
18285  *             info.shape = self.view.shape             # <<<<<<<<<<<<<<
18286  *         else:
18287  *             info.shape = NULL
18288  */
18289     __pyx_t_4 = __pyx_v_self->view.shape;
18290     __pyx_v_info->shape = __pyx_t_4;
18291 
18292     /* "View.MemoryView":518
18293  *             raise ValueError("Cannot create writable memory view from read-only memoryview")
18294  *
18295  *         if flags & PyBUF_ND:             # <<<<<<<<<<<<<<
18296  *             info.shape = self.view.shape
18297  *         else:
18298  */
18299     goto __pyx_L6;
18300   }
18301 
18302   /* "View.MemoryView":521
18303  *             info.shape = self.view.shape
18304  *         else:
18305  *             info.shape = NULL             # <<<<<<<<<<<<<<
18306  *
18307  *         if flags & PyBUF_STRIDES:
18308  */
18309   /*else*/ {
18310     __pyx_v_info->shape = NULL;
18311   }
18312   __pyx_L6:;
18313 
18314   /* "View.MemoryView":523
18315  *             info.shape = NULL
18316  *
18317  *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
18318  *             info.strides = self.view.strides
18319  *         else:
18320  */
18321   __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0);
18322   if (__pyx_t_1) {
18323 
18324     /* "View.MemoryView":524
18325  *
18326  *         if flags & PyBUF_STRIDES:
18327  *             info.strides = self.view.strides             # <<<<<<<<<<<<<<
18328  *         else:
18329  *             info.strides = NULL
18330  */
18331     __pyx_t_4 = __pyx_v_self->view.strides;
18332     __pyx_v_info->strides = __pyx_t_4;
18333 
18334     /* "View.MemoryView":523
18335  *             info.shape = NULL
18336  *
18337  *         if flags & PyBUF_STRIDES:             # <<<<<<<<<<<<<<
18338  *             info.strides = self.view.strides
18339  *         else:
18340  */
18341     goto __pyx_L7;
18342   }
18343 
18344   /* "View.MemoryView":526
18345  *             info.strides = self.view.strides
18346  *         else:
18347  *             info.strides = NULL             # <<<<<<<<<<<<<<
18348  *
18349  *         if flags & PyBUF_INDIRECT:
18350  */
18351   /*else*/ {
18352     __pyx_v_info->strides = NULL;
18353   }
18354   __pyx_L7:;
18355 
18356   /* "View.MemoryView":528
18357  *             info.strides = NULL
18358  *
18359  *         if flags & PyBUF_INDIRECT:             # <<<<<<<<<<<<<<
18360  *             info.suboffsets = self.view.suboffsets
18361  *         else:
18362  */
18363   __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0);
18364   if (__pyx_t_1) {
18365 
18366     /* "View.MemoryView":529
18367  *
18368  *         if flags & PyBUF_INDIRECT:
18369  *             info.suboffsets = self.view.suboffsets             # <<<<<<<<<<<<<<
18370  *         else:
18371  *             info.suboffsets = NULL
18372  */
18373     __pyx_t_4 = __pyx_v_self->view.suboffsets;
18374     __pyx_v_info->suboffsets = __pyx_t_4;
18375 
18376     /* "View.MemoryView":528
18377  *             info.strides = NULL
18378  *
18379  *         if flags & PyBUF_INDIRECT:             # <<<<<<<<<<<<<<
18380  *             info.suboffsets = self.view.suboffsets
18381  *         else:
18382  */
18383     goto __pyx_L8;
18384   }
18385 
18386   /* "View.MemoryView":531
18387  *             info.suboffsets = self.view.suboffsets
18388  *         else:
18389  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
18390  *
18391  *         if flags & PyBUF_FORMAT:
18392  */
18393   /*else*/ {
18394     __pyx_v_info->suboffsets = NULL;
18395   }
18396   __pyx_L8:;
18397 
18398   /* "View.MemoryView":533
18399  *             info.suboffsets = NULL
18400  *
18401  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
18402  *             info.format = self.view.format
18403  *         else:
18404  */
18405   __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0);
18406   if (__pyx_t_1) {
18407 
18408     /* "View.MemoryView":534
18409  *
18410  *         if flags & PyBUF_FORMAT:
18411  *             info.format = self.view.format             # <<<<<<<<<<<<<<
18412  *         else:
18413  *             info.format = NULL
18414  */
18415     __pyx_t_5 = __pyx_v_self->view.format;
18416     __pyx_v_info->format = __pyx_t_5;
18417 
18418     /* "View.MemoryView":533
18419  *             info.suboffsets = NULL
18420  *
18421  *         if flags & PyBUF_FORMAT:             # <<<<<<<<<<<<<<
18422  *             info.format = self.view.format
18423  *         else:
18424  */
18425     goto __pyx_L9;
18426   }
18427 
18428   /* "View.MemoryView":536
18429  *             info.format = self.view.format
18430  *         else:
18431  *             info.format = NULL             # <<<<<<<<<<<<<<
18432  *
18433  *         info.buf = self.view.buf
18434  */
18435   /*else*/ {
18436     __pyx_v_info->format = NULL;
18437   }
18438   __pyx_L9:;
18439 
18440   /* "View.MemoryView":538
18441  *             info.format = NULL
18442  *
18443  *         info.buf = self.view.buf             # <<<<<<<<<<<<<<
18444  *         info.ndim = self.view.ndim
18445  *         info.itemsize = self.view.itemsize
18446  */
18447   __pyx_t_6 = __pyx_v_self->view.buf;
18448   __pyx_v_info->buf = __pyx_t_6;
18449 
18450   /* "View.MemoryView":539
18451  *
18452  *         info.buf = self.view.buf
18453  *         info.ndim = self.view.ndim             # <<<<<<<<<<<<<<
18454  *         info.itemsize = self.view.itemsize
18455  *         info.len = self.view.len
18456  */
18457   __pyx_t_7 = __pyx_v_self->view.ndim;
18458   __pyx_v_info->ndim = __pyx_t_7;
18459 
18460   /* "View.MemoryView":540
18461  *         info.buf = self.view.buf
18462  *         info.ndim = self.view.ndim
18463  *         info.itemsize = self.view.itemsize             # <<<<<<<<<<<<<<
18464  *         info.len = self.view.len
18465  *         info.readonly = self.view.readonly
18466  */
18467   __pyx_t_8 = __pyx_v_self->view.itemsize;
18468   __pyx_v_info->itemsize = __pyx_t_8;
18469 
18470   /* "View.MemoryView":541
18471  *         info.ndim = self.view.ndim
18472  *         info.itemsize = self.view.itemsize
18473  *         info.len = self.view.len             # <<<<<<<<<<<<<<
18474  *         info.readonly = self.view.readonly
18475  *         info.obj = self
18476  */
18477   __pyx_t_8 = __pyx_v_self->view.len;
18478   __pyx_v_info->len = __pyx_t_8;
18479 
18480   /* "View.MemoryView":542
18481  *         info.itemsize = self.view.itemsize
18482  *         info.len = self.view.len
18483  *         info.readonly = self.view.readonly             # <<<<<<<<<<<<<<
18484  *         info.obj = self
18485  *
18486  */
18487   __pyx_t_1 = __pyx_v_self->view.readonly;
18488   __pyx_v_info->readonly = __pyx_t_1;
18489 
18490   /* "View.MemoryView":543
18491  *         info.len = self.view.len
18492  *         info.readonly = self.view.readonly
18493  *         info.obj = self             # <<<<<<<<<<<<<<
18494  *
18495  *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")
18496  */
18497   __Pyx_INCREF(((PyObject *)__pyx_v_self));
18498   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
18499   __Pyx_GOTREF(__pyx_v_info->obj);
18500   __Pyx_DECREF(__pyx_v_info->obj);
18501   __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
18502 
18503   /* "View.MemoryView":514
18504  *
18505  *     @cname('getbuffer')
18506  *     def __getbuffer__(self, Py_buffer *info, int flags):             # <<<<<<<<<<<<<<
18507  *         if flags & PyBUF_WRITABLE and self.view.readonly:
18508  *             raise ValueError("Cannot create writable memory view from read-only memoryview")
18509  */
18510 
18511   /* function exit code */
18512   __pyx_r = 0;
18513   goto __pyx_L0;
18514   __pyx_L1_error:;
18515   __Pyx_XDECREF(__pyx_t_3);
18516   __Pyx_AddTraceback("View.MemoryView.memoryview.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18517   __pyx_r = -1;
18518   if (__pyx_v_info->obj != NULL) {
18519     __Pyx_GOTREF(__pyx_v_info->obj);
18520     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
18521   }
18522   goto __pyx_L2;
18523   __pyx_L0:;
18524   if (__pyx_v_info->obj == Py_None) {
18525     __Pyx_GOTREF(__pyx_v_info->obj);
18526     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
18527   }
18528   __pyx_L2:;
18529   __Pyx_RefNannyFinishContext();
18530   return __pyx_r;
18531 }
18532 
18533 /* "View.MemoryView":549
18534  *
18535  *     @property
18536  *     def T(self):             # <<<<<<<<<<<<<<
18537  *         cdef _memoryviewslice result = memoryview_copy(self)
18538  *         transpose_memslice(&result.from_slice)
18539  */
18540 
18541 /* Python wrapper */
18542 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject * __pyx_v_self)18543 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(PyObject *__pyx_v_self) {
18544   PyObject *__pyx_r = 0;
18545   __Pyx_RefNannyDeclarations
18546   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
18547   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
18548 
18549   /* function exit code */
18550   __Pyx_RefNannyFinishContext();
18551   return __pyx_r;
18552 }
18553 
__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj * __pyx_v_self)18554 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
18555   struct __pyx_memoryviewslice_obj *__pyx_v_result = 0;
18556   PyObject *__pyx_r = NULL;
18557   __Pyx_RefNannyDeclarations
18558   PyObject *__pyx_t_1 = NULL;
18559   int __pyx_t_2;
18560   __Pyx_RefNannySetupContext("__get__", 0);
18561 
18562   /* "View.MemoryView":550
18563  *     @property
18564  *     def T(self):
18565  *         cdef _memoryviewslice result = memoryview_copy(self)             # <<<<<<<<<<<<<<
18566  *         transpose_memslice(&result.from_slice)
18567  *         return result
18568  */
18569   __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 550, __pyx_L1_error)
18570   __Pyx_GOTREF(__pyx_t_1);
18571   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_memoryviewslice_type))))) __PYX_ERR(1, 550, __pyx_L1_error)
18572   __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1);
18573   __pyx_t_1 = 0;
18574 
18575   /* "View.MemoryView":551
18576  *     def T(self):
18577  *         cdef _memoryviewslice result = memoryview_copy(self)
18578  *         transpose_memslice(&result.from_slice)             # <<<<<<<<<<<<<<
18579  *         return result
18580  *
18581  */
18582   __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 551, __pyx_L1_error)
18583 
18584   /* "View.MemoryView":552
18585  *         cdef _memoryviewslice result = memoryview_copy(self)
18586  *         transpose_memslice(&result.from_slice)
18587  *         return result             # <<<<<<<<<<<<<<
18588  *
18589  *     @property
18590  */
18591   __Pyx_XDECREF(__pyx_r);
18592   __Pyx_INCREF(((PyObject *)__pyx_v_result));
18593   __pyx_r = ((PyObject *)__pyx_v_result);
18594   goto __pyx_L0;
18595 
18596   /* "View.MemoryView":549
18597  *
18598  *     @property
18599  *     def T(self):             # <<<<<<<<<<<<<<
18600  *         cdef _memoryviewslice result = memoryview_copy(self)
18601  *         transpose_memslice(&result.from_slice)
18602  */
18603 
18604   /* function exit code */
18605   __pyx_L1_error:;
18606   __Pyx_XDECREF(__pyx_t_1);
18607   __Pyx_AddTraceback("View.MemoryView.memoryview.T.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18608   __pyx_r = NULL;
18609   __pyx_L0:;
18610   __Pyx_XDECREF((PyObject *)__pyx_v_result);
18611   __Pyx_XGIVEREF(__pyx_r);
18612   __Pyx_RefNannyFinishContext();
18613   return __pyx_r;
18614 }
18615 
18616 /* "View.MemoryView":555
18617  *
18618  *     @property
18619  *     def base(self):             # <<<<<<<<<<<<<<
18620  *         return self.obj
18621  *
18622  */
18623 
18624 /* Python wrapper */
18625 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject * __pyx_v_self)18626 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(PyObject *__pyx_v_self) {
18627   PyObject *__pyx_r = 0;
18628   __Pyx_RefNannyDeclarations
18629   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
18630   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
18631 
18632   /* function exit code */
18633   __Pyx_RefNannyFinishContext();
18634   return __pyx_r;
18635 }
18636 
__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj * __pyx_v_self)18637 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
18638   PyObject *__pyx_r = NULL;
18639   __Pyx_RefNannyDeclarations
18640   __Pyx_RefNannySetupContext("__get__", 0);
18641 
18642   /* "View.MemoryView":556
18643  *     @property
18644  *     def base(self):
18645  *         return self.obj             # <<<<<<<<<<<<<<
18646  *
18647  *     @property
18648  */
18649   __Pyx_XDECREF(__pyx_r);
18650   __Pyx_INCREF(__pyx_v_self->obj);
18651   __pyx_r = __pyx_v_self->obj;
18652   goto __pyx_L0;
18653 
18654   /* "View.MemoryView":555
18655  *
18656  *     @property
18657  *     def base(self):             # <<<<<<<<<<<<<<
18658  *         return self.obj
18659  *
18660  */
18661 
18662   /* function exit code */
18663   __pyx_L0:;
18664   __Pyx_XGIVEREF(__pyx_r);
18665   __Pyx_RefNannyFinishContext();
18666   return __pyx_r;
18667 }
18668 
18669 /* "View.MemoryView":559
18670  *
18671  *     @property
18672  *     def shape(self):             # <<<<<<<<<<<<<<
18673  *         return tuple([length for length in self.view.shape[:self.view.ndim]])
18674  *
18675  */
18676 
18677 /* Python wrapper */
18678 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject * __pyx_v_self)18679 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(PyObject *__pyx_v_self) {
18680   PyObject *__pyx_r = 0;
18681   __Pyx_RefNannyDeclarations
18682   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
18683   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
18684 
18685   /* function exit code */
18686   __Pyx_RefNannyFinishContext();
18687   return __pyx_r;
18688 }
18689 
__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj * __pyx_v_self)18690 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
18691   Py_ssize_t __pyx_v_length;
18692   PyObject *__pyx_r = NULL;
18693   __Pyx_RefNannyDeclarations
18694   PyObject *__pyx_t_1 = NULL;
18695   Py_ssize_t *__pyx_t_2;
18696   Py_ssize_t *__pyx_t_3;
18697   Py_ssize_t *__pyx_t_4;
18698   PyObject *__pyx_t_5 = NULL;
18699   __Pyx_RefNannySetupContext("__get__", 0);
18700 
18701   /* "View.MemoryView":560
18702  *     @property
18703  *     def shape(self):
18704  *         return tuple([length for length in self.view.shape[:self.view.ndim]])             # <<<<<<<<<<<<<<
18705  *
18706  *     @property
18707  */
18708   __Pyx_XDECREF(__pyx_r);
18709   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 560, __pyx_L1_error)
18710   __Pyx_GOTREF(__pyx_t_1);
18711   __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim);
18712   for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) {
18713     __pyx_t_2 = __pyx_t_4;
18714     __pyx_v_length = (__pyx_t_2[0]);
18715     __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 560, __pyx_L1_error)
18716     __Pyx_GOTREF(__pyx_t_5);
18717     if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 560, __pyx_L1_error)
18718     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18719   }
18720   __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 560, __pyx_L1_error)
18721   __Pyx_GOTREF(__pyx_t_5);
18722   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18723   __pyx_r = __pyx_t_5;
18724   __pyx_t_5 = 0;
18725   goto __pyx_L0;
18726 
18727   /* "View.MemoryView":559
18728  *
18729  *     @property
18730  *     def shape(self):             # <<<<<<<<<<<<<<
18731  *         return tuple([length for length in self.view.shape[:self.view.ndim]])
18732  *
18733  */
18734 
18735   /* function exit code */
18736   __pyx_L1_error:;
18737   __Pyx_XDECREF(__pyx_t_1);
18738   __Pyx_XDECREF(__pyx_t_5);
18739   __Pyx_AddTraceback("View.MemoryView.memoryview.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18740   __pyx_r = NULL;
18741   __pyx_L0:;
18742   __Pyx_XGIVEREF(__pyx_r);
18743   __Pyx_RefNannyFinishContext();
18744   return __pyx_r;
18745 }
18746 
18747 /* "View.MemoryView":563
18748  *
18749  *     @property
18750  *     def strides(self):             # <<<<<<<<<<<<<<
18751  *         if self.view.strides == NULL:
18752  *
18753  */
18754 
18755 /* Python wrapper */
18756 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject * __pyx_v_self)18757 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(PyObject *__pyx_v_self) {
18758   PyObject *__pyx_r = 0;
18759   __Pyx_RefNannyDeclarations
18760   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
18761   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
18762 
18763   /* function exit code */
18764   __Pyx_RefNannyFinishContext();
18765   return __pyx_r;
18766 }
18767 
__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj * __pyx_v_self)18768 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
18769   Py_ssize_t __pyx_v_stride;
18770   PyObject *__pyx_r = NULL;
18771   __Pyx_RefNannyDeclarations
18772   int __pyx_t_1;
18773   PyObject *__pyx_t_2 = NULL;
18774   Py_ssize_t *__pyx_t_3;
18775   Py_ssize_t *__pyx_t_4;
18776   Py_ssize_t *__pyx_t_5;
18777   PyObject *__pyx_t_6 = NULL;
18778   __Pyx_RefNannySetupContext("__get__", 0);
18779 
18780   /* "View.MemoryView":564
18781  *     @property
18782  *     def strides(self):
18783  *         if self.view.strides == NULL:             # <<<<<<<<<<<<<<
18784  *
18785  *             raise ValueError("Buffer view does not expose strides")
18786  */
18787   __pyx_t_1 = ((__pyx_v_self->view.strides == NULL) != 0);
18788   if (unlikely(__pyx_t_1)) {
18789 
18790     /* "View.MemoryView":566
18791  *         if self.view.strides == NULL:
18792  *
18793  *             raise ValueError("Buffer view does not expose strides")             # <<<<<<<<<<<<<<
18794  *
18795  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
18796  */
18797     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 566, __pyx_L1_error)
18798     __Pyx_GOTREF(__pyx_t_2);
18799     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
18800     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18801     __PYX_ERR(1, 566, __pyx_L1_error)
18802 
18803     /* "View.MemoryView":564
18804  *     @property
18805  *     def strides(self):
18806  *         if self.view.strides == NULL:             # <<<<<<<<<<<<<<
18807  *
18808  *             raise ValueError("Buffer view does not expose strides")
18809  */
18810   }
18811 
18812   /* "View.MemoryView":568
18813  *             raise ValueError("Buffer view does not expose strides")
18814  *
18815  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])             # <<<<<<<<<<<<<<
18816  *
18817  *     @property
18818  */
18819   __Pyx_XDECREF(__pyx_r);
18820   __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 568, __pyx_L1_error)
18821   __Pyx_GOTREF(__pyx_t_2);
18822   __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim);
18823   for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) {
18824     __pyx_t_3 = __pyx_t_5;
18825     __pyx_v_stride = (__pyx_t_3[0]);
18826     __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 568, __pyx_L1_error)
18827     __Pyx_GOTREF(__pyx_t_6);
18828     if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 568, __pyx_L1_error)
18829     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18830   }
18831   __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 568, __pyx_L1_error)
18832   __Pyx_GOTREF(__pyx_t_6);
18833   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18834   __pyx_r = __pyx_t_6;
18835   __pyx_t_6 = 0;
18836   goto __pyx_L0;
18837 
18838   /* "View.MemoryView":563
18839  *
18840  *     @property
18841  *     def strides(self):             # <<<<<<<<<<<<<<
18842  *         if self.view.strides == NULL:
18843  *
18844  */
18845 
18846   /* function exit code */
18847   __pyx_L1_error:;
18848   __Pyx_XDECREF(__pyx_t_2);
18849   __Pyx_XDECREF(__pyx_t_6);
18850   __Pyx_AddTraceback("View.MemoryView.memoryview.strides.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18851   __pyx_r = NULL;
18852   __pyx_L0:;
18853   __Pyx_XGIVEREF(__pyx_r);
18854   __Pyx_RefNannyFinishContext();
18855   return __pyx_r;
18856 }
18857 
18858 /* "View.MemoryView":571
18859  *
18860  *     @property
18861  *     def suboffsets(self):             # <<<<<<<<<<<<<<
18862  *         if self.view.suboffsets == NULL:
18863  *             return (-1,) * self.view.ndim
18864  */
18865 
18866 /* Python wrapper */
18867 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject * __pyx_v_self)18868 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(PyObject *__pyx_v_self) {
18869   PyObject *__pyx_r = 0;
18870   __Pyx_RefNannyDeclarations
18871   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
18872   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
18873 
18874   /* function exit code */
18875   __Pyx_RefNannyFinishContext();
18876   return __pyx_r;
18877 }
18878 
__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj * __pyx_v_self)18879 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
18880   Py_ssize_t __pyx_v_suboffset;
18881   PyObject *__pyx_r = NULL;
18882   __Pyx_RefNannyDeclarations
18883   int __pyx_t_1;
18884   PyObject *__pyx_t_2 = NULL;
18885   PyObject *__pyx_t_3 = NULL;
18886   Py_ssize_t *__pyx_t_4;
18887   Py_ssize_t *__pyx_t_5;
18888   Py_ssize_t *__pyx_t_6;
18889   __Pyx_RefNannySetupContext("__get__", 0);
18890 
18891   /* "View.MemoryView":572
18892  *     @property
18893  *     def suboffsets(self):
18894  *         if self.view.suboffsets == NULL:             # <<<<<<<<<<<<<<
18895  *             return (-1,) * self.view.ndim
18896  *
18897  */
18898   __pyx_t_1 = ((__pyx_v_self->view.suboffsets == NULL) != 0);
18899   if (__pyx_t_1) {
18900 
18901     /* "View.MemoryView":573
18902  *     def suboffsets(self):
18903  *         if self.view.suboffsets == NULL:
18904  *             return (-1,) * self.view.ndim             # <<<<<<<<<<<<<<
18905  *
18906  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
18907  */
18908     __Pyx_XDECREF(__pyx_r);
18909     __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 573, __pyx_L1_error)
18910     __Pyx_GOTREF(__pyx_t_2);
18911     __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__26, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 573, __pyx_L1_error)
18912     __Pyx_GOTREF(__pyx_t_3);
18913     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18914     __pyx_r = __pyx_t_3;
18915     __pyx_t_3 = 0;
18916     goto __pyx_L0;
18917 
18918     /* "View.MemoryView":572
18919  *     @property
18920  *     def suboffsets(self):
18921  *         if self.view.suboffsets == NULL:             # <<<<<<<<<<<<<<
18922  *             return (-1,) * self.view.ndim
18923  *
18924  */
18925   }
18926 
18927   /* "View.MemoryView":575
18928  *             return (-1,) * self.view.ndim
18929  *
18930  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])             # <<<<<<<<<<<<<<
18931  *
18932  *     @property
18933  */
18934   __Pyx_XDECREF(__pyx_r);
18935   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 575, __pyx_L1_error)
18936   __Pyx_GOTREF(__pyx_t_3);
18937   __pyx_t_5 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim);
18938   for (__pyx_t_6 = __pyx_v_self->view.suboffsets; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) {
18939     __pyx_t_4 = __pyx_t_6;
18940     __pyx_v_suboffset = (__pyx_t_4[0]);
18941     __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_suboffset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 575, __pyx_L1_error)
18942     __Pyx_GOTREF(__pyx_t_2);
18943     if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 575, __pyx_L1_error)
18944     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18945   }
18946   __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 575, __pyx_L1_error)
18947   __Pyx_GOTREF(__pyx_t_2);
18948   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18949   __pyx_r = __pyx_t_2;
18950   __pyx_t_2 = 0;
18951   goto __pyx_L0;
18952 
18953   /* "View.MemoryView":571
18954  *
18955  *     @property
18956  *     def suboffsets(self):             # <<<<<<<<<<<<<<
18957  *         if self.view.suboffsets == NULL:
18958  *             return (-1,) * self.view.ndim
18959  */
18960 
18961   /* function exit code */
18962   __pyx_L1_error:;
18963   __Pyx_XDECREF(__pyx_t_2);
18964   __Pyx_XDECREF(__pyx_t_3);
18965   __Pyx_AddTraceback("View.MemoryView.memoryview.suboffsets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18966   __pyx_r = NULL;
18967   __pyx_L0:;
18968   __Pyx_XGIVEREF(__pyx_r);
18969   __Pyx_RefNannyFinishContext();
18970   return __pyx_r;
18971 }
18972 
18973 /* "View.MemoryView":578
18974  *
18975  *     @property
18976  *     def ndim(self):             # <<<<<<<<<<<<<<
18977  *         return self.view.ndim
18978  *
18979  */
18980 
18981 /* Python wrapper */
18982 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject * __pyx_v_self)18983 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(PyObject *__pyx_v_self) {
18984   PyObject *__pyx_r = 0;
18985   __Pyx_RefNannyDeclarations
18986   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
18987   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
18988 
18989   /* function exit code */
18990   __Pyx_RefNannyFinishContext();
18991   return __pyx_r;
18992 }
18993 
__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj * __pyx_v_self)18994 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
18995   PyObject *__pyx_r = NULL;
18996   __Pyx_RefNannyDeclarations
18997   PyObject *__pyx_t_1 = NULL;
18998   __Pyx_RefNannySetupContext("__get__", 0);
18999 
19000   /* "View.MemoryView":579
19001  *     @property
19002  *     def ndim(self):
19003  *         return self.view.ndim             # <<<<<<<<<<<<<<
19004  *
19005  *     @property
19006  */
19007   __Pyx_XDECREF(__pyx_r);
19008   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 579, __pyx_L1_error)
19009   __Pyx_GOTREF(__pyx_t_1);
19010   __pyx_r = __pyx_t_1;
19011   __pyx_t_1 = 0;
19012   goto __pyx_L0;
19013 
19014   /* "View.MemoryView":578
19015  *
19016  *     @property
19017  *     def ndim(self):             # <<<<<<<<<<<<<<
19018  *         return self.view.ndim
19019  *
19020  */
19021 
19022   /* function exit code */
19023   __pyx_L1_error:;
19024   __Pyx_XDECREF(__pyx_t_1);
19025   __Pyx_AddTraceback("View.MemoryView.memoryview.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19026   __pyx_r = NULL;
19027   __pyx_L0:;
19028   __Pyx_XGIVEREF(__pyx_r);
19029   __Pyx_RefNannyFinishContext();
19030   return __pyx_r;
19031 }
19032 
19033 /* "View.MemoryView":582
19034  *
19035  *     @property
19036  *     def itemsize(self):             # <<<<<<<<<<<<<<
19037  *         return self.view.itemsize
19038  *
19039  */
19040 
19041 /* Python wrapper */
19042 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject * __pyx_v_self)19043 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(PyObject *__pyx_v_self) {
19044   PyObject *__pyx_r = 0;
19045   __Pyx_RefNannyDeclarations
19046   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
19047   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19048 
19049   /* function exit code */
19050   __Pyx_RefNannyFinishContext();
19051   return __pyx_r;
19052 }
19053 
__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj * __pyx_v_self)19054 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
19055   PyObject *__pyx_r = NULL;
19056   __Pyx_RefNannyDeclarations
19057   PyObject *__pyx_t_1 = NULL;
19058   __Pyx_RefNannySetupContext("__get__", 0);
19059 
19060   /* "View.MemoryView":583
19061  *     @property
19062  *     def itemsize(self):
19063  *         return self.view.itemsize             # <<<<<<<<<<<<<<
19064  *
19065  *     @property
19066  */
19067   __Pyx_XDECREF(__pyx_r);
19068   __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 583, __pyx_L1_error)
19069   __Pyx_GOTREF(__pyx_t_1);
19070   __pyx_r = __pyx_t_1;
19071   __pyx_t_1 = 0;
19072   goto __pyx_L0;
19073 
19074   /* "View.MemoryView":582
19075  *
19076  *     @property
19077  *     def itemsize(self):             # <<<<<<<<<<<<<<
19078  *         return self.view.itemsize
19079  *
19080  */
19081 
19082   /* function exit code */
19083   __pyx_L1_error:;
19084   __Pyx_XDECREF(__pyx_t_1);
19085   __Pyx_AddTraceback("View.MemoryView.memoryview.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19086   __pyx_r = NULL;
19087   __pyx_L0:;
19088   __Pyx_XGIVEREF(__pyx_r);
19089   __Pyx_RefNannyFinishContext();
19090   return __pyx_r;
19091 }
19092 
19093 /* "View.MemoryView":586
19094  *
19095  *     @property
19096  *     def nbytes(self):             # <<<<<<<<<<<<<<
19097  *         return self.size * self.view.itemsize
19098  *
19099  */
19100 
19101 /* Python wrapper */
19102 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject * __pyx_v_self)19103 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(PyObject *__pyx_v_self) {
19104   PyObject *__pyx_r = 0;
19105   __Pyx_RefNannyDeclarations
19106   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
19107   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19108 
19109   /* function exit code */
19110   __Pyx_RefNannyFinishContext();
19111   return __pyx_r;
19112 }
19113 
__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj * __pyx_v_self)19114 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
19115   PyObject *__pyx_r = NULL;
19116   __Pyx_RefNannyDeclarations
19117   PyObject *__pyx_t_1 = NULL;
19118   PyObject *__pyx_t_2 = NULL;
19119   PyObject *__pyx_t_3 = NULL;
19120   __Pyx_RefNannySetupContext("__get__", 0);
19121 
19122   /* "View.MemoryView":587
19123  *     @property
19124  *     def nbytes(self):
19125  *         return self.size * self.view.itemsize             # <<<<<<<<<<<<<<
19126  *
19127  *     @property
19128  */
19129   __Pyx_XDECREF(__pyx_r);
19130   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 587, __pyx_L1_error)
19131   __Pyx_GOTREF(__pyx_t_1);
19132   __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 587, __pyx_L1_error)
19133   __Pyx_GOTREF(__pyx_t_2);
19134   __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 587, __pyx_L1_error)
19135   __Pyx_GOTREF(__pyx_t_3);
19136   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19137   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19138   __pyx_r = __pyx_t_3;
19139   __pyx_t_3 = 0;
19140   goto __pyx_L0;
19141 
19142   /* "View.MemoryView":586
19143  *
19144  *     @property
19145  *     def nbytes(self):             # <<<<<<<<<<<<<<
19146  *         return self.size * self.view.itemsize
19147  *
19148  */
19149 
19150   /* function exit code */
19151   __pyx_L1_error:;
19152   __Pyx_XDECREF(__pyx_t_1);
19153   __Pyx_XDECREF(__pyx_t_2);
19154   __Pyx_XDECREF(__pyx_t_3);
19155   __Pyx_AddTraceback("View.MemoryView.memoryview.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19156   __pyx_r = NULL;
19157   __pyx_L0:;
19158   __Pyx_XGIVEREF(__pyx_r);
19159   __Pyx_RefNannyFinishContext();
19160   return __pyx_r;
19161 }
19162 
19163 /* "View.MemoryView":590
19164  *
19165  *     @property
19166  *     def size(self):             # <<<<<<<<<<<<<<
19167  *         if self._size is None:
19168  *             result = 1
19169  */
19170 
19171 /* Python wrapper */
19172 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject * __pyx_v_self)19173 static PyObject *__pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(PyObject *__pyx_v_self) {
19174   PyObject *__pyx_r = 0;
19175   __Pyx_RefNannyDeclarations
19176   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
19177   __pyx_r = __pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19178 
19179   /* function exit code */
19180   __Pyx_RefNannyFinishContext();
19181   return __pyx_r;
19182 }
19183 
__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj * __pyx_v_self)19184 static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struct __pyx_memoryview_obj *__pyx_v_self) {
19185   PyObject *__pyx_v_result = NULL;
19186   PyObject *__pyx_v_length = NULL;
19187   PyObject *__pyx_r = NULL;
19188   __Pyx_RefNannyDeclarations
19189   int __pyx_t_1;
19190   int __pyx_t_2;
19191   Py_ssize_t *__pyx_t_3;
19192   Py_ssize_t *__pyx_t_4;
19193   Py_ssize_t *__pyx_t_5;
19194   PyObject *__pyx_t_6 = NULL;
19195   __Pyx_RefNannySetupContext("__get__", 0);
19196 
19197   /* "View.MemoryView":591
19198  *     @property
19199  *     def size(self):
19200  *         if self._size is None:             # <<<<<<<<<<<<<<
19201  *             result = 1
19202  *
19203  */
19204   __pyx_t_1 = (__pyx_v_self->_size == Py_None);
19205   __pyx_t_2 = (__pyx_t_1 != 0);
19206   if (__pyx_t_2) {
19207 
19208     /* "View.MemoryView":592
19209  *     def size(self):
19210  *         if self._size is None:
19211  *             result = 1             # <<<<<<<<<<<<<<
19212  *
19213  *             for length in self.view.shape[:self.view.ndim]:
19214  */
19215     __Pyx_INCREF(__pyx_int_1);
19216     __pyx_v_result = __pyx_int_1;
19217 
19218     /* "View.MemoryView":594
19219  *             result = 1
19220  *
19221  *             for length in self.view.shape[:self.view.ndim]:             # <<<<<<<<<<<<<<
19222  *                 result *= length
19223  *
19224  */
19225     __pyx_t_4 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim);
19226     for (__pyx_t_5 = __pyx_v_self->view.shape; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) {
19227       __pyx_t_3 = __pyx_t_5;
19228       __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_3[0])); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 594, __pyx_L1_error)
19229       __Pyx_GOTREF(__pyx_t_6);
19230       __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_6);
19231       __pyx_t_6 = 0;
19232 
19233       /* "View.MemoryView":595
19234  *
19235  *             for length in self.view.shape[:self.view.ndim]:
19236  *                 result *= length             # <<<<<<<<<<<<<<
19237  *
19238  *             self._size = result
19239  */
19240       __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 595, __pyx_L1_error)
19241       __Pyx_GOTREF(__pyx_t_6);
19242       __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6);
19243       __pyx_t_6 = 0;
19244     }
19245 
19246     /* "View.MemoryView":597
19247  *                 result *= length
19248  *
19249  *             self._size = result             # <<<<<<<<<<<<<<
19250  *
19251  *         return self._size
19252  */
19253     __Pyx_INCREF(__pyx_v_result);
19254     __Pyx_GIVEREF(__pyx_v_result);
19255     __Pyx_GOTREF(__pyx_v_self->_size);
19256     __Pyx_DECREF(__pyx_v_self->_size);
19257     __pyx_v_self->_size = __pyx_v_result;
19258 
19259     /* "View.MemoryView":591
19260  *     @property
19261  *     def size(self):
19262  *         if self._size is None:             # <<<<<<<<<<<<<<
19263  *             result = 1
19264  *
19265  */
19266   }
19267 
19268   /* "View.MemoryView":599
19269  *             self._size = result
19270  *
19271  *         return self._size             # <<<<<<<<<<<<<<
19272  *
19273  *     def __len__(self):
19274  */
19275   __Pyx_XDECREF(__pyx_r);
19276   __Pyx_INCREF(__pyx_v_self->_size);
19277   __pyx_r = __pyx_v_self->_size;
19278   goto __pyx_L0;
19279 
19280   /* "View.MemoryView":590
19281  *
19282  *     @property
19283  *     def size(self):             # <<<<<<<<<<<<<<
19284  *         if self._size is None:
19285  *             result = 1
19286  */
19287 
19288   /* function exit code */
19289   __pyx_L1_error:;
19290   __Pyx_XDECREF(__pyx_t_6);
19291   __Pyx_AddTraceback("View.MemoryView.memoryview.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19292   __pyx_r = NULL;
19293   __pyx_L0:;
19294   __Pyx_XDECREF(__pyx_v_result);
19295   __Pyx_XDECREF(__pyx_v_length);
19296   __Pyx_XGIVEREF(__pyx_r);
19297   __Pyx_RefNannyFinishContext();
19298   return __pyx_r;
19299 }
19300 
19301 /* "View.MemoryView":601
19302  *         return self._size
19303  *
19304  *     def __len__(self):             # <<<<<<<<<<<<<<
19305  *         if self.view.ndim >= 1:
19306  *             return self.view.shape[0]
19307  */
19308 
19309 /* Python wrapper */
19310 static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self); /*proto*/
__pyx_memoryview___len__(PyObject * __pyx_v_self)19311 static Py_ssize_t __pyx_memoryview___len__(PyObject *__pyx_v_self) {
19312   Py_ssize_t __pyx_r;
19313   __Pyx_RefNannyDeclarations
19314   __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
19315   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19316 
19317   /* function exit code */
19318   __Pyx_RefNannyFinishContext();
19319   return __pyx_r;
19320 }
19321 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj * __pyx_v_self)19322 static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_10__len__(struct __pyx_memoryview_obj *__pyx_v_self) {
19323   Py_ssize_t __pyx_r;
19324   __Pyx_RefNannyDeclarations
19325   int __pyx_t_1;
19326   __Pyx_RefNannySetupContext("__len__", 0);
19327 
19328   /* "View.MemoryView":602
19329  *
19330  *     def __len__(self):
19331  *         if self.view.ndim >= 1:             # <<<<<<<<<<<<<<
19332  *             return self.view.shape[0]
19333  *
19334  */
19335   __pyx_t_1 = ((__pyx_v_self->view.ndim >= 1) != 0);
19336   if (__pyx_t_1) {
19337 
19338     /* "View.MemoryView":603
19339  *     def __len__(self):
19340  *         if self.view.ndim >= 1:
19341  *             return self.view.shape[0]             # <<<<<<<<<<<<<<
19342  *
19343  *         return 0
19344  */
19345     __pyx_r = (__pyx_v_self->view.shape[0]);
19346     goto __pyx_L0;
19347 
19348     /* "View.MemoryView":602
19349  *
19350  *     def __len__(self):
19351  *         if self.view.ndim >= 1:             # <<<<<<<<<<<<<<
19352  *             return self.view.shape[0]
19353  *
19354  */
19355   }
19356 
19357   /* "View.MemoryView":605
19358  *             return self.view.shape[0]
19359  *
19360  *         return 0             # <<<<<<<<<<<<<<
19361  *
19362  *     def __repr__(self):
19363  */
19364   __pyx_r = 0;
19365   goto __pyx_L0;
19366 
19367   /* "View.MemoryView":601
19368  *         return self._size
19369  *
19370  *     def __len__(self):             # <<<<<<<<<<<<<<
19371  *         if self.view.ndim >= 1:
19372  *             return self.view.shape[0]
19373  */
19374 
19375   /* function exit code */
19376   __pyx_L0:;
19377   __Pyx_RefNannyFinishContext();
19378   return __pyx_r;
19379 }
19380 
19381 /* "View.MemoryView":607
19382  *         return 0
19383  *
19384  *     def __repr__(self):             # <<<<<<<<<<<<<<
19385  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
19386  *                                                id(self))
19387  */
19388 
19389 /* Python wrapper */
19390 static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self); /*proto*/
__pyx_memoryview___repr__(PyObject * __pyx_v_self)19391 static PyObject *__pyx_memoryview___repr__(PyObject *__pyx_v_self) {
19392   PyObject *__pyx_r = 0;
19393   __Pyx_RefNannyDeclarations
19394   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
19395   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19396 
19397   /* function exit code */
19398   __Pyx_RefNannyFinishContext();
19399   return __pyx_r;
19400 }
19401 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj * __pyx_v_self)19402 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12__repr__(struct __pyx_memoryview_obj *__pyx_v_self) {
19403   PyObject *__pyx_r = NULL;
19404   __Pyx_RefNannyDeclarations
19405   PyObject *__pyx_t_1 = NULL;
19406   PyObject *__pyx_t_2 = NULL;
19407   PyObject *__pyx_t_3 = NULL;
19408   __Pyx_RefNannySetupContext("__repr__", 0);
19409 
19410   /* "View.MemoryView":608
19411  *
19412  *     def __repr__(self):
19413  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,             # <<<<<<<<<<<<<<
19414  *                                                id(self))
19415  *
19416  */
19417   __Pyx_XDECREF(__pyx_r);
19418   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 608, __pyx_L1_error)
19419   __Pyx_GOTREF(__pyx_t_1);
19420   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 608, __pyx_L1_error)
19421   __Pyx_GOTREF(__pyx_t_2);
19422   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19423   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 608, __pyx_L1_error)
19424   __Pyx_GOTREF(__pyx_t_1);
19425   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19426 
19427   /* "View.MemoryView":609
19428  *     def __repr__(self):
19429  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
19430  *                                                id(self))             # <<<<<<<<<<<<<<
19431  *
19432  *     def __str__(self):
19433  */
19434   __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 609, __pyx_L1_error)
19435   __Pyx_GOTREF(__pyx_t_2);
19436 
19437   /* "View.MemoryView":608
19438  *
19439  *     def __repr__(self):
19440  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,             # <<<<<<<<<<<<<<
19441  *                                                id(self))
19442  *
19443  */
19444   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 608, __pyx_L1_error)
19445   __Pyx_GOTREF(__pyx_t_3);
19446   __Pyx_GIVEREF(__pyx_t_1);
19447   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
19448   __Pyx_GIVEREF(__pyx_t_2);
19449   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
19450   __pyx_t_1 = 0;
19451   __pyx_t_2 = 0;
19452   __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 608, __pyx_L1_error)
19453   __Pyx_GOTREF(__pyx_t_2);
19454   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19455   __pyx_r = __pyx_t_2;
19456   __pyx_t_2 = 0;
19457   goto __pyx_L0;
19458 
19459   /* "View.MemoryView":607
19460  *         return 0
19461  *
19462  *     def __repr__(self):             # <<<<<<<<<<<<<<
19463  *         return "<MemoryView of %r at 0x%x>" % (self.base.__class__.__name__,
19464  *                                                id(self))
19465  */
19466 
19467   /* function exit code */
19468   __pyx_L1_error:;
19469   __Pyx_XDECREF(__pyx_t_1);
19470   __Pyx_XDECREF(__pyx_t_2);
19471   __Pyx_XDECREF(__pyx_t_3);
19472   __Pyx_AddTraceback("View.MemoryView.memoryview.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19473   __pyx_r = NULL;
19474   __pyx_L0:;
19475   __Pyx_XGIVEREF(__pyx_r);
19476   __Pyx_RefNannyFinishContext();
19477   return __pyx_r;
19478 }
19479 
19480 /* "View.MemoryView":611
19481  *                                                id(self))
19482  *
19483  *     def __str__(self):             # <<<<<<<<<<<<<<
19484  *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)
19485  *
19486  */
19487 
19488 /* Python wrapper */
19489 static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self); /*proto*/
__pyx_memoryview___str__(PyObject * __pyx_v_self)19490 static PyObject *__pyx_memoryview___str__(PyObject *__pyx_v_self) {
19491   PyObject *__pyx_r = 0;
19492   __Pyx_RefNannyDeclarations
19493   __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
19494   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19495 
19496   /* function exit code */
19497   __Pyx_RefNannyFinishContext();
19498   return __pyx_r;
19499 }
19500 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj * __pyx_v_self)19501 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14__str__(struct __pyx_memoryview_obj *__pyx_v_self) {
19502   PyObject *__pyx_r = NULL;
19503   __Pyx_RefNannyDeclarations
19504   PyObject *__pyx_t_1 = NULL;
19505   PyObject *__pyx_t_2 = NULL;
19506   __Pyx_RefNannySetupContext("__str__", 0);
19507 
19508   /* "View.MemoryView":612
19509  *
19510  *     def __str__(self):
19511  *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)             # <<<<<<<<<<<<<<
19512  *
19513  *
19514  */
19515   __Pyx_XDECREF(__pyx_r);
19516   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error)
19517   __Pyx_GOTREF(__pyx_t_1);
19518   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error)
19519   __Pyx_GOTREF(__pyx_t_2);
19520   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19521   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error)
19522   __Pyx_GOTREF(__pyx_t_1);
19523   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19524   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 612, __pyx_L1_error)
19525   __Pyx_GOTREF(__pyx_t_2);
19526   __Pyx_GIVEREF(__pyx_t_1);
19527   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
19528   __pyx_t_1 = 0;
19529   __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_MemoryView_of_r_object, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 612, __pyx_L1_error)
19530   __Pyx_GOTREF(__pyx_t_1);
19531   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19532   __pyx_r = __pyx_t_1;
19533   __pyx_t_1 = 0;
19534   goto __pyx_L0;
19535 
19536   /* "View.MemoryView":611
19537  *                                                id(self))
19538  *
19539  *     def __str__(self):             # <<<<<<<<<<<<<<
19540  *         return "<MemoryView of %r object>" % (self.base.__class__.__name__,)
19541  *
19542  */
19543 
19544   /* function exit code */
19545   __pyx_L1_error:;
19546   __Pyx_XDECREF(__pyx_t_1);
19547   __Pyx_XDECREF(__pyx_t_2);
19548   __Pyx_AddTraceback("View.MemoryView.memoryview.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19549   __pyx_r = NULL;
19550   __pyx_L0:;
19551   __Pyx_XGIVEREF(__pyx_r);
19552   __Pyx_RefNannyFinishContext();
19553   return __pyx_r;
19554 }
19555 
19556 /* "View.MemoryView":615
19557  *
19558  *
19559  *     def is_c_contig(self):             # <<<<<<<<<<<<<<
19560  *         cdef __Pyx_memviewslice *mslice
19561  *         cdef __Pyx_memviewslice tmp
19562  */
19563 
19564 /* Python wrapper */
19565 static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_memoryview_is_c_contig(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)19566 static PyObject *__pyx_memoryview_is_c_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
19567   PyObject *__pyx_r = 0;
19568   __Pyx_RefNannyDeclarations
19569   __Pyx_RefNannySetupContext("is_c_contig (wrapper)", 0);
19570   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(((struct __pyx_memoryview_obj *)__pyx_v_self));
19571 
19572   /* function exit code */
19573   __Pyx_RefNannyFinishContext();
19574   return __pyx_r;
19575 }
19576 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj * __pyx_v_self)19577 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16is_c_contig(struct __pyx_memoryview_obj *__pyx_v_self) {
19578   __Pyx_memviewslice *__pyx_v_mslice;
19579   __Pyx_memviewslice __pyx_v_tmp;
19580   PyObject *__pyx_r = NULL;
19581   __Pyx_RefNannyDeclarations
19582   PyObject *__pyx_t_1 = NULL;
19583   __Pyx_RefNannySetupContext("is_c_contig", 0);
19584 
19585   /* "View.MemoryView":618
19586  *         cdef __Pyx_memviewslice *mslice
19587  *         cdef __Pyx_memviewslice tmp
19588  *         mslice = get_slice_from_memview(self, &tmp)             # <<<<<<<<<<<<<<
19589  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
19590  *
19591  */
19592   __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp));
19593 
19594   /* "View.MemoryView":619
19595  *         cdef __Pyx_memviewslice tmp
19596  *         mslice = get_slice_from_memview(self, &tmp)
19597  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)             # <<<<<<<<<<<<<<
19598  *
19599  *     def is_f_contig(self):
19600  */
19601   __Pyx_XDECREF(__pyx_r);
19602   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 619, __pyx_L1_error)
19603   __Pyx_GOTREF(__pyx_t_1);
19604   __pyx_r = __pyx_t_1;
19605   __pyx_t_1 = 0;
19606   goto __pyx_L0;
19607 
19608   /* "View.MemoryView":615
19609  *
19610  *
19611  *     def is_c_contig(self):             # <<<<<<<<<<<<<<
19612  *         cdef __Pyx_memviewslice *mslice
19613  *         cdef __Pyx_memviewslice tmp
19614  */
19615 
19616   /* function exit code */
19617   __pyx_L1_error:;
19618   __Pyx_XDECREF(__pyx_t_1);
19619   __Pyx_AddTraceback("View.MemoryView.memoryview.is_c_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
19620   __pyx_r = NULL;
19621   __pyx_L0:;
19622   __Pyx_XGIVEREF(__pyx_r);
19623   __Pyx_RefNannyFinishContext();
19624   return __pyx_r;
19625 }
19626 
19627 /* "View.MemoryView":621
19628  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
19629  *
19630  *     def is_f_contig(self):             # <<<<<<<<<<<<<<
19631  *         cdef __Pyx_memviewslice *mslice
19632  *         cdef __Pyx_memviewslice tmp
19633  */
19634 
19635 /* Python wrapper */
19636 static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_memoryview_is_f_contig(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)19637 static PyObject *__pyx_memoryview_is_f_contig(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
19638   PyObject *__pyx_r = 0;
19639   __Pyx_RefNannyDeclarations
19640   __Pyx_RefNannySetupContext("is_f_contig (wrapper)", 0);
19641   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(((struct __pyx_memoryview_obj *)__pyx_v_self));
19642 
19643   /* function exit code */
19644   __Pyx_RefNannyFinishContext();
19645   return __pyx_r;
19646 }
19647 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj * __pyx_v_self)19648 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18is_f_contig(struct __pyx_memoryview_obj *__pyx_v_self) {
19649   __Pyx_memviewslice *__pyx_v_mslice;
19650   __Pyx_memviewslice __pyx_v_tmp;
19651   PyObject *__pyx_r = NULL;
19652   __Pyx_RefNannyDeclarations
19653   PyObject *__pyx_t_1 = NULL;
19654   __Pyx_RefNannySetupContext("is_f_contig", 0);
19655 
19656   /* "View.MemoryView":624
19657  *         cdef __Pyx_memviewslice *mslice
19658  *         cdef __Pyx_memviewslice tmp
19659  *         mslice = get_slice_from_memview(self, &tmp)             # <<<<<<<<<<<<<<
19660  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
19661  *
19662  */
19663   __pyx_v_mslice = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp));
19664 
19665   /* "View.MemoryView":625
19666  *         cdef __Pyx_memviewslice tmp
19667  *         mslice = get_slice_from_memview(self, &tmp)
19668  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)             # <<<<<<<<<<<<<<
19669  *
19670  *     def copy(self):
19671  */
19672   __Pyx_XDECREF(__pyx_r);
19673   __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 625, __pyx_L1_error)
19674   __Pyx_GOTREF(__pyx_t_1);
19675   __pyx_r = __pyx_t_1;
19676   __pyx_t_1 = 0;
19677   goto __pyx_L0;
19678 
19679   /* "View.MemoryView":621
19680  *         return slice_is_contig(mslice[0], 'C', self.view.ndim)
19681  *
19682  *     def is_f_contig(self):             # <<<<<<<<<<<<<<
19683  *         cdef __Pyx_memviewslice *mslice
19684  *         cdef __Pyx_memviewslice tmp
19685  */
19686 
19687   /* function exit code */
19688   __pyx_L1_error:;
19689   __Pyx_XDECREF(__pyx_t_1);
19690   __Pyx_AddTraceback("View.MemoryView.memoryview.is_f_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
19691   __pyx_r = NULL;
19692   __pyx_L0:;
19693   __Pyx_XGIVEREF(__pyx_r);
19694   __Pyx_RefNannyFinishContext();
19695   return __pyx_r;
19696 }
19697 
19698 /* "View.MemoryView":627
19699  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
19700  *
19701  *     def copy(self):             # <<<<<<<<<<<<<<
19702  *         cdef __Pyx_memviewslice mslice
19703  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
19704  */
19705 
19706 /* Python wrapper */
19707 static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_memoryview_copy(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)19708 static PyObject *__pyx_memoryview_copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
19709   PyObject *__pyx_r = 0;
19710   __Pyx_RefNannyDeclarations
19711   __Pyx_RefNannySetupContext("copy (wrapper)", 0);
19712   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(((struct __pyx_memoryview_obj *)__pyx_v_self));
19713 
19714   /* function exit code */
19715   __Pyx_RefNannyFinishContext();
19716   return __pyx_r;
19717 }
19718 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj * __pyx_v_self)19719 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20copy(struct __pyx_memoryview_obj *__pyx_v_self) {
19720   __Pyx_memviewslice __pyx_v_mslice;
19721   int __pyx_v_flags;
19722   PyObject *__pyx_r = NULL;
19723   __Pyx_RefNannyDeclarations
19724   __Pyx_memviewslice __pyx_t_1;
19725   PyObject *__pyx_t_2 = NULL;
19726   __Pyx_RefNannySetupContext("copy", 0);
19727 
19728   /* "View.MemoryView":629
19729  *     def copy(self):
19730  *         cdef __Pyx_memviewslice mslice
19731  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS             # <<<<<<<<<<<<<<
19732  *
19733  *         slice_copy(self, &mslice)
19734  */
19735   __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS));
19736 
19737   /* "View.MemoryView":631
19738  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
19739  *
19740  *         slice_copy(self, &mslice)             # <<<<<<<<<<<<<<
19741  *         mslice = slice_copy_contig(&mslice, "c", self.view.ndim,
19742  *                                    self.view.itemsize,
19743  */
19744   __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice));
19745 
19746   /* "View.MemoryView":632
19747  *
19748  *         slice_copy(self, &mslice)
19749  *         mslice = slice_copy_contig(&mslice, "c", self.view.ndim,             # <<<<<<<<<<<<<<
19750  *                                    self.view.itemsize,
19751  *                                    flags|PyBUF_C_CONTIGUOUS,
19752  */
19753   __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 632, __pyx_L1_error)
19754   __pyx_v_mslice = __pyx_t_1;
19755 
19756   /* "View.MemoryView":637
19757  *                                    self.dtype_is_object)
19758  *
19759  *         return memoryview_copy_from_slice(self, &mslice)             # <<<<<<<<<<<<<<
19760  *
19761  *     def copy_fortran(self):
19762  */
19763   __Pyx_XDECREF(__pyx_r);
19764   __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 637, __pyx_L1_error)
19765   __Pyx_GOTREF(__pyx_t_2);
19766   __pyx_r = __pyx_t_2;
19767   __pyx_t_2 = 0;
19768   goto __pyx_L0;
19769 
19770   /* "View.MemoryView":627
19771  *         return slice_is_contig(mslice[0], 'F', self.view.ndim)
19772  *
19773  *     def copy(self):             # <<<<<<<<<<<<<<
19774  *         cdef __Pyx_memviewslice mslice
19775  *         cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS
19776  */
19777 
19778   /* function exit code */
19779   __pyx_L1_error:;
19780   __Pyx_XDECREF(__pyx_t_2);
19781   __Pyx_AddTraceback("View.MemoryView.memoryview.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
19782   __pyx_r = NULL;
19783   __pyx_L0:;
19784   __Pyx_XGIVEREF(__pyx_r);
19785   __Pyx_RefNannyFinishContext();
19786   return __pyx_r;
19787 }
19788 
19789 /* "View.MemoryView":639
19790  *         return memoryview_copy_from_slice(self, &mslice)
19791  *
19792  *     def copy_fortran(self):             # <<<<<<<<<<<<<<
19793  *         cdef __Pyx_memviewslice src, dst
19794  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
19795  */
19796 
19797 /* Python wrapper */
19798 static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_memoryview_copy_fortran(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)19799 static PyObject *__pyx_memoryview_copy_fortran(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
19800   PyObject *__pyx_r = 0;
19801   __Pyx_RefNannyDeclarations
19802   __Pyx_RefNannySetupContext("copy_fortran (wrapper)", 0);
19803   __pyx_r = __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(((struct __pyx_memoryview_obj *)__pyx_v_self));
19804 
19805   /* function exit code */
19806   __Pyx_RefNannyFinishContext();
19807   return __pyx_r;
19808 }
19809 
__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj * __pyx_v_self)19810 static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22copy_fortran(struct __pyx_memoryview_obj *__pyx_v_self) {
19811   __Pyx_memviewslice __pyx_v_src;
19812   __Pyx_memviewslice __pyx_v_dst;
19813   int __pyx_v_flags;
19814   PyObject *__pyx_r = NULL;
19815   __Pyx_RefNannyDeclarations
19816   __Pyx_memviewslice __pyx_t_1;
19817   PyObject *__pyx_t_2 = NULL;
19818   __Pyx_RefNannySetupContext("copy_fortran", 0);
19819 
19820   /* "View.MemoryView":641
19821  *     def copy_fortran(self):
19822  *         cdef __Pyx_memviewslice src, dst
19823  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS             # <<<<<<<<<<<<<<
19824  *
19825  *         slice_copy(self, &src)
19826  */
19827   __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS));
19828 
19829   /* "View.MemoryView":643
19830  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
19831  *
19832  *         slice_copy(self, &src)             # <<<<<<<<<<<<<<
19833  *         dst = slice_copy_contig(&src, "fortran", self.view.ndim,
19834  *                                 self.view.itemsize,
19835  */
19836   __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src));
19837 
19838   /* "View.MemoryView":644
19839  *
19840  *         slice_copy(self, &src)
19841  *         dst = slice_copy_contig(&src, "fortran", self.view.ndim,             # <<<<<<<<<<<<<<
19842  *                                 self.view.itemsize,
19843  *                                 flags|PyBUF_F_CONTIGUOUS,
19844  */
19845   __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 644, __pyx_L1_error)
19846   __pyx_v_dst = __pyx_t_1;
19847 
19848   /* "View.MemoryView":649
19849  *                                 self.dtype_is_object)
19850  *
19851  *         return memoryview_copy_from_slice(self, &dst)             # <<<<<<<<<<<<<<
19852  *
19853  *
19854  */
19855   __Pyx_XDECREF(__pyx_r);
19856   __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 649, __pyx_L1_error)
19857   __Pyx_GOTREF(__pyx_t_2);
19858   __pyx_r = __pyx_t_2;
19859   __pyx_t_2 = 0;
19860   goto __pyx_L0;
19861 
19862   /* "View.MemoryView":639
19863  *         return memoryview_copy_from_slice(self, &mslice)
19864  *
19865  *     def copy_fortran(self):             # <<<<<<<<<<<<<<
19866  *         cdef __Pyx_memviewslice src, dst
19867  *         cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS
19868  */
19869 
19870   /* function exit code */
19871   __pyx_L1_error:;
19872   __Pyx_XDECREF(__pyx_t_2);
19873   __Pyx_AddTraceback("View.MemoryView.memoryview.copy_fortran", __pyx_clineno, __pyx_lineno, __pyx_filename);
19874   __pyx_r = NULL;
19875   __pyx_L0:;
19876   __Pyx_XGIVEREF(__pyx_r);
19877   __Pyx_RefNannyFinishContext();
19878   return __pyx_r;
19879 }
19880 
19881 /* "(tree fragment)":1
19882  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
19883  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19884  * def __setstate_cython__(self, __pyx_state):
19885  */
19886 
19887 /* Python wrapper */
19888 static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)19889 static PyObject *__pyx_pw___pyx_memoryview_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
19890   PyObject *__pyx_r = 0;
19891   __Pyx_RefNannyDeclarations
19892   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
19893   __pyx_r = __pyx_pf___pyx_memoryview___reduce_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self));
19894 
19895   /* function exit code */
19896   __Pyx_RefNannyFinishContext();
19897   return __pyx_r;
19898 }
19899 
__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj * __pyx_v_self)19900 static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self) {
19901   PyObject *__pyx_r = NULL;
19902   __Pyx_RefNannyDeclarations
19903   PyObject *__pyx_t_1 = NULL;
19904   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
19905 
19906   /* "(tree fragment)":2
19907  * def __reduce_cython__(self):
19908  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
19909  * def __setstate_cython__(self, __pyx_state):
19910  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19911  */
19912   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
19913   __Pyx_GOTREF(__pyx_t_1);
19914   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
19915   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19916   __PYX_ERR(1, 2, __pyx_L1_error)
19917 
19918   /* "(tree fragment)":1
19919  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
19920  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19921  * def __setstate_cython__(self, __pyx_state):
19922  */
19923 
19924   /* function exit code */
19925   __pyx_L1_error:;
19926   __Pyx_XDECREF(__pyx_t_1);
19927   __Pyx_AddTraceback("View.MemoryView.memoryview.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19928   __pyx_r = NULL;
19929   __Pyx_XGIVEREF(__pyx_r);
19930   __Pyx_RefNannyFinishContext();
19931   return __pyx_r;
19932 }
19933 
19934 /* "(tree fragment)":3
19935  * def __reduce_cython__(self):
19936  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19937  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
19938  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19939  */
19940 
19941 /* Python wrapper */
19942 static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)19943 static PyObject *__pyx_pw___pyx_memoryview_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
19944   PyObject *__pyx_r = 0;
19945   __Pyx_RefNannyDeclarations
19946   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
19947   __pyx_r = __pyx_pf___pyx_memoryview_2__setstate_cython__(((struct __pyx_memoryview_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
19948 
19949   /* function exit code */
19950   __Pyx_RefNannyFinishContext();
19951   return __pyx_r;
19952 }
19953 
__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)19954 static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryview_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
19955   PyObject *__pyx_r = NULL;
19956   __Pyx_RefNannyDeclarations
19957   PyObject *__pyx_t_1 = NULL;
19958   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
19959 
19960   /* "(tree fragment)":4
19961  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19962  * def __setstate_cython__(self, __pyx_state):
19963  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
19964  */
19965   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
19966   __Pyx_GOTREF(__pyx_t_1);
19967   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
19968   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19969   __PYX_ERR(1, 4, __pyx_L1_error)
19970 
19971   /* "(tree fragment)":3
19972  * def __reduce_cython__(self):
19973  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19974  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
19975  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
19976  */
19977 
19978   /* function exit code */
19979   __pyx_L1_error:;
19980   __Pyx_XDECREF(__pyx_t_1);
19981   __Pyx_AddTraceback("View.MemoryView.memoryview.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19982   __pyx_r = NULL;
19983   __Pyx_XGIVEREF(__pyx_r);
19984   __Pyx_RefNannyFinishContext();
19985   return __pyx_r;
19986 }
19987 
19988 /* "View.MemoryView":653
19989  *
19990  * @cname('__pyx_memoryview_new')
19991  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):             # <<<<<<<<<<<<<<
19992  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
19993  *     result.typeinfo = typeinfo
19994  */
19995 
__pyx_memoryview_new(PyObject * __pyx_v_o,int __pyx_v_flags,int __pyx_v_dtype_is_object,__Pyx_TypeInfo * __pyx_v_typeinfo)19996 static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, int __pyx_v_dtype_is_object, __Pyx_TypeInfo *__pyx_v_typeinfo) {
19997   struct __pyx_memoryview_obj *__pyx_v_result = 0;
19998   PyObject *__pyx_r = NULL;
19999   __Pyx_RefNannyDeclarations
20000   PyObject *__pyx_t_1 = NULL;
20001   PyObject *__pyx_t_2 = NULL;
20002   PyObject *__pyx_t_3 = NULL;
20003   __Pyx_RefNannySetupContext("memoryview_cwrapper", 0);
20004 
20005   /* "View.MemoryView":654
20006  * @cname('__pyx_memoryview_new')
20007  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):
20008  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)             # <<<<<<<<<<<<<<
20009  *     result.typeinfo = typeinfo
20010  *     return result
20011  */
20012   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 654, __pyx_L1_error)
20013   __Pyx_GOTREF(__pyx_t_1);
20014   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 654, __pyx_L1_error)
20015   __Pyx_GOTREF(__pyx_t_2);
20016   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 654, __pyx_L1_error)
20017   __Pyx_GOTREF(__pyx_t_3);
20018   __Pyx_INCREF(__pyx_v_o);
20019   __Pyx_GIVEREF(__pyx_v_o);
20020   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_o);
20021   __Pyx_GIVEREF(__pyx_t_1);
20022   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
20023   __Pyx_GIVEREF(__pyx_t_2);
20024   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
20025   __pyx_t_1 = 0;
20026   __pyx_t_2 = 0;
20027   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryview_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 654, __pyx_L1_error)
20028   __Pyx_GOTREF(__pyx_t_2);
20029   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20030   __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_2);
20031   __pyx_t_2 = 0;
20032 
20033   /* "View.MemoryView":655
20034  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):
20035  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
20036  *     result.typeinfo = typeinfo             # <<<<<<<<<<<<<<
20037  *     return result
20038  *
20039  */
20040   __pyx_v_result->typeinfo = __pyx_v_typeinfo;
20041 
20042   /* "View.MemoryView":656
20043  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
20044  *     result.typeinfo = typeinfo
20045  *     return result             # <<<<<<<<<<<<<<
20046  *
20047  * @cname('__pyx_memoryview_check')
20048  */
20049   __Pyx_XDECREF(__pyx_r);
20050   __Pyx_INCREF(((PyObject *)__pyx_v_result));
20051   __pyx_r = ((PyObject *)__pyx_v_result);
20052   goto __pyx_L0;
20053 
20054   /* "View.MemoryView":653
20055  *
20056  * @cname('__pyx_memoryview_new')
20057  * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, __Pyx_TypeInfo *typeinfo):             # <<<<<<<<<<<<<<
20058  *     cdef memoryview result = memoryview(o, flags, dtype_is_object)
20059  *     result.typeinfo = typeinfo
20060  */
20061 
20062   /* function exit code */
20063   __pyx_L1_error:;
20064   __Pyx_XDECREF(__pyx_t_1);
20065   __Pyx_XDECREF(__pyx_t_2);
20066   __Pyx_XDECREF(__pyx_t_3);
20067   __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
20068   __pyx_r = 0;
20069   __pyx_L0:;
20070   __Pyx_XDECREF((PyObject *)__pyx_v_result);
20071   __Pyx_XGIVEREF(__pyx_r);
20072   __Pyx_RefNannyFinishContext();
20073   return __pyx_r;
20074 }
20075 
20076 /* "View.MemoryView":659
20077  *
20078  * @cname('__pyx_memoryview_check')
20079  * cdef inline bint memoryview_check(object o):             # <<<<<<<<<<<<<<
20080  *     return isinstance(o, memoryview)
20081  *
20082  */
20083 
__pyx_memoryview_check(PyObject * __pyx_v_o)20084 static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) {
20085   int __pyx_r;
20086   __Pyx_RefNannyDeclarations
20087   int __pyx_t_1;
20088   __Pyx_RefNannySetupContext("memoryview_check", 0);
20089 
20090   /* "View.MemoryView":660
20091  * @cname('__pyx_memoryview_check')
20092  * cdef inline bint memoryview_check(object o):
20093  *     return isinstance(o, memoryview)             # <<<<<<<<<<<<<<
20094  *
20095  * cdef tuple _unellipsify(object index, int ndim):
20096  */
20097   __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_o, __pyx_memoryview_type);
20098   __pyx_r = __pyx_t_1;
20099   goto __pyx_L0;
20100 
20101   /* "View.MemoryView":659
20102  *
20103  * @cname('__pyx_memoryview_check')
20104  * cdef inline bint memoryview_check(object o):             # <<<<<<<<<<<<<<
20105  *     return isinstance(o, memoryview)
20106  *
20107  */
20108 
20109   /* function exit code */
20110   __pyx_L0:;
20111   __Pyx_RefNannyFinishContext();
20112   return __pyx_r;
20113 }
20114 
20115 /* "View.MemoryView":662
20116  *     return isinstance(o, memoryview)
20117  *
20118  * cdef tuple _unellipsify(object index, int ndim):             # <<<<<<<<<<<<<<
20119  *     """
20120  *     Replace all ellipses with full slices and fill incomplete indices with
20121  */
20122 
_unellipsify(PyObject * __pyx_v_index,int __pyx_v_ndim)20123 static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
20124   PyObject *__pyx_v_tup = NULL;
20125   PyObject *__pyx_v_result = NULL;
20126   int __pyx_v_have_slices;
20127   int __pyx_v_seen_ellipsis;
20128   CYTHON_UNUSED PyObject *__pyx_v_idx = NULL;
20129   PyObject *__pyx_v_item = NULL;
20130   Py_ssize_t __pyx_v_nslices;
20131   PyObject *__pyx_r = NULL;
20132   __Pyx_RefNannyDeclarations
20133   int __pyx_t_1;
20134   int __pyx_t_2;
20135   PyObject *__pyx_t_3 = NULL;
20136   PyObject *__pyx_t_4 = NULL;
20137   Py_ssize_t __pyx_t_5;
20138   PyObject *(*__pyx_t_6)(PyObject *);
20139   PyObject *__pyx_t_7 = NULL;
20140   Py_ssize_t __pyx_t_8;
20141   int __pyx_t_9;
20142   int __pyx_t_10;
20143   PyObject *__pyx_t_11 = NULL;
20144   __Pyx_RefNannySetupContext("_unellipsify", 0);
20145 
20146   /* "View.MemoryView":667
20147  *     full slices.
20148  *     """
20149  *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
20150  *         tup = (index,)
20151  *     else:
20152  */
20153   __pyx_t_1 = PyTuple_Check(__pyx_v_index);
20154   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
20155   if (__pyx_t_2) {
20156 
20157     /* "View.MemoryView":668
20158  *     """
20159  *     if not isinstance(index, tuple):
20160  *         tup = (index,)             # <<<<<<<<<<<<<<
20161  *     else:
20162  *         tup = index
20163  */
20164     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 668, __pyx_L1_error)
20165     __Pyx_GOTREF(__pyx_t_3);
20166     __Pyx_INCREF(__pyx_v_index);
20167     __Pyx_GIVEREF(__pyx_v_index);
20168     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index);
20169     __pyx_v_tup = __pyx_t_3;
20170     __pyx_t_3 = 0;
20171 
20172     /* "View.MemoryView":667
20173  *     full slices.
20174  *     """
20175  *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
20176  *         tup = (index,)
20177  *     else:
20178  */
20179     goto __pyx_L3;
20180   }
20181 
20182   /* "View.MemoryView":670
20183  *         tup = (index,)
20184  *     else:
20185  *         tup = index             # <<<<<<<<<<<<<<
20186  *
20187  *     result = []
20188  */
20189   /*else*/ {
20190     __Pyx_INCREF(__pyx_v_index);
20191     __pyx_v_tup = __pyx_v_index;
20192   }
20193   __pyx_L3:;
20194 
20195   /* "View.MemoryView":672
20196  *         tup = index
20197  *
20198  *     result = []             # <<<<<<<<<<<<<<
20199  *     have_slices = False
20200  *     seen_ellipsis = False
20201  */
20202   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 672, __pyx_L1_error)
20203   __Pyx_GOTREF(__pyx_t_3);
20204   __pyx_v_result = ((PyObject*)__pyx_t_3);
20205   __pyx_t_3 = 0;
20206 
20207   /* "View.MemoryView":673
20208  *
20209  *     result = []
20210  *     have_slices = False             # <<<<<<<<<<<<<<
20211  *     seen_ellipsis = False
20212  *     for idx, item in enumerate(tup):
20213  */
20214   __pyx_v_have_slices = 0;
20215 
20216   /* "View.MemoryView":674
20217  *     result = []
20218  *     have_slices = False
20219  *     seen_ellipsis = False             # <<<<<<<<<<<<<<
20220  *     for idx, item in enumerate(tup):
20221  *         if item is Ellipsis:
20222  */
20223   __pyx_v_seen_ellipsis = 0;
20224 
20225   /* "View.MemoryView":675
20226  *     have_slices = False
20227  *     seen_ellipsis = False
20228  *     for idx, item in enumerate(tup):             # <<<<<<<<<<<<<<
20229  *         if item is Ellipsis:
20230  *             if not seen_ellipsis:
20231  */
20232   __Pyx_INCREF(__pyx_int_0);
20233   __pyx_t_3 = __pyx_int_0;
20234   if (likely(PyList_CheckExact(__pyx_v_tup)) || PyTuple_CheckExact(__pyx_v_tup)) {
20235     __pyx_t_4 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
20236     __pyx_t_6 = NULL;
20237   } else {
20238     __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_tup); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 675, __pyx_L1_error)
20239     __Pyx_GOTREF(__pyx_t_4);
20240     __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 675, __pyx_L1_error)
20241   }
20242   for (;;) {
20243     if (likely(!__pyx_t_6)) {
20244       if (likely(PyList_CheckExact(__pyx_t_4))) {
20245         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
20246         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
20247         __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 675, __pyx_L1_error)
20248         #else
20249         __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 675, __pyx_L1_error)
20250         __Pyx_GOTREF(__pyx_t_7);
20251         #endif
20252       } else {
20253         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
20254         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
20255         __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 675, __pyx_L1_error)
20256         #else
20257         __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 675, __pyx_L1_error)
20258         __Pyx_GOTREF(__pyx_t_7);
20259         #endif
20260       }
20261     } else {
20262       __pyx_t_7 = __pyx_t_6(__pyx_t_4);
20263       if (unlikely(!__pyx_t_7)) {
20264         PyObject* exc_type = PyErr_Occurred();
20265         if (exc_type) {
20266           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
20267           else __PYX_ERR(1, 675, __pyx_L1_error)
20268         }
20269         break;
20270       }
20271       __Pyx_GOTREF(__pyx_t_7);
20272     }
20273     __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7);
20274     __pyx_t_7 = 0;
20275     __Pyx_INCREF(__pyx_t_3);
20276     __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_3);
20277     __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 675, __pyx_L1_error)
20278     __Pyx_GOTREF(__pyx_t_7);
20279     __Pyx_DECREF(__pyx_t_3);
20280     __pyx_t_3 = __pyx_t_7;
20281     __pyx_t_7 = 0;
20282 
20283     /* "View.MemoryView":676
20284  *     seen_ellipsis = False
20285  *     for idx, item in enumerate(tup):
20286  *         if item is Ellipsis:             # <<<<<<<<<<<<<<
20287  *             if not seen_ellipsis:
20288  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
20289  */
20290     __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis);
20291     __pyx_t_1 = (__pyx_t_2 != 0);
20292     if (__pyx_t_1) {
20293 
20294       /* "View.MemoryView":677
20295  *     for idx, item in enumerate(tup):
20296  *         if item is Ellipsis:
20297  *             if not seen_ellipsis:             # <<<<<<<<<<<<<<
20298  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
20299  *                 seen_ellipsis = True
20300  */
20301       __pyx_t_1 = ((!(__pyx_v_seen_ellipsis != 0)) != 0);
20302       if (__pyx_t_1) {
20303 
20304         /* "View.MemoryView":678
20305  *         if item is Ellipsis:
20306  *             if not seen_ellipsis:
20307  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))             # <<<<<<<<<<<<<<
20308  *                 seen_ellipsis = True
20309  *             else:
20310  */
20311         __pyx_t_8 = PyObject_Length(__pyx_v_tup); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 678, __pyx_L1_error)
20312         __pyx_t_7 = PyList_New(1 * ((((__pyx_v_ndim - __pyx_t_8) + 1)<0) ? 0:((__pyx_v_ndim - __pyx_t_8) + 1))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 678, __pyx_L1_error)
20313         __Pyx_GOTREF(__pyx_t_7);
20314         { Py_ssize_t __pyx_temp;
20315           for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
20316             __Pyx_INCREF(__pyx_slice__29);
20317             __Pyx_GIVEREF(__pyx_slice__29);
20318             PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__29);
20319           }
20320         }
20321         __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 678, __pyx_L1_error)
20322         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20323 
20324         /* "View.MemoryView":679
20325  *             if not seen_ellipsis:
20326  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
20327  *                 seen_ellipsis = True             # <<<<<<<<<<<<<<
20328  *             else:
20329  *                 result.append(slice(None))
20330  */
20331         __pyx_v_seen_ellipsis = 1;
20332 
20333         /* "View.MemoryView":677
20334  *     for idx, item in enumerate(tup):
20335  *         if item is Ellipsis:
20336  *             if not seen_ellipsis:             # <<<<<<<<<<<<<<
20337  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
20338  *                 seen_ellipsis = True
20339  */
20340         goto __pyx_L7;
20341       }
20342 
20343       /* "View.MemoryView":681
20344  *                 seen_ellipsis = True
20345  *             else:
20346  *                 result.append(slice(None))             # <<<<<<<<<<<<<<
20347  *             have_slices = True
20348  *         else:
20349  */
20350       /*else*/ {
20351         __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__29); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 681, __pyx_L1_error)
20352       }
20353       __pyx_L7:;
20354 
20355       /* "View.MemoryView":682
20356  *             else:
20357  *                 result.append(slice(None))
20358  *             have_slices = True             # <<<<<<<<<<<<<<
20359  *         else:
20360  *             if not isinstance(item, slice) and not PyIndex_Check(item):
20361  */
20362       __pyx_v_have_slices = 1;
20363 
20364       /* "View.MemoryView":676
20365  *     seen_ellipsis = False
20366  *     for idx, item in enumerate(tup):
20367  *         if item is Ellipsis:             # <<<<<<<<<<<<<<
20368  *             if not seen_ellipsis:
20369  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))
20370  */
20371       goto __pyx_L6;
20372     }
20373 
20374     /* "View.MemoryView":684
20375  *             have_slices = True
20376  *         else:
20377  *             if not isinstance(item, slice) and not PyIndex_Check(item):             # <<<<<<<<<<<<<<
20378  *                 raise TypeError("Cannot index with type '%s'" % type(item))
20379  *
20380  */
20381     /*else*/ {
20382       __pyx_t_2 = PySlice_Check(__pyx_v_item);
20383       __pyx_t_10 = ((!(__pyx_t_2 != 0)) != 0);
20384       if (__pyx_t_10) {
20385       } else {
20386         __pyx_t_1 = __pyx_t_10;
20387         goto __pyx_L9_bool_binop_done;
20388       }
20389       __pyx_t_10 = ((!(PyIndex_Check(__pyx_v_item) != 0)) != 0);
20390       __pyx_t_1 = __pyx_t_10;
20391       __pyx_L9_bool_binop_done:;
20392       if (unlikely(__pyx_t_1)) {
20393 
20394         /* "View.MemoryView":685
20395  *         else:
20396  *             if not isinstance(item, slice) and not PyIndex_Check(item):
20397  *                 raise TypeError("Cannot index with type '%s'" % type(item))             # <<<<<<<<<<<<<<
20398  *
20399  *             have_slices = have_slices or isinstance(item, slice)
20400  */
20401         __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 685, __pyx_L1_error)
20402         __Pyx_GOTREF(__pyx_t_7);
20403         __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 685, __pyx_L1_error)
20404         __Pyx_GOTREF(__pyx_t_11);
20405         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20406         __Pyx_Raise(__pyx_t_11, 0, 0, 0);
20407         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20408         __PYX_ERR(1, 685, __pyx_L1_error)
20409 
20410         /* "View.MemoryView":684
20411  *             have_slices = True
20412  *         else:
20413  *             if not isinstance(item, slice) and not PyIndex_Check(item):             # <<<<<<<<<<<<<<
20414  *                 raise TypeError("Cannot index with type '%s'" % type(item))
20415  *
20416  */
20417       }
20418 
20419       /* "View.MemoryView":687
20420  *                 raise TypeError("Cannot index with type '%s'" % type(item))
20421  *
20422  *             have_slices = have_slices or isinstance(item, slice)             # <<<<<<<<<<<<<<
20423  *             result.append(item)
20424  *
20425  */
20426       __pyx_t_10 = (__pyx_v_have_slices != 0);
20427       if (!__pyx_t_10) {
20428       } else {
20429         __pyx_t_1 = __pyx_t_10;
20430         goto __pyx_L11_bool_binop_done;
20431       }
20432       __pyx_t_10 = PySlice_Check(__pyx_v_item);
20433       __pyx_t_2 = (__pyx_t_10 != 0);
20434       __pyx_t_1 = __pyx_t_2;
20435       __pyx_L11_bool_binop_done:;
20436       __pyx_v_have_slices = __pyx_t_1;
20437 
20438       /* "View.MemoryView":688
20439  *
20440  *             have_slices = have_slices or isinstance(item, slice)
20441  *             result.append(item)             # <<<<<<<<<<<<<<
20442  *
20443  *     nslices = ndim - len(result)
20444  */
20445       __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 688, __pyx_L1_error)
20446     }
20447     __pyx_L6:;
20448 
20449     /* "View.MemoryView":675
20450  *     have_slices = False
20451  *     seen_ellipsis = False
20452  *     for idx, item in enumerate(tup):             # <<<<<<<<<<<<<<
20453  *         if item is Ellipsis:
20454  *             if not seen_ellipsis:
20455  */
20456   }
20457   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20458   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20459 
20460   /* "View.MemoryView":690
20461  *             result.append(item)
20462  *
20463  *     nslices = ndim - len(result)             # <<<<<<<<<<<<<<
20464  *     if nslices:
20465  *         result.extend([slice(None)] * nslices)
20466  */
20467   __pyx_t_5 = PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 690, __pyx_L1_error)
20468   __pyx_v_nslices = (__pyx_v_ndim - __pyx_t_5);
20469 
20470   /* "View.MemoryView":691
20471  *
20472  *     nslices = ndim - len(result)
20473  *     if nslices:             # <<<<<<<<<<<<<<
20474  *         result.extend([slice(None)] * nslices)
20475  *
20476  */
20477   __pyx_t_1 = (__pyx_v_nslices != 0);
20478   if (__pyx_t_1) {
20479 
20480     /* "View.MemoryView":692
20481  *     nslices = ndim - len(result)
20482  *     if nslices:
20483  *         result.extend([slice(None)] * nslices)             # <<<<<<<<<<<<<<
20484  *
20485  *     return have_slices or nslices, tuple(result)
20486  */
20487     __pyx_t_3 = PyList_New(1 * ((__pyx_v_nslices<0) ? 0:__pyx_v_nslices)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 692, __pyx_L1_error)
20488     __Pyx_GOTREF(__pyx_t_3);
20489     { Py_ssize_t __pyx_temp;
20490       for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
20491         __Pyx_INCREF(__pyx_slice__29);
20492         __Pyx_GIVEREF(__pyx_slice__29);
20493         PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__29);
20494       }
20495     }
20496     __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 692, __pyx_L1_error)
20497     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20498 
20499     /* "View.MemoryView":691
20500  *
20501  *     nslices = ndim - len(result)
20502  *     if nslices:             # <<<<<<<<<<<<<<
20503  *         result.extend([slice(None)] * nslices)
20504  *
20505  */
20506   }
20507 
20508   /* "View.MemoryView":694
20509  *         result.extend([slice(None)] * nslices)
20510  *
20511  *     return have_slices or nslices, tuple(result)             # <<<<<<<<<<<<<<
20512  *
20513  * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
20514  */
20515   __Pyx_XDECREF(__pyx_r);
20516   if (!__pyx_v_have_slices) {
20517   } else {
20518     __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error)
20519     __Pyx_GOTREF(__pyx_t_4);
20520     __pyx_t_3 = __pyx_t_4;
20521     __pyx_t_4 = 0;
20522     goto __pyx_L14_bool_binop_done;
20523   }
20524   __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error)
20525   __Pyx_GOTREF(__pyx_t_4);
20526   __pyx_t_3 = __pyx_t_4;
20527   __pyx_t_4 = 0;
20528   __pyx_L14_bool_binop_done:;
20529   __pyx_t_4 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 694, __pyx_L1_error)
20530   __Pyx_GOTREF(__pyx_t_4);
20531   __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 694, __pyx_L1_error)
20532   __Pyx_GOTREF(__pyx_t_11);
20533   __Pyx_GIVEREF(__pyx_t_3);
20534   PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3);
20535   __Pyx_GIVEREF(__pyx_t_4);
20536   PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
20537   __pyx_t_3 = 0;
20538   __pyx_t_4 = 0;
20539   __pyx_r = ((PyObject*)__pyx_t_11);
20540   __pyx_t_11 = 0;
20541   goto __pyx_L0;
20542 
20543   /* "View.MemoryView":662
20544  *     return isinstance(o, memoryview)
20545  *
20546  * cdef tuple _unellipsify(object index, int ndim):             # <<<<<<<<<<<<<<
20547  *     """
20548  *     Replace all ellipses with full slices and fill incomplete indices with
20549  */
20550 
20551   /* function exit code */
20552   __pyx_L1_error:;
20553   __Pyx_XDECREF(__pyx_t_3);
20554   __Pyx_XDECREF(__pyx_t_4);
20555   __Pyx_XDECREF(__pyx_t_7);
20556   __Pyx_XDECREF(__pyx_t_11);
20557   __Pyx_AddTraceback("View.MemoryView._unellipsify", __pyx_clineno, __pyx_lineno, __pyx_filename);
20558   __pyx_r = 0;
20559   __pyx_L0:;
20560   __Pyx_XDECREF(__pyx_v_tup);
20561   __Pyx_XDECREF(__pyx_v_result);
20562   __Pyx_XDECREF(__pyx_v_idx);
20563   __Pyx_XDECREF(__pyx_v_item);
20564   __Pyx_XGIVEREF(__pyx_r);
20565   __Pyx_RefNannyFinishContext();
20566   return __pyx_r;
20567 }
20568 
20569 /* "View.MemoryView":696
20570  *     return have_slices or nslices, tuple(result)
20571  *
20572  * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):             # <<<<<<<<<<<<<<
20573  *     for suboffset in suboffsets[:ndim]:
20574  *         if suboffset >= 0:
20575  */
20576 
assert_direct_dimensions(Py_ssize_t * __pyx_v_suboffsets,int __pyx_v_ndim)20577 static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ndim) {
20578   Py_ssize_t __pyx_v_suboffset;
20579   PyObject *__pyx_r = NULL;
20580   __Pyx_RefNannyDeclarations
20581   Py_ssize_t *__pyx_t_1;
20582   Py_ssize_t *__pyx_t_2;
20583   Py_ssize_t *__pyx_t_3;
20584   int __pyx_t_4;
20585   PyObject *__pyx_t_5 = NULL;
20586   __Pyx_RefNannySetupContext("assert_direct_dimensions", 0);
20587 
20588   /* "View.MemoryView":697
20589  *
20590  * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
20591  *     for suboffset in suboffsets[:ndim]:             # <<<<<<<<<<<<<<
20592  *         if suboffset >= 0:
20593  *             raise ValueError("Indirect dimensions not supported")
20594  */
20595   __pyx_t_2 = (__pyx_v_suboffsets + __pyx_v_ndim);
20596   for (__pyx_t_3 = __pyx_v_suboffsets; __pyx_t_3 < __pyx_t_2; __pyx_t_3++) {
20597     __pyx_t_1 = __pyx_t_3;
20598     __pyx_v_suboffset = (__pyx_t_1[0]);
20599 
20600     /* "View.MemoryView":698
20601  * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
20602  *     for suboffset in suboffsets[:ndim]:
20603  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
20604  *             raise ValueError("Indirect dimensions not supported")
20605  *
20606  */
20607     __pyx_t_4 = ((__pyx_v_suboffset >= 0) != 0);
20608     if (unlikely(__pyx_t_4)) {
20609 
20610       /* "View.MemoryView":699
20611  *     for suboffset in suboffsets[:ndim]:
20612  *         if suboffset >= 0:
20613  *             raise ValueError("Indirect dimensions not supported")             # <<<<<<<<<<<<<<
20614  *
20615  *
20616  */
20617       __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 699, __pyx_L1_error)
20618       __Pyx_GOTREF(__pyx_t_5);
20619       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
20620       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20621       __PYX_ERR(1, 699, __pyx_L1_error)
20622 
20623       /* "View.MemoryView":698
20624  * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):
20625  *     for suboffset in suboffsets[:ndim]:
20626  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
20627  *             raise ValueError("Indirect dimensions not supported")
20628  *
20629  */
20630     }
20631   }
20632 
20633   /* "View.MemoryView":696
20634  *     return have_slices or nslices, tuple(result)
20635  *
20636  * cdef assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim):             # <<<<<<<<<<<<<<
20637  *     for suboffset in suboffsets[:ndim]:
20638  *         if suboffset >= 0:
20639  */
20640 
20641   /* function exit code */
20642   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
20643   goto __pyx_L0;
20644   __pyx_L1_error:;
20645   __Pyx_XDECREF(__pyx_t_5);
20646   __Pyx_AddTraceback("View.MemoryView.assert_direct_dimensions", __pyx_clineno, __pyx_lineno, __pyx_filename);
20647   __pyx_r = 0;
20648   __pyx_L0:;
20649   __Pyx_XGIVEREF(__pyx_r);
20650   __Pyx_RefNannyFinishContext();
20651   return __pyx_r;
20652 }
20653 
20654 /* "View.MemoryView":706
20655  *
20656  * @cname('__pyx_memview_slice')
20657  * cdef memoryview memview_slice(memoryview memview, object indices):             # <<<<<<<<<<<<<<
20658  *     cdef int new_ndim = 0, suboffset_dim = -1, dim
20659  *     cdef bint negative_step
20660  */
20661 
__pyx_memview_slice(struct __pyx_memoryview_obj * __pyx_v_memview,PyObject * __pyx_v_indices)20662 static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_obj *__pyx_v_memview, PyObject *__pyx_v_indices) {
20663   int __pyx_v_new_ndim;
20664   int __pyx_v_suboffset_dim;
20665   int __pyx_v_dim;
20666   __Pyx_memviewslice __pyx_v_src;
20667   __Pyx_memviewslice __pyx_v_dst;
20668   __Pyx_memviewslice *__pyx_v_p_src;
20669   struct __pyx_memoryviewslice_obj *__pyx_v_memviewsliceobj = 0;
20670   __Pyx_memviewslice *__pyx_v_p_dst;
20671   int *__pyx_v_p_suboffset_dim;
20672   Py_ssize_t __pyx_v_start;
20673   Py_ssize_t __pyx_v_stop;
20674   Py_ssize_t __pyx_v_step;
20675   int __pyx_v_have_start;
20676   int __pyx_v_have_stop;
20677   int __pyx_v_have_step;
20678   PyObject *__pyx_v_index = NULL;
20679   struct __pyx_memoryview_obj *__pyx_r = NULL;
20680   __Pyx_RefNannyDeclarations
20681   int __pyx_t_1;
20682   int __pyx_t_2;
20683   PyObject *__pyx_t_3 = NULL;
20684   struct __pyx_memoryview_obj *__pyx_t_4;
20685   char *__pyx_t_5;
20686   int __pyx_t_6;
20687   Py_ssize_t __pyx_t_7;
20688   PyObject *(*__pyx_t_8)(PyObject *);
20689   PyObject *__pyx_t_9 = NULL;
20690   Py_ssize_t __pyx_t_10;
20691   int __pyx_t_11;
20692   Py_ssize_t __pyx_t_12;
20693   __Pyx_RefNannySetupContext("memview_slice", 0);
20694 
20695   /* "View.MemoryView":707
20696  * @cname('__pyx_memview_slice')
20697  * cdef memoryview memview_slice(memoryview memview, object indices):
20698  *     cdef int new_ndim = 0, suboffset_dim = -1, dim             # <<<<<<<<<<<<<<
20699  *     cdef bint negative_step
20700  *     cdef __Pyx_memviewslice src, dst
20701  */
20702   __pyx_v_new_ndim = 0;
20703   __pyx_v_suboffset_dim = -1;
20704 
20705   /* "View.MemoryView":714
20706  *
20707  *
20708  *     memset(&dst, 0, sizeof(dst))             # <<<<<<<<<<<<<<
20709  *
20710  *     cdef _memoryviewslice memviewsliceobj
20711  */
20712   (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst))));
20713 
20714   /* "View.MemoryView":718
20715  *     cdef _memoryviewslice memviewsliceobj
20716  *
20717  *     assert memview.view.ndim > 0             # <<<<<<<<<<<<<<
20718  *
20719  *     if isinstance(memview, _memoryviewslice):
20720  */
20721   #ifndef CYTHON_WITHOUT_ASSERTIONS
20722   if (unlikely(!Py_OptimizeFlag)) {
20723     if (unlikely(!((__pyx_v_memview->view.ndim > 0) != 0))) {
20724       PyErr_SetNone(PyExc_AssertionError);
20725       __PYX_ERR(1, 718, __pyx_L1_error)
20726     }
20727   }
20728   #endif
20729 
20730   /* "View.MemoryView":720
20731  *     assert memview.view.ndim > 0
20732  *
20733  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
20734  *         memviewsliceobj = memview
20735  *         p_src = &memviewsliceobj.from_slice
20736  */
20737   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type);
20738   __pyx_t_2 = (__pyx_t_1 != 0);
20739   if (__pyx_t_2) {
20740 
20741     /* "View.MemoryView":721
20742  *
20743  *     if isinstance(memview, _memoryviewslice):
20744  *         memviewsliceobj = memview             # <<<<<<<<<<<<<<
20745  *         p_src = &memviewsliceobj.from_slice
20746  *     else:
20747  */
20748     if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 721, __pyx_L1_error)
20749     __pyx_t_3 = ((PyObject *)__pyx_v_memview);
20750     __Pyx_INCREF(__pyx_t_3);
20751     __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3);
20752     __pyx_t_3 = 0;
20753 
20754     /* "View.MemoryView":722
20755  *     if isinstance(memview, _memoryviewslice):
20756  *         memviewsliceobj = memview
20757  *         p_src = &memviewsliceobj.from_slice             # <<<<<<<<<<<<<<
20758  *     else:
20759  *         slice_copy(memview, &src)
20760  */
20761     __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice);
20762 
20763     /* "View.MemoryView":720
20764  *     assert memview.view.ndim > 0
20765  *
20766  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
20767  *         memviewsliceobj = memview
20768  *         p_src = &memviewsliceobj.from_slice
20769  */
20770     goto __pyx_L3;
20771   }
20772 
20773   /* "View.MemoryView":724
20774  *         p_src = &memviewsliceobj.from_slice
20775  *     else:
20776  *         slice_copy(memview, &src)             # <<<<<<<<<<<<<<
20777  *         p_src = &src
20778  *
20779  */
20780   /*else*/ {
20781     __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src));
20782 
20783     /* "View.MemoryView":725
20784  *     else:
20785  *         slice_copy(memview, &src)
20786  *         p_src = &src             # <<<<<<<<<<<<<<
20787  *
20788  *
20789  */
20790     __pyx_v_p_src = (&__pyx_v_src);
20791   }
20792   __pyx_L3:;
20793 
20794   /* "View.MemoryView":731
20795  *
20796  *
20797  *     dst.memview = p_src.memview             # <<<<<<<<<<<<<<
20798  *     dst.data = p_src.data
20799  *
20800  */
20801   __pyx_t_4 = __pyx_v_p_src->memview;
20802   __pyx_v_dst.memview = __pyx_t_4;
20803 
20804   /* "View.MemoryView":732
20805  *
20806  *     dst.memview = p_src.memview
20807  *     dst.data = p_src.data             # <<<<<<<<<<<<<<
20808  *
20809  *
20810  */
20811   __pyx_t_5 = __pyx_v_p_src->data;
20812   __pyx_v_dst.data = __pyx_t_5;
20813 
20814   /* "View.MemoryView":737
20815  *
20816  *
20817  *     cdef __Pyx_memviewslice *p_dst = &dst             # <<<<<<<<<<<<<<
20818  *     cdef int *p_suboffset_dim = &suboffset_dim
20819  *     cdef Py_ssize_t start, stop, step
20820  */
20821   __pyx_v_p_dst = (&__pyx_v_dst);
20822 
20823   /* "View.MemoryView":738
20824  *
20825  *     cdef __Pyx_memviewslice *p_dst = &dst
20826  *     cdef int *p_suboffset_dim = &suboffset_dim             # <<<<<<<<<<<<<<
20827  *     cdef Py_ssize_t start, stop, step
20828  *     cdef bint have_start, have_stop, have_step
20829  */
20830   __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim);
20831 
20832   /* "View.MemoryView":742
20833  *     cdef bint have_start, have_stop, have_step
20834  *
20835  *     for dim, index in enumerate(indices):             # <<<<<<<<<<<<<<
20836  *         if PyIndex_Check(index):
20837  *             slice_memviewslice(
20838  */
20839   __pyx_t_6 = 0;
20840   if (likely(PyList_CheckExact(__pyx_v_indices)) || PyTuple_CheckExact(__pyx_v_indices)) {
20841     __pyx_t_3 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
20842     __pyx_t_8 = NULL;
20843   } else {
20844     __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 742, __pyx_L1_error)
20845     __Pyx_GOTREF(__pyx_t_3);
20846     __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 742, __pyx_L1_error)
20847   }
20848   for (;;) {
20849     if (likely(!__pyx_t_8)) {
20850       if (likely(PyList_CheckExact(__pyx_t_3))) {
20851         if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
20852         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
20853         __pyx_t_9 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 742, __pyx_L1_error)
20854         #else
20855         __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 742, __pyx_L1_error)
20856         __Pyx_GOTREF(__pyx_t_9);
20857         #endif
20858       } else {
20859         if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
20860         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
20861         __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_9); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 742, __pyx_L1_error)
20862         #else
20863         __pyx_t_9 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 742, __pyx_L1_error)
20864         __Pyx_GOTREF(__pyx_t_9);
20865         #endif
20866       }
20867     } else {
20868       __pyx_t_9 = __pyx_t_8(__pyx_t_3);
20869       if (unlikely(!__pyx_t_9)) {
20870         PyObject* exc_type = PyErr_Occurred();
20871         if (exc_type) {
20872           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
20873           else __PYX_ERR(1, 742, __pyx_L1_error)
20874         }
20875         break;
20876       }
20877       __Pyx_GOTREF(__pyx_t_9);
20878     }
20879     __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_9);
20880     __pyx_t_9 = 0;
20881     __pyx_v_dim = __pyx_t_6;
20882     __pyx_t_6 = (__pyx_t_6 + 1);
20883 
20884     /* "View.MemoryView":743
20885  *
20886  *     for dim, index in enumerate(indices):
20887  *         if PyIndex_Check(index):             # <<<<<<<<<<<<<<
20888  *             slice_memviewslice(
20889  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
20890  */
20891     __pyx_t_2 = (PyIndex_Check(__pyx_v_index) != 0);
20892     if (__pyx_t_2) {
20893 
20894       /* "View.MemoryView":747
20895  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
20896  *                 dim, new_ndim, p_suboffset_dim,
20897  *                 index, 0, 0, # start, stop, step             # <<<<<<<<<<<<<<
20898  *                 0, 0, 0, # have_{start,stop,step}
20899  *                 False)
20900  */
20901       __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 747, __pyx_L1_error)
20902 
20903       /* "View.MemoryView":744
20904  *     for dim, index in enumerate(indices):
20905  *         if PyIndex_Check(index):
20906  *             slice_memviewslice(             # <<<<<<<<<<<<<<
20907  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
20908  *                 dim, new_ndim, p_suboffset_dim,
20909  */
20910       __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_t_10, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 744, __pyx_L1_error)
20911 
20912       /* "View.MemoryView":743
20913  *
20914  *     for dim, index in enumerate(indices):
20915  *         if PyIndex_Check(index):             # <<<<<<<<<<<<<<
20916  *             slice_memviewslice(
20917  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
20918  */
20919       goto __pyx_L6;
20920     }
20921 
20922     /* "View.MemoryView":750
20923  *                 0, 0, 0, # have_{start,stop,step}
20924  *                 False)
20925  *         elif index is None:             # <<<<<<<<<<<<<<
20926  *             p_dst.shape[new_ndim] = 1
20927  *             p_dst.strides[new_ndim] = 0
20928  */
20929     __pyx_t_2 = (__pyx_v_index == Py_None);
20930     __pyx_t_1 = (__pyx_t_2 != 0);
20931     if (__pyx_t_1) {
20932 
20933       /* "View.MemoryView":751
20934  *                 False)
20935  *         elif index is None:
20936  *             p_dst.shape[new_ndim] = 1             # <<<<<<<<<<<<<<
20937  *             p_dst.strides[new_ndim] = 0
20938  *             p_dst.suboffsets[new_ndim] = -1
20939  */
20940       (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1;
20941 
20942       /* "View.MemoryView":752
20943  *         elif index is None:
20944  *             p_dst.shape[new_ndim] = 1
20945  *             p_dst.strides[new_ndim] = 0             # <<<<<<<<<<<<<<
20946  *             p_dst.suboffsets[new_ndim] = -1
20947  *             new_ndim += 1
20948  */
20949       (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0;
20950 
20951       /* "View.MemoryView":753
20952  *             p_dst.shape[new_ndim] = 1
20953  *             p_dst.strides[new_ndim] = 0
20954  *             p_dst.suboffsets[new_ndim] = -1             # <<<<<<<<<<<<<<
20955  *             new_ndim += 1
20956  *         else:
20957  */
20958       (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L;
20959 
20960       /* "View.MemoryView":754
20961  *             p_dst.strides[new_ndim] = 0
20962  *             p_dst.suboffsets[new_ndim] = -1
20963  *             new_ndim += 1             # <<<<<<<<<<<<<<
20964  *         else:
20965  *             start = index.start or 0
20966  */
20967       __pyx_v_new_ndim = (__pyx_v_new_ndim + 1);
20968 
20969       /* "View.MemoryView":750
20970  *                 0, 0, 0, # have_{start,stop,step}
20971  *                 False)
20972  *         elif index is None:             # <<<<<<<<<<<<<<
20973  *             p_dst.shape[new_ndim] = 1
20974  *             p_dst.strides[new_ndim] = 0
20975  */
20976       goto __pyx_L6;
20977     }
20978 
20979     /* "View.MemoryView":756
20980  *             new_ndim += 1
20981  *         else:
20982  *             start = index.start or 0             # <<<<<<<<<<<<<<
20983  *             stop = index.stop or 0
20984  *             step = index.step or 0
20985  */
20986     /*else*/ {
20987       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 756, __pyx_L1_error)
20988       __Pyx_GOTREF(__pyx_t_9);
20989       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 756, __pyx_L1_error)
20990       if (!__pyx_t_1) {
20991         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20992       } else {
20993         __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 756, __pyx_L1_error)
20994         __pyx_t_10 = __pyx_t_12;
20995         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
20996         goto __pyx_L7_bool_binop_done;
20997       }
20998       __pyx_t_10 = 0;
20999       __pyx_L7_bool_binop_done:;
21000       __pyx_v_start = __pyx_t_10;
21001 
21002       /* "View.MemoryView":757
21003  *         else:
21004  *             start = index.start or 0
21005  *             stop = index.stop or 0             # <<<<<<<<<<<<<<
21006  *             step = index.step or 0
21007  *
21008  */
21009       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 757, __pyx_L1_error)
21010       __Pyx_GOTREF(__pyx_t_9);
21011       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 757, __pyx_L1_error)
21012       if (!__pyx_t_1) {
21013         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21014       } else {
21015         __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 757, __pyx_L1_error)
21016         __pyx_t_10 = __pyx_t_12;
21017         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21018         goto __pyx_L9_bool_binop_done;
21019       }
21020       __pyx_t_10 = 0;
21021       __pyx_L9_bool_binop_done:;
21022       __pyx_v_stop = __pyx_t_10;
21023 
21024       /* "View.MemoryView":758
21025  *             start = index.start or 0
21026  *             stop = index.stop or 0
21027  *             step = index.step or 0             # <<<<<<<<<<<<<<
21028  *
21029  *             have_start = index.start is not None
21030  */
21031       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 758, __pyx_L1_error)
21032       __Pyx_GOTREF(__pyx_t_9);
21033       __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 758, __pyx_L1_error)
21034       if (!__pyx_t_1) {
21035         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21036       } else {
21037         __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_t_9); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 758, __pyx_L1_error)
21038         __pyx_t_10 = __pyx_t_12;
21039         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21040         goto __pyx_L11_bool_binop_done;
21041       }
21042       __pyx_t_10 = 0;
21043       __pyx_L11_bool_binop_done:;
21044       __pyx_v_step = __pyx_t_10;
21045 
21046       /* "View.MemoryView":760
21047  *             step = index.step or 0
21048  *
21049  *             have_start = index.start is not None             # <<<<<<<<<<<<<<
21050  *             have_stop = index.stop is not None
21051  *             have_step = index.step is not None
21052  */
21053       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_start); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 760, __pyx_L1_error)
21054       __Pyx_GOTREF(__pyx_t_9);
21055       __pyx_t_1 = (__pyx_t_9 != Py_None);
21056       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21057       __pyx_v_have_start = __pyx_t_1;
21058 
21059       /* "View.MemoryView":761
21060  *
21061  *             have_start = index.start is not None
21062  *             have_stop = index.stop is not None             # <<<<<<<<<<<<<<
21063  *             have_step = index.step is not None
21064  *
21065  */
21066       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_stop); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 761, __pyx_L1_error)
21067       __Pyx_GOTREF(__pyx_t_9);
21068       __pyx_t_1 = (__pyx_t_9 != Py_None);
21069       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21070       __pyx_v_have_stop = __pyx_t_1;
21071 
21072       /* "View.MemoryView":762
21073  *             have_start = index.start is not None
21074  *             have_stop = index.stop is not None
21075  *             have_step = index.step is not None             # <<<<<<<<<<<<<<
21076  *
21077  *             slice_memviewslice(
21078  */
21079       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_n_s_step); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 762, __pyx_L1_error)
21080       __Pyx_GOTREF(__pyx_t_9);
21081       __pyx_t_1 = (__pyx_t_9 != Py_None);
21082       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
21083       __pyx_v_have_step = __pyx_t_1;
21084 
21085       /* "View.MemoryView":764
21086  *             have_step = index.step is not None
21087  *
21088  *             slice_memviewslice(             # <<<<<<<<<<<<<<
21089  *                 p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim],
21090  *                 dim, new_ndim, p_suboffset_dim,
21091  */
21092       __pyx_t_11 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 764, __pyx_L1_error)
21093 
21094       /* "View.MemoryView":770
21095  *                 have_start, have_stop, have_step,
21096  *                 True)
21097  *             new_ndim += 1             # <<<<<<<<<<<<<<
21098  *
21099  *     if isinstance(memview, _memoryviewslice):
21100  */
21101       __pyx_v_new_ndim = (__pyx_v_new_ndim + 1);
21102     }
21103     __pyx_L6:;
21104 
21105     /* "View.MemoryView":742
21106  *     cdef bint have_start, have_stop, have_step
21107  *
21108  *     for dim, index in enumerate(indices):             # <<<<<<<<<<<<<<
21109  *         if PyIndex_Check(index):
21110  *             slice_memviewslice(
21111  */
21112   }
21113   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21114 
21115   /* "View.MemoryView":772
21116  *             new_ndim += 1
21117  *
21118  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
21119  *         return memoryview_fromslice(dst, new_ndim,
21120  *                                     memviewsliceobj.to_object_func,
21121  */
21122   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type);
21123   __pyx_t_2 = (__pyx_t_1 != 0);
21124   if (__pyx_t_2) {
21125 
21126     /* "View.MemoryView":773
21127  *
21128  *     if isinstance(memview, _memoryviewslice):
21129  *         return memoryview_fromslice(dst, new_ndim,             # <<<<<<<<<<<<<<
21130  *                                     memviewsliceobj.to_object_func,
21131  *                                     memviewsliceobj.to_dtype_func,
21132  */
21133     __Pyx_XDECREF(((PyObject *)__pyx_r));
21134 
21135     /* "View.MemoryView":774
21136  *     if isinstance(memview, _memoryviewslice):
21137  *         return memoryview_fromslice(dst, new_ndim,
21138  *                                     memviewsliceobj.to_object_func,             # <<<<<<<<<<<<<<
21139  *                                     memviewsliceobj.to_dtype_func,
21140  *                                     memview.dtype_is_object)
21141  */
21142     if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 774, __pyx_L1_error) }
21143 
21144     /* "View.MemoryView":775
21145  *         return memoryview_fromslice(dst, new_ndim,
21146  *                                     memviewsliceobj.to_object_func,
21147  *                                     memviewsliceobj.to_dtype_func,             # <<<<<<<<<<<<<<
21148  *                                     memview.dtype_is_object)
21149  *     else:
21150  */
21151     if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 775, __pyx_L1_error) }
21152 
21153     /* "View.MemoryView":773
21154  *
21155  *     if isinstance(memview, _memoryviewslice):
21156  *         return memoryview_fromslice(dst, new_ndim,             # <<<<<<<<<<<<<<
21157  *                                     memviewsliceobj.to_object_func,
21158  *                                     memviewsliceobj.to_dtype_func,
21159  */
21160     __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 773, __pyx_L1_error)
21161     __Pyx_GOTREF(__pyx_t_3);
21162     if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 773, __pyx_L1_error)
21163     __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3);
21164     __pyx_t_3 = 0;
21165     goto __pyx_L0;
21166 
21167     /* "View.MemoryView":772
21168  *             new_ndim += 1
21169  *
21170  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
21171  *         return memoryview_fromslice(dst, new_ndim,
21172  *                                     memviewsliceobj.to_object_func,
21173  */
21174   }
21175 
21176   /* "View.MemoryView":778
21177  *                                     memview.dtype_is_object)
21178  *     else:
21179  *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,             # <<<<<<<<<<<<<<
21180  *                                     memview.dtype_is_object)
21181  *
21182  */
21183   /*else*/ {
21184     __Pyx_XDECREF(((PyObject *)__pyx_r));
21185 
21186     /* "View.MemoryView":779
21187  *     else:
21188  *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,
21189  *                                     memview.dtype_is_object)             # <<<<<<<<<<<<<<
21190  *
21191  *
21192  */
21193     __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 778, __pyx_L1_error)
21194     __Pyx_GOTREF(__pyx_t_3);
21195 
21196     /* "View.MemoryView":778
21197  *                                     memview.dtype_is_object)
21198  *     else:
21199  *         return memoryview_fromslice(dst, new_ndim, NULL, NULL,             # <<<<<<<<<<<<<<
21200  *                                     memview.dtype_is_object)
21201  *
21202  */
21203     if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_memoryview_type))))) __PYX_ERR(1, 778, __pyx_L1_error)
21204     __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_3);
21205     __pyx_t_3 = 0;
21206     goto __pyx_L0;
21207   }
21208 
21209   /* "View.MemoryView":706
21210  *
21211  * @cname('__pyx_memview_slice')
21212  * cdef memoryview memview_slice(memoryview memview, object indices):             # <<<<<<<<<<<<<<
21213  *     cdef int new_ndim = 0, suboffset_dim = -1, dim
21214  *     cdef bint negative_step
21215  */
21216 
21217   /* function exit code */
21218   __pyx_L1_error:;
21219   __Pyx_XDECREF(__pyx_t_3);
21220   __Pyx_XDECREF(__pyx_t_9);
21221   __Pyx_AddTraceback("View.MemoryView.memview_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
21222   __pyx_r = 0;
21223   __pyx_L0:;
21224   __Pyx_XDECREF((PyObject *)__pyx_v_memviewsliceobj);
21225   __Pyx_XDECREF(__pyx_v_index);
21226   __Pyx_XGIVEREF((PyObject *)__pyx_r);
21227   __Pyx_RefNannyFinishContext();
21228   return __pyx_r;
21229 }
21230 
21231 /* "View.MemoryView":803
21232  *
21233  * @cname('__pyx_memoryview_slice_memviewslice')
21234  * cdef int slice_memviewslice(             # <<<<<<<<<<<<<<
21235  *         __Pyx_memviewslice *dst,
21236  *         Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset,
21237  */
21238 
__pyx_memoryview_slice_memviewslice(__Pyx_memviewslice * __pyx_v_dst,Py_ssize_t __pyx_v_shape,Py_ssize_t __pyx_v_stride,Py_ssize_t __pyx_v_suboffset,int __pyx_v_dim,int __pyx_v_new_ndim,int * __pyx_v_suboffset_dim,Py_ssize_t __pyx_v_start,Py_ssize_t __pyx_v_stop,Py_ssize_t __pyx_v_step,int __pyx_v_have_start,int __pyx_v_have_stop,int __pyx_v_have_step,int __pyx_v_is_slice)21239 static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, Py_ssize_t __pyx_v_shape, Py_ssize_t __pyx_v_stride, Py_ssize_t __pyx_v_suboffset, int __pyx_v_dim, int __pyx_v_new_ndim, int *__pyx_v_suboffset_dim, Py_ssize_t __pyx_v_start, Py_ssize_t __pyx_v_stop, Py_ssize_t __pyx_v_step, int __pyx_v_have_start, int __pyx_v_have_stop, int __pyx_v_have_step, int __pyx_v_is_slice) {
21240   Py_ssize_t __pyx_v_new_shape;
21241   int __pyx_v_negative_step;
21242   int __pyx_r;
21243   int __pyx_t_1;
21244   int __pyx_t_2;
21245   int __pyx_t_3;
21246 
21247   /* "View.MemoryView":823
21248  *     cdef bint negative_step
21249  *
21250  *     if not is_slice:             # <<<<<<<<<<<<<<
21251  *
21252  *         if start < 0:
21253  */
21254   __pyx_t_1 = ((!(__pyx_v_is_slice != 0)) != 0);
21255   if (__pyx_t_1) {
21256 
21257     /* "View.MemoryView":825
21258  *     if not is_slice:
21259  *
21260  *         if start < 0:             # <<<<<<<<<<<<<<
21261  *             start += shape
21262  *         if not 0 <= start < shape:
21263  */
21264     __pyx_t_1 = ((__pyx_v_start < 0) != 0);
21265     if (__pyx_t_1) {
21266 
21267       /* "View.MemoryView":826
21268  *
21269  *         if start < 0:
21270  *             start += shape             # <<<<<<<<<<<<<<
21271  *         if not 0 <= start < shape:
21272  *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)
21273  */
21274       __pyx_v_start = (__pyx_v_start + __pyx_v_shape);
21275 
21276       /* "View.MemoryView":825
21277  *     if not is_slice:
21278  *
21279  *         if start < 0:             # <<<<<<<<<<<<<<
21280  *             start += shape
21281  *         if not 0 <= start < shape:
21282  */
21283     }
21284 
21285     /* "View.MemoryView":827
21286  *         if start < 0:
21287  *             start += shape
21288  *         if not 0 <= start < shape:             # <<<<<<<<<<<<<<
21289  *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)
21290  *     else:
21291  */
21292     __pyx_t_1 = (0 <= __pyx_v_start);
21293     if (__pyx_t_1) {
21294       __pyx_t_1 = (__pyx_v_start < __pyx_v_shape);
21295     }
21296     __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
21297     if (__pyx_t_2) {
21298 
21299       /* "View.MemoryView":828
21300  *             start += shape
21301  *         if not 0 <= start < shape:
21302  *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)             # <<<<<<<<<<<<<<
21303  *     else:
21304  *
21305  */
21306       __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"Index out of bounds (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 828, __pyx_L1_error)
21307 
21308       /* "View.MemoryView":827
21309  *         if start < 0:
21310  *             start += shape
21311  *         if not 0 <= start < shape:             # <<<<<<<<<<<<<<
21312  *             _err_dim(IndexError, "Index out of bounds (axis %d)", dim)
21313  *     else:
21314  */
21315     }
21316 
21317     /* "View.MemoryView":823
21318  *     cdef bint negative_step
21319  *
21320  *     if not is_slice:             # <<<<<<<<<<<<<<
21321  *
21322  *         if start < 0:
21323  */
21324     goto __pyx_L3;
21325   }
21326 
21327   /* "View.MemoryView":831
21328  *     else:
21329  *
21330  *         negative_step = have_step != 0 and step < 0             # <<<<<<<<<<<<<<
21331  *
21332  *         if have_step and step == 0:
21333  */
21334   /*else*/ {
21335     __pyx_t_1 = ((__pyx_v_have_step != 0) != 0);
21336     if (__pyx_t_1) {
21337     } else {
21338       __pyx_t_2 = __pyx_t_1;
21339       goto __pyx_L6_bool_binop_done;
21340     }
21341     __pyx_t_1 = ((__pyx_v_step < 0) != 0);
21342     __pyx_t_2 = __pyx_t_1;
21343     __pyx_L6_bool_binop_done:;
21344     __pyx_v_negative_step = __pyx_t_2;
21345 
21346     /* "View.MemoryView":833
21347  *         negative_step = have_step != 0 and step < 0
21348  *
21349  *         if have_step and step == 0:             # <<<<<<<<<<<<<<
21350  *             _err_dim(ValueError, "Step may not be zero (axis %d)", dim)
21351  *
21352  */
21353     __pyx_t_1 = (__pyx_v_have_step != 0);
21354     if (__pyx_t_1) {
21355     } else {
21356       __pyx_t_2 = __pyx_t_1;
21357       goto __pyx_L9_bool_binop_done;
21358     }
21359     __pyx_t_1 = ((__pyx_v_step == 0) != 0);
21360     __pyx_t_2 = __pyx_t_1;
21361     __pyx_L9_bool_binop_done:;
21362     if (__pyx_t_2) {
21363 
21364       /* "View.MemoryView":834
21365  *
21366  *         if have_step and step == 0:
21367  *             _err_dim(ValueError, "Step may not be zero (axis %d)", dim)             # <<<<<<<<<<<<<<
21368  *
21369  *
21370  */
21371       __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Step may not be zero (axis %d)"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 834, __pyx_L1_error)
21372 
21373       /* "View.MemoryView":833
21374  *         negative_step = have_step != 0 and step < 0
21375  *
21376  *         if have_step and step == 0:             # <<<<<<<<<<<<<<
21377  *             _err_dim(ValueError, "Step may not be zero (axis %d)", dim)
21378  *
21379  */
21380     }
21381 
21382     /* "View.MemoryView":837
21383  *
21384  *
21385  *         if have_start:             # <<<<<<<<<<<<<<
21386  *             if start < 0:
21387  *                 start += shape
21388  */
21389     __pyx_t_2 = (__pyx_v_have_start != 0);
21390     if (__pyx_t_2) {
21391 
21392       /* "View.MemoryView":838
21393  *
21394  *         if have_start:
21395  *             if start < 0:             # <<<<<<<<<<<<<<
21396  *                 start += shape
21397  *                 if start < 0:
21398  */
21399       __pyx_t_2 = ((__pyx_v_start < 0) != 0);
21400       if (__pyx_t_2) {
21401 
21402         /* "View.MemoryView":839
21403  *         if have_start:
21404  *             if start < 0:
21405  *                 start += shape             # <<<<<<<<<<<<<<
21406  *                 if start < 0:
21407  *                     start = 0
21408  */
21409         __pyx_v_start = (__pyx_v_start + __pyx_v_shape);
21410 
21411         /* "View.MemoryView":840
21412  *             if start < 0:
21413  *                 start += shape
21414  *                 if start < 0:             # <<<<<<<<<<<<<<
21415  *                     start = 0
21416  *             elif start >= shape:
21417  */
21418         __pyx_t_2 = ((__pyx_v_start < 0) != 0);
21419         if (__pyx_t_2) {
21420 
21421           /* "View.MemoryView":841
21422  *                 start += shape
21423  *                 if start < 0:
21424  *                     start = 0             # <<<<<<<<<<<<<<
21425  *             elif start >= shape:
21426  *                 if negative_step:
21427  */
21428           __pyx_v_start = 0;
21429 
21430           /* "View.MemoryView":840
21431  *             if start < 0:
21432  *                 start += shape
21433  *                 if start < 0:             # <<<<<<<<<<<<<<
21434  *                     start = 0
21435  *             elif start >= shape:
21436  */
21437         }
21438 
21439         /* "View.MemoryView":838
21440  *
21441  *         if have_start:
21442  *             if start < 0:             # <<<<<<<<<<<<<<
21443  *                 start += shape
21444  *                 if start < 0:
21445  */
21446         goto __pyx_L12;
21447       }
21448 
21449       /* "View.MemoryView":842
21450  *                 if start < 0:
21451  *                     start = 0
21452  *             elif start >= shape:             # <<<<<<<<<<<<<<
21453  *                 if negative_step:
21454  *                     start = shape - 1
21455  */
21456       __pyx_t_2 = ((__pyx_v_start >= __pyx_v_shape) != 0);
21457       if (__pyx_t_2) {
21458 
21459         /* "View.MemoryView":843
21460  *                     start = 0
21461  *             elif start >= shape:
21462  *                 if negative_step:             # <<<<<<<<<<<<<<
21463  *                     start = shape - 1
21464  *                 else:
21465  */
21466         __pyx_t_2 = (__pyx_v_negative_step != 0);
21467         if (__pyx_t_2) {
21468 
21469           /* "View.MemoryView":844
21470  *             elif start >= shape:
21471  *                 if negative_step:
21472  *                     start = shape - 1             # <<<<<<<<<<<<<<
21473  *                 else:
21474  *                     start = shape
21475  */
21476           __pyx_v_start = (__pyx_v_shape - 1);
21477 
21478           /* "View.MemoryView":843
21479  *                     start = 0
21480  *             elif start >= shape:
21481  *                 if negative_step:             # <<<<<<<<<<<<<<
21482  *                     start = shape - 1
21483  *                 else:
21484  */
21485           goto __pyx_L14;
21486         }
21487 
21488         /* "View.MemoryView":846
21489  *                     start = shape - 1
21490  *                 else:
21491  *                     start = shape             # <<<<<<<<<<<<<<
21492  *         else:
21493  *             if negative_step:
21494  */
21495         /*else*/ {
21496           __pyx_v_start = __pyx_v_shape;
21497         }
21498         __pyx_L14:;
21499 
21500         /* "View.MemoryView":842
21501  *                 if start < 0:
21502  *                     start = 0
21503  *             elif start >= shape:             # <<<<<<<<<<<<<<
21504  *                 if negative_step:
21505  *                     start = shape - 1
21506  */
21507       }
21508       __pyx_L12:;
21509 
21510       /* "View.MemoryView":837
21511  *
21512  *
21513  *         if have_start:             # <<<<<<<<<<<<<<
21514  *             if start < 0:
21515  *                 start += shape
21516  */
21517       goto __pyx_L11;
21518     }
21519 
21520     /* "View.MemoryView":848
21521  *                     start = shape
21522  *         else:
21523  *             if negative_step:             # <<<<<<<<<<<<<<
21524  *                 start = shape - 1
21525  *             else:
21526  */
21527     /*else*/ {
21528       __pyx_t_2 = (__pyx_v_negative_step != 0);
21529       if (__pyx_t_2) {
21530 
21531         /* "View.MemoryView":849
21532  *         else:
21533  *             if negative_step:
21534  *                 start = shape - 1             # <<<<<<<<<<<<<<
21535  *             else:
21536  *                 start = 0
21537  */
21538         __pyx_v_start = (__pyx_v_shape - 1);
21539 
21540         /* "View.MemoryView":848
21541  *                     start = shape
21542  *         else:
21543  *             if negative_step:             # <<<<<<<<<<<<<<
21544  *                 start = shape - 1
21545  *             else:
21546  */
21547         goto __pyx_L15;
21548       }
21549 
21550       /* "View.MemoryView":851
21551  *                 start = shape - 1
21552  *             else:
21553  *                 start = 0             # <<<<<<<<<<<<<<
21554  *
21555  *         if have_stop:
21556  */
21557       /*else*/ {
21558         __pyx_v_start = 0;
21559       }
21560       __pyx_L15:;
21561     }
21562     __pyx_L11:;
21563 
21564     /* "View.MemoryView":853
21565  *                 start = 0
21566  *
21567  *         if have_stop:             # <<<<<<<<<<<<<<
21568  *             if stop < 0:
21569  *                 stop += shape
21570  */
21571     __pyx_t_2 = (__pyx_v_have_stop != 0);
21572     if (__pyx_t_2) {
21573 
21574       /* "View.MemoryView":854
21575  *
21576  *         if have_stop:
21577  *             if stop < 0:             # <<<<<<<<<<<<<<
21578  *                 stop += shape
21579  *                 if stop < 0:
21580  */
21581       __pyx_t_2 = ((__pyx_v_stop < 0) != 0);
21582       if (__pyx_t_2) {
21583 
21584         /* "View.MemoryView":855
21585  *         if have_stop:
21586  *             if stop < 0:
21587  *                 stop += shape             # <<<<<<<<<<<<<<
21588  *                 if stop < 0:
21589  *                     stop = 0
21590  */
21591         __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape);
21592 
21593         /* "View.MemoryView":856
21594  *             if stop < 0:
21595  *                 stop += shape
21596  *                 if stop < 0:             # <<<<<<<<<<<<<<
21597  *                     stop = 0
21598  *             elif stop > shape:
21599  */
21600         __pyx_t_2 = ((__pyx_v_stop < 0) != 0);
21601         if (__pyx_t_2) {
21602 
21603           /* "View.MemoryView":857
21604  *                 stop += shape
21605  *                 if stop < 0:
21606  *                     stop = 0             # <<<<<<<<<<<<<<
21607  *             elif stop > shape:
21608  *                 stop = shape
21609  */
21610           __pyx_v_stop = 0;
21611 
21612           /* "View.MemoryView":856
21613  *             if stop < 0:
21614  *                 stop += shape
21615  *                 if stop < 0:             # <<<<<<<<<<<<<<
21616  *                     stop = 0
21617  *             elif stop > shape:
21618  */
21619         }
21620 
21621         /* "View.MemoryView":854
21622  *
21623  *         if have_stop:
21624  *             if stop < 0:             # <<<<<<<<<<<<<<
21625  *                 stop += shape
21626  *                 if stop < 0:
21627  */
21628         goto __pyx_L17;
21629       }
21630 
21631       /* "View.MemoryView":858
21632  *                 if stop < 0:
21633  *                     stop = 0
21634  *             elif stop > shape:             # <<<<<<<<<<<<<<
21635  *                 stop = shape
21636  *         else:
21637  */
21638       __pyx_t_2 = ((__pyx_v_stop > __pyx_v_shape) != 0);
21639       if (__pyx_t_2) {
21640 
21641         /* "View.MemoryView":859
21642  *                     stop = 0
21643  *             elif stop > shape:
21644  *                 stop = shape             # <<<<<<<<<<<<<<
21645  *         else:
21646  *             if negative_step:
21647  */
21648         __pyx_v_stop = __pyx_v_shape;
21649 
21650         /* "View.MemoryView":858
21651  *                 if stop < 0:
21652  *                     stop = 0
21653  *             elif stop > shape:             # <<<<<<<<<<<<<<
21654  *                 stop = shape
21655  *         else:
21656  */
21657       }
21658       __pyx_L17:;
21659 
21660       /* "View.MemoryView":853
21661  *                 start = 0
21662  *
21663  *         if have_stop:             # <<<<<<<<<<<<<<
21664  *             if stop < 0:
21665  *                 stop += shape
21666  */
21667       goto __pyx_L16;
21668     }
21669 
21670     /* "View.MemoryView":861
21671  *                 stop = shape
21672  *         else:
21673  *             if negative_step:             # <<<<<<<<<<<<<<
21674  *                 stop = -1
21675  *             else:
21676  */
21677     /*else*/ {
21678       __pyx_t_2 = (__pyx_v_negative_step != 0);
21679       if (__pyx_t_2) {
21680 
21681         /* "View.MemoryView":862
21682  *         else:
21683  *             if negative_step:
21684  *                 stop = -1             # <<<<<<<<<<<<<<
21685  *             else:
21686  *                 stop = shape
21687  */
21688         __pyx_v_stop = -1L;
21689 
21690         /* "View.MemoryView":861
21691  *                 stop = shape
21692  *         else:
21693  *             if negative_step:             # <<<<<<<<<<<<<<
21694  *                 stop = -1
21695  *             else:
21696  */
21697         goto __pyx_L19;
21698       }
21699 
21700       /* "View.MemoryView":864
21701  *                 stop = -1
21702  *             else:
21703  *                 stop = shape             # <<<<<<<<<<<<<<
21704  *
21705  *         if not have_step:
21706  */
21707       /*else*/ {
21708         __pyx_v_stop = __pyx_v_shape;
21709       }
21710       __pyx_L19:;
21711     }
21712     __pyx_L16:;
21713 
21714     /* "View.MemoryView":866
21715  *                 stop = shape
21716  *
21717  *         if not have_step:             # <<<<<<<<<<<<<<
21718  *             step = 1
21719  *
21720  */
21721     __pyx_t_2 = ((!(__pyx_v_have_step != 0)) != 0);
21722     if (__pyx_t_2) {
21723 
21724       /* "View.MemoryView":867
21725  *
21726  *         if not have_step:
21727  *             step = 1             # <<<<<<<<<<<<<<
21728  *
21729  *
21730  */
21731       __pyx_v_step = 1;
21732 
21733       /* "View.MemoryView":866
21734  *                 stop = shape
21735  *
21736  *         if not have_step:             # <<<<<<<<<<<<<<
21737  *             step = 1
21738  *
21739  */
21740     }
21741 
21742     /* "View.MemoryView":871
21743  *
21744  *         with cython.cdivision(True):
21745  *             new_shape = (stop - start) // step             # <<<<<<<<<<<<<<
21746  *
21747  *             if (stop - start) - step * new_shape:
21748  */
21749     __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step);
21750 
21751     /* "View.MemoryView":873
21752  *             new_shape = (stop - start) // step
21753  *
21754  *             if (stop - start) - step * new_shape:             # <<<<<<<<<<<<<<
21755  *                 new_shape += 1
21756  *
21757  */
21758     __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0);
21759     if (__pyx_t_2) {
21760 
21761       /* "View.MemoryView":874
21762  *
21763  *             if (stop - start) - step * new_shape:
21764  *                 new_shape += 1             # <<<<<<<<<<<<<<
21765  *
21766  *         if new_shape < 0:
21767  */
21768       __pyx_v_new_shape = (__pyx_v_new_shape + 1);
21769 
21770       /* "View.MemoryView":873
21771  *             new_shape = (stop - start) // step
21772  *
21773  *             if (stop - start) - step * new_shape:             # <<<<<<<<<<<<<<
21774  *                 new_shape += 1
21775  *
21776  */
21777     }
21778 
21779     /* "View.MemoryView":876
21780  *                 new_shape += 1
21781  *
21782  *         if new_shape < 0:             # <<<<<<<<<<<<<<
21783  *             new_shape = 0
21784  *
21785  */
21786     __pyx_t_2 = ((__pyx_v_new_shape < 0) != 0);
21787     if (__pyx_t_2) {
21788 
21789       /* "View.MemoryView":877
21790  *
21791  *         if new_shape < 0:
21792  *             new_shape = 0             # <<<<<<<<<<<<<<
21793  *
21794  *
21795  */
21796       __pyx_v_new_shape = 0;
21797 
21798       /* "View.MemoryView":876
21799  *                 new_shape += 1
21800  *
21801  *         if new_shape < 0:             # <<<<<<<<<<<<<<
21802  *             new_shape = 0
21803  *
21804  */
21805     }
21806 
21807     /* "View.MemoryView":880
21808  *
21809  *
21810  *         dst.strides[new_ndim] = stride * step             # <<<<<<<<<<<<<<
21811  *         dst.shape[new_ndim] = new_shape
21812  *         dst.suboffsets[new_ndim] = suboffset
21813  */
21814     (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step);
21815 
21816     /* "View.MemoryView":881
21817  *
21818  *         dst.strides[new_ndim] = stride * step
21819  *         dst.shape[new_ndim] = new_shape             # <<<<<<<<<<<<<<
21820  *         dst.suboffsets[new_ndim] = suboffset
21821  *
21822  */
21823     (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape;
21824 
21825     /* "View.MemoryView":882
21826  *         dst.strides[new_ndim] = stride * step
21827  *         dst.shape[new_ndim] = new_shape
21828  *         dst.suboffsets[new_ndim] = suboffset             # <<<<<<<<<<<<<<
21829  *
21830  *
21831  */
21832     (__pyx_v_dst->suboffsets[__pyx_v_new_ndim]) = __pyx_v_suboffset;
21833   }
21834   __pyx_L3:;
21835 
21836   /* "View.MemoryView":885
21837  *
21838  *
21839  *     if suboffset_dim[0] < 0:             # <<<<<<<<<<<<<<
21840  *         dst.data += start * stride
21841  *     else:
21842  */
21843   __pyx_t_2 = (((__pyx_v_suboffset_dim[0]) < 0) != 0);
21844   if (__pyx_t_2) {
21845 
21846     /* "View.MemoryView":886
21847  *
21848  *     if suboffset_dim[0] < 0:
21849  *         dst.data += start * stride             # <<<<<<<<<<<<<<
21850  *     else:
21851  *         dst.suboffsets[suboffset_dim[0]] += start * stride
21852  */
21853     __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride));
21854 
21855     /* "View.MemoryView":885
21856  *
21857  *
21858  *     if suboffset_dim[0] < 0:             # <<<<<<<<<<<<<<
21859  *         dst.data += start * stride
21860  *     else:
21861  */
21862     goto __pyx_L23;
21863   }
21864 
21865   /* "View.MemoryView":888
21866  *         dst.data += start * stride
21867  *     else:
21868  *         dst.suboffsets[suboffset_dim[0]] += start * stride             # <<<<<<<<<<<<<<
21869  *
21870  *     if suboffset >= 0:
21871  */
21872   /*else*/ {
21873     __pyx_t_3 = (__pyx_v_suboffset_dim[0]);
21874     (__pyx_v_dst->suboffsets[__pyx_t_3]) = ((__pyx_v_dst->suboffsets[__pyx_t_3]) + (__pyx_v_start * __pyx_v_stride));
21875   }
21876   __pyx_L23:;
21877 
21878   /* "View.MemoryView":890
21879  *         dst.suboffsets[suboffset_dim[0]] += start * stride
21880  *
21881  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
21882  *         if not is_slice:
21883  *             if new_ndim == 0:
21884  */
21885   __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0);
21886   if (__pyx_t_2) {
21887 
21888     /* "View.MemoryView":891
21889  *
21890  *     if suboffset >= 0:
21891  *         if not is_slice:             # <<<<<<<<<<<<<<
21892  *             if new_ndim == 0:
21893  *                 dst.data = (<char **> dst.data)[0] + suboffset
21894  */
21895     __pyx_t_2 = ((!(__pyx_v_is_slice != 0)) != 0);
21896     if (__pyx_t_2) {
21897 
21898       /* "View.MemoryView":892
21899  *     if suboffset >= 0:
21900  *         if not is_slice:
21901  *             if new_ndim == 0:             # <<<<<<<<<<<<<<
21902  *                 dst.data = (<char **> dst.data)[0] + suboffset
21903  *             else:
21904  */
21905       __pyx_t_2 = ((__pyx_v_new_ndim == 0) != 0);
21906       if (__pyx_t_2) {
21907 
21908         /* "View.MemoryView":893
21909  *         if not is_slice:
21910  *             if new_ndim == 0:
21911  *                 dst.data = (<char **> dst.data)[0] + suboffset             # <<<<<<<<<<<<<<
21912  *             else:
21913  *                 _err_dim(IndexError, "All dimensions preceding dimension %d "
21914  */
21915         __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset);
21916 
21917         /* "View.MemoryView":892
21918  *     if suboffset >= 0:
21919  *         if not is_slice:
21920  *             if new_ndim == 0:             # <<<<<<<<<<<<<<
21921  *                 dst.data = (<char **> dst.data)[0] + suboffset
21922  *             else:
21923  */
21924         goto __pyx_L26;
21925       }
21926 
21927       /* "View.MemoryView":895
21928  *                 dst.data = (<char **> dst.data)[0] + suboffset
21929  *             else:
21930  *                 _err_dim(IndexError, "All dimensions preceding dimension %d "             # <<<<<<<<<<<<<<
21931  *                                      "must be indexed and not sliced", dim)
21932  *         else:
21933  */
21934       /*else*/ {
21935 
21936         /* "View.MemoryView":896
21937  *             else:
21938  *                 _err_dim(IndexError, "All dimensions preceding dimension %d "
21939  *                                      "must be indexed and not sliced", dim)             # <<<<<<<<<<<<<<
21940  *         else:
21941  *             suboffset_dim[0] = new_ndim
21942  */
21943         __pyx_t_3 = __pyx_memoryview_err_dim(__pyx_builtin_IndexError, ((char *)"All dimensions preceding dimension %d must be indexed and not sliced"), __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 895, __pyx_L1_error)
21944       }
21945       __pyx_L26:;
21946 
21947       /* "View.MemoryView":891
21948  *
21949  *     if suboffset >= 0:
21950  *         if not is_slice:             # <<<<<<<<<<<<<<
21951  *             if new_ndim == 0:
21952  *                 dst.data = (<char **> dst.data)[0] + suboffset
21953  */
21954       goto __pyx_L25;
21955     }
21956 
21957     /* "View.MemoryView":898
21958  *                                      "must be indexed and not sliced", dim)
21959  *         else:
21960  *             suboffset_dim[0] = new_ndim             # <<<<<<<<<<<<<<
21961  *
21962  *     return 0
21963  */
21964     /*else*/ {
21965       (__pyx_v_suboffset_dim[0]) = __pyx_v_new_ndim;
21966     }
21967     __pyx_L25:;
21968 
21969     /* "View.MemoryView":890
21970  *         dst.suboffsets[suboffset_dim[0]] += start * stride
21971  *
21972  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
21973  *         if not is_slice:
21974  *             if new_ndim == 0:
21975  */
21976   }
21977 
21978   /* "View.MemoryView":900
21979  *             suboffset_dim[0] = new_ndim
21980  *
21981  *     return 0             # <<<<<<<<<<<<<<
21982  *
21983  *
21984  */
21985   __pyx_r = 0;
21986   goto __pyx_L0;
21987 
21988   /* "View.MemoryView":803
21989  *
21990  * @cname('__pyx_memoryview_slice_memviewslice')
21991  * cdef int slice_memviewslice(             # <<<<<<<<<<<<<<
21992  *         __Pyx_memviewslice *dst,
21993  *         Py_ssize_t shape, Py_ssize_t stride, Py_ssize_t suboffset,
21994  */
21995 
21996   /* function exit code */
21997   __pyx_L1_error:;
21998   {
21999     #ifdef WITH_THREAD
22000     PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
22001     #endif
22002     __Pyx_AddTraceback("View.MemoryView.slice_memviewslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
22003     #ifdef WITH_THREAD
22004     __Pyx_PyGILState_Release(__pyx_gilstate_save);
22005     #endif
22006   }
22007   __pyx_r = -1;
22008   __pyx_L0:;
22009   return __pyx_r;
22010 }
22011 
22012 /* "View.MemoryView":906
22013  *
22014  * @cname('__pyx_pybuffer_index')
22015  * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,             # <<<<<<<<<<<<<<
22016  *                           Py_ssize_t dim) except NULL:
22017  *     cdef Py_ssize_t shape, stride, suboffset = -1
22018  */
22019 
__pyx_pybuffer_index(Py_buffer * __pyx_v_view,char * __pyx_v_bufp,Py_ssize_t __pyx_v_index,Py_ssize_t __pyx_v_dim)22020 static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, Py_ssize_t __pyx_v_index, Py_ssize_t __pyx_v_dim) {
22021   Py_ssize_t __pyx_v_shape;
22022   Py_ssize_t __pyx_v_stride;
22023   Py_ssize_t __pyx_v_suboffset;
22024   Py_ssize_t __pyx_v_itemsize;
22025   char *__pyx_v_resultp;
22026   char *__pyx_r;
22027   __Pyx_RefNannyDeclarations
22028   Py_ssize_t __pyx_t_1;
22029   int __pyx_t_2;
22030   PyObject *__pyx_t_3 = NULL;
22031   PyObject *__pyx_t_4 = NULL;
22032   __Pyx_RefNannySetupContext("pybuffer_index", 0);
22033 
22034   /* "View.MemoryView":908
22035  * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,
22036  *                           Py_ssize_t dim) except NULL:
22037  *     cdef Py_ssize_t shape, stride, suboffset = -1             # <<<<<<<<<<<<<<
22038  *     cdef Py_ssize_t itemsize = view.itemsize
22039  *     cdef char *resultp
22040  */
22041   __pyx_v_suboffset = -1L;
22042 
22043   /* "View.MemoryView":909
22044  *                           Py_ssize_t dim) except NULL:
22045  *     cdef Py_ssize_t shape, stride, suboffset = -1
22046  *     cdef Py_ssize_t itemsize = view.itemsize             # <<<<<<<<<<<<<<
22047  *     cdef char *resultp
22048  *
22049  */
22050   __pyx_t_1 = __pyx_v_view->itemsize;
22051   __pyx_v_itemsize = __pyx_t_1;
22052 
22053   /* "View.MemoryView":912
22054  *     cdef char *resultp
22055  *
22056  *     if view.ndim == 0:             # <<<<<<<<<<<<<<
22057  *         shape = view.len / itemsize
22058  *         stride = itemsize
22059  */
22060   __pyx_t_2 = ((__pyx_v_view->ndim == 0) != 0);
22061   if (__pyx_t_2) {
22062 
22063     /* "View.MemoryView":913
22064  *
22065  *     if view.ndim == 0:
22066  *         shape = view.len / itemsize             # <<<<<<<<<<<<<<
22067  *         stride = itemsize
22068  *     else:
22069  */
22070     if (unlikely(__pyx_v_itemsize == 0)) {
22071       PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
22072       __PYX_ERR(1, 913, __pyx_L1_error)
22073     }
22074     else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) {
22075       PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
22076       __PYX_ERR(1, 913, __pyx_L1_error)
22077     }
22078     __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize);
22079 
22080     /* "View.MemoryView":914
22081  *     if view.ndim == 0:
22082  *         shape = view.len / itemsize
22083  *         stride = itemsize             # <<<<<<<<<<<<<<
22084  *     else:
22085  *         shape = view.shape[dim]
22086  */
22087     __pyx_v_stride = __pyx_v_itemsize;
22088 
22089     /* "View.MemoryView":912
22090  *     cdef char *resultp
22091  *
22092  *     if view.ndim == 0:             # <<<<<<<<<<<<<<
22093  *         shape = view.len / itemsize
22094  *         stride = itemsize
22095  */
22096     goto __pyx_L3;
22097   }
22098 
22099   /* "View.MemoryView":916
22100  *         stride = itemsize
22101  *     else:
22102  *         shape = view.shape[dim]             # <<<<<<<<<<<<<<
22103  *         stride = view.strides[dim]
22104  *         if view.suboffsets != NULL:
22105  */
22106   /*else*/ {
22107     __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]);
22108 
22109     /* "View.MemoryView":917
22110  *     else:
22111  *         shape = view.shape[dim]
22112  *         stride = view.strides[dim]             # <<<<<<<<<<<<<<
22113  *         if view.suboffsets != NULL:
22114  *             suboffset = view.suboffsets[dim]
22115  */
22116     __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]);
22117 
22118     /* "View.MemoryView":918
22119  *         shape = view.shape[dim]
22120  *         stride = view.strides[dim]
22121  *         if view.suboffsets != NULL:             # <<<<<<<<<<<<<<
22122  *             suboffset = view.suboffsets[dim]
22123  *
22124  */
22125     __pyx_t_2 = ((__pyx_v_view->suboffsets != NULL) != 0);
22126     if (__pyx_t_2) {
22127 
22128       /* "View.MemoryView":919
22129  *         stride = view.strides[dim]
22130  *         if view.suboffsets != NULL:
22131  *             suboffset = view.suboffsets[dim]             # <<<<<<<<<<<<<<
22132  *
22133  *     if index < 0:
22134  */
22135       __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]);
22136 
22137       /* "View.MemoryView":918
22138  *         shape = view.shape[dim]
22139  *         stride = view.strides[dim]
22140  *         if view.suboffsets != NULL:             # <<<<<<<<<<<<<<
22141  *             suboffset = view.suboffsets[dim]
22142  *
22143  */
22144     }
22145   }
22146   __pyx_L3:;
22147 
22148   /* "View.MemoryView":921
22149  *             suboffset = view.suboffsets[dim]
22150  *
22151  *     if index < 0:             # <<<<<<<<<<<<<<
22152  *         index += view.shape[dim]
22153  *         if index < 0:
22154  */
22155   __pyx_t_2 = ((__pyx_v_index < 0) != 0);
22156   if (__pyx_t_2) {
22157 
22158     /* "View.MemoryView":922
22159  *
22160  *     if index < 0:
22161  *         index += view.shape[dim]             # <<<<<<<<<<<<<<
22162  *         if index < 0:
22163  *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22164  */
22165     __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim]));
22166 
22167     /* "View.MemoryView":923
22168  *     if index < 0:
22169  *         index += view.shape[dim]
22170  *         if index < 0:             # <<<<<<<<<<<<<<
22171  *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22172  *
22173  */
22174     __pyx_t_2 = ((__pyx_v_index < 0) != 0);
22175     if (unlikely(__pyx_t_2)) {
22176 
22177       /* "View.MemoryView":924
22178  *         index += view.shape[dim]
22179  *         if index < 0:
22180  *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)             # <<<<<<<<<<<<<<
22181  *
22182  *     if index >= shape:
22183  */
22184       __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 924, __pyx_L1_error)
22185       __Pyx_GOTREF(__pyx_t_3);
22186       __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 924, __pyx_L1_error)
22187       __Pyx_GOTREF(__pyx_t_4);
22188       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22189       __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 924, __pyx_L1_error)
22190       __Pyx_GOTREF(__pyx_t_3);
22191       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22192       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
22193       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22194       __PYX_ERR(1, 924, __pyx_L1_error)
22195 
22196       /* "View.MemoryView":923
22197  *     if index < 0:
22198  *         index += view.shape[dim]
22199  *         if index < 0:             # <<<<<<<<<<<<<<
22200  *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22201  *
22202  */
22203     }
22204 
22205     /* "View.MemoryView":921
22206  *             suboffset = view.suboffsets[dim]
22207  *
22208  *     if index < 0:             # <<<<<<<<<<<<<<
22209  *         index += view.shape[dim]
22210  *         if index < 0:
22211  */
22212   }
22213 
22214   /* "View.MemoryView":926
22215  *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22216  *
22217  *     if index >= shape:             # <<<<<<<<<<<<<<
22218  *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22219  *
22220  */
22221   __pyx_t_2 = ((__pyx_v_index >= __pyx_v_shape) != 0);
22222   if (unlikely(__pyx_t_2)) {
22223 
22224     /* "View.MemoryView":927
22225  *
22226  *     if index >= shape:
22227  *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)             # <<<<<<<<<<<<<<
22228  *
22229  *     resultp = bufp + index * stride
22230  */
22231     __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 927, __pyx_L1_error)
22232     __Pyx_GOTREF(__pyx_t_3);
22233     __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 927, __pyx_L1_error)
22234     __Pyx_GOTREF(__pyx_t_4);
22235     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22236     __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_IndexError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 927, __pyx_L1_error)
22237     __Pyx_GOTREF(__pyx_t_3);
22238     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22239     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
22240     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22241     __PYX_ERR(1, 927, __pyx_L1_error)
22242 
22243     /* "View.MemoryView":926
22244  *             raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22245  *
22246  *     if index >= shape:             # <<<<<<<<<<<<<<
22247  *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22248  *
22249  */
22250   }
22251 
22252   /* "View.MemoryView":929
22253  *         raise IndexError("Out of bounds on buffer access (axis %d)" % dim)
22254  *
22255  *     resultp = bufp + index * stride             # <<<<<<<<<<<<<<
22256  *     if suboffset >= 0:
22257  *         resultp = (<char **> resultp)[0] + suboffset
22258  */
22259   __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride));
22260 
22261   /* "View.MemoryView":930
22262  *
22263  *     resultp = bufp + index * stride
22264  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
22265  *         resultp = (<char **> resultp)[0] + suboffset
22266  *
22267  */
22268   __pyx_t_2 = ((__pyx_v_suboffset >= 0) != 0);
22269   if (__pyx_t_2) {
22270 
22271     /* "View.MemoryView":931
22272  *     resultp = bufp + index * stride
22273  *     if suboffset >= 0:
22274  *         resultp = (<char **> resultp)[0] + suboffset             # <<<<<<<<<<<<<<
22275  *
22276  *     return resultp
22277  */
22278     __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset);
22279 
22280     /* "View.MemoryView":930
22281  *
22282  *     resultp = bufp + index * stride
22283  *     if suboffset >= 0:             # <<<<<<<<<<<<<<
22284  *         resultp = (<char **> resultp)[0] + suboffset
22285  *
22286  */
22287   }
22288 
22289   /* "View.MemoryView":933
22290  *         resultp = (<char **> resultp)[0] + suboffset
22291  *
22292  *     return resultp             # <<<<<<<<<<<<<<
22293  *
22294  *
22295  */
22296   __pyx_r = __pyx_v_resultp;
22297   goto __pyx_L0;
22298 
22299   /* "View.MemoryView":906
22300  *
22301  * @cname('__pyx_pybuffer_index')
22302  * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index,             # <<<<<<<<<<<<<<
22303  *                           Py_ssize_t dim) except NULL:
22304  *     cdef Py_ssize_t shape, stride, suboffset = -1
22305  */
22306 
22307   /* function exit code */
22308   __pyx_L1_error:;
22309   __Pyx_XDECREF(__pyx_t_3);
22310   __Pyx_XDECREF(__pyx_t_4);
22311   __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
22312   __pyx_r = NULL;
22313   __pyx_L0:;
22314   __Pyx_RefNannyFinishContext();
22315   return __pyx_r;
22316 }
22317 
22318 /* "View.MemoryView":939
22319  *
22320  * @cname('__pyx_memslice_transpose')
22321  * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0:             # <<<<<<<<<<<<<<
22322  *     cdef int ndim = memslice.memview.view.ndim
22323  *
22324  */
22325 
__pyx_memslice_transpose(__Pyx_memviewslice * __pyx_v_memslice)22326 static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) {
22327   int __pyx_v_ndim;
22328   Py_ssize_t *__pyx_v_shape;
22329   Py_ssize_t *__pyx_v_strides;
22330   int __pyx_v_i;
22331   int __pyx_v_j;
22332   int __pyx_r;
22333   int __pyx_t_1;
22334   Py_ssize_t *__pyx_t_2;
22335   long __pyx_t_3;
22336   long __pyx_t_4;
22337   Py_ssize_t __pyx_t_5;
22338   Py_ssize_t __pyx_t_6;
22339   int __pyx_t_7;
22340   int __pyx_t_8;
22341   int __pyx_t_9;
22342 
22343   /* "View.MemoryView":940
22344  * @cname('__pyx_memslice_transpose')
22345  * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0:
22346  *     cdef int ndim = memslice.memview.view.ndim             # <<<<<<<<<<<<<<
22347  *
22348  *     cdef Py_ssize_t *shape = memslice.shape
22349  */
22350   __pyx_t_1 = __pyx_v_memslice->memview->view.ndim;
22351   __pyx_v_ndim = __pyx_t_1;
22352 
22353   /* "View.MemoryView":942
22354  *     cdef int ndim = memslice.memview.view.ndim
22355  *
22356  *     cdef Py_ssize_t *shape = memslice.shape             # <<<<<<<<<<<<<<
22357  *     cdef Py_ssize_t *strides = memslice.strides
22358  *
22359  */
22360   __pyx_t_2 = __pyx_v_memslice->shape;
22361   __pyx_v_shape = __pyx_t_2;
22362 
22363   /* "View.MemoryView":943
22364  *
22365  *     cdef Py_ssize_t *shape = memslice.shape
22366  *     cdef Py_ssize_t *strides = memslice.strides             # <<<<<<<<<<<<<<
22367  *
22368  *
22369  */
22370   __pyx_t_2 = __pyx_v_memslice->strides;
22371   __pyx_v_strides = __pyx_t_2;
22372 
22373   /* "View.MemoryView":947
22374  *
22375  *     cdef int i, j
22376  *     for i in range(ndim / 2):             # <<<<<<<<<<<<<<
22377  *         j = ndim - 1 - i
22378  *         strides[i], strides[j] = strides[j], strides[i]
22379  */
22380   __pyx_t_3 = __Pyx_div_long(__pyx_v_ndim, 2);
22381   __pyx_t_4 = __pyx_t_3;
22382   for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) {
22383     __pyx_v_i = __pyx_t_1;
22384 
22385     /* "View.MemoryView":948
22386  *     cdef int i, j
22387  *     for i in range(ndim / 2):
22388  *         j = ndim - 1 - i             # <<<<<<<<<<<<<<
22389  *         strides[i], strides[j] = strides[j], strides[i]
22390  *         shape[i], shape[j] = shape[j], shape[i]
22391  */
22392     __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i);
22393 
22394     /* "View.MemoryView":949
22395  *     for i in range(ndim / 2):
22396  *         j = ndim - 1 - i
22397  *         strides[i], strides[j] = strides[j], strides[i]             # <<<<<<<<<<<<<<
22398  *         shape[i], shape[j] = shape[j], shape[i]
22399  *
22400  */
22401     __pyx_t_5 = (__pyx_v_strides[__pyx_v_j]);
22402     __pyx_t_6 = (__pyx_v_strides[__pyx_v_i]);
22403     (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5;
22404     (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6;
22405 
22406     /* "View.MemoryView":950
22407  *         j = ndim - 1 - i
22408  *         strides[i], strides[j] = strides[j], strides[i]
22409  *         shape[i], shape[j] = shape[j], shape[i]             # <<<<<<<<<<<<<<
22410  *
22411  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:
22412  */
22413     __pyx_t_6 = (__pyx_v_shape[__pyx_v_j]);
22414     __pyx_t_5 = (__pyx_v_shape[__pyx_v_i]);
22415     (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6;
22416     (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5;
22417 
22418     /* "View.MemoryView":952
22419  *         shape[i], shape[j] = shape[j], shape[i]
22420  *
22421  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:             # <<<<<<<<<<<<<<
22422  *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")
22423  *
22424  */
22425     __pyx_t_8 = (((__pyx_v_memslice->suboffsets[__pyx_v_i]) >= 0) != 0);
22426     if (!__pyx_t_8) {
22427     } else {
22428       __pyx_t_7 = __pyx_t_8;
22429       goto __pyx_L6_bool_binop_done;
22430     }
22431     __pyx_t_8 = (((__pyx_v_memslice->suboffsets[__pyx_v_j]) >= 0) != 0);
22432     __pyx_t_7 = __pyx_t_8;
22433     __pyx_L6_bool_binop_done:;
22434     if (__pyx_t_7) {
22435 
22436       /* "View.MemoryView":953
22437  *
22438  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:
22439  *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")             # <<<<<<<<<<<<<<
22440  *
22441  *     return 1
22442  */
22443       __pyx_t_9 = __pyx_memoryview_err(__pyx_builtin_ValueError, ((char *)"Cannot transpose memoryview with indirect dimensions")); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 953, __pyx_L1_error)
22444 
22445       /* "View.MemoryView":952
22446  *         shape[i], shape[j] = shape[j], shape[i]
22447  *
22448  *         if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0:             # <<<<<<<<<<<<<<
22449  *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")
22450  *
22451  */
22452     }
22453   }
22454 
22455   /* "View.MemoryView":955
22456  *             _err(ValueError, "Cannot transpose memoryview with indirect dimensions")
22457  *
22458  *     return 1             # <<<<<<<<<<<<<<
22459  *
22460  *
22461  */
22462   __pyx_r = 1;
22463   goto __pyx_L0;
22464 
22465   /* "View.MemoryView":939
22466  *
22467  * @cname('__pyx_memslice_transpose')
22468  * cdef int transpose_memslice(__Pyx_memviewslice *memslice) nogil except 0:             # <<<<<<<<<<<<<<
22469  *     cdef int ndim = memslice.memview.view.ndim
22470  *
22471  */
22472 
22473   /* function exit code */
22474   __pyx_L1_error:;
22475   {
22476     #ifdef WITH_THREAD
22477     PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
22478     #endif
22479     __Pyx_AddTraceback("View.MemoryView.transpose_memslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
22480     #ifdef WITH_THREAD
22481     __Pyx_PyGILState_Release(__pyx_gilstate_save);
22482     #endif
22483   }
22484   __pyx_r = 0;
22485   __pyx_L0:;
22486   return __pyx_r;
22487 }
22488 
22489 /* "View.MemoryView":972
22490  *     cdef int (*to_dtype_func)(char *, object) except 0
22491  *
22492  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
22493  *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
22494  *
22495  */
22496 
22497 /* Python wrapper */
22498 static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_memoryviewslice___dealloc__(PyObject * __pyx_v_self)22499 static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) {
22500   __Pyx_RefNannyDeclarations
22501   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
22502   __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));
22503 
22504   /* function exit code */
22505   __Pyx_RefNannyFinishContext();
22506 }
22507 
__pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj * __pyx_v_self)22508 static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) {
22509   __Pyx_RefNannyDeclarations
22510   __Pyx_RefNannySetupContext("__dealloc__", 0);
22511 
22512   /* "View.MemoryView":973
22513  *
22514  *     def __dealloc__(self):
22515  *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)             # <<<<<<<<<<<<<<
22516  *
22517  *     cdef convert_item_to_object(self, char *itemp):
22518  */
22519   __PYX_XDEC_MEMVIEW((&__pyx_v_self->from_slice), 1);
22520 
22521   /* "View.MemoryView":972
22522  *     cdef int (*to_dtype_func)(char *, object) except 0
22523  *
22524  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
22525  *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
22526  *
22527  */
22528 
22529   /* function exit code */
22530   __Pyx_RefNannyFinishContext();
22531 }
22532 
22533 /* "View.MemoryView":975
22534  *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
22535  *
22536  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
22537  *         if self.to_object_func != NULL:
22538  *             return self.to_object_func(itemp)
22539  */
22540 
__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj * __pyx_v_self,char * __pyx_v_itemp)22541 static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp) {
22542   PyObject *__pyx_r = NULL;
22543   __Pyx_RefNannyDeclarations
22544   int __pyx_t_1;
22545   PyObject *__pyx_t_2 = NULL;
22546   __Pyx_RefNannySetupContext("convert_item_to_object", 0);
22547 
22548   /* "View.MemoryView":976
22549  *
22550  *     cdef convert_item_to_object(self, char *itemp):
22551  *         if self.to_object_func != NULL:             # <<<<<<<<<<<<<<
22552  *             return self.to_object_func(itemp)
22553  *         else:
22554  */
22555   __pyx_t_1 = ((__pyx_v_self->to_object_func != NULL) != 0);
22556   if (__pyx_t_1) {
22557 
22558     /* "View.MemoryView":977
22559  *     cdef convert_item_to_object(self, char *itemp):
22560  *         if self.to_object_func != NULL:
22561  *             return self.to_object_func(itemp)             # <<<<<<<<<<<<<<
22562  *         else:
22563  *             return memoryview.convert_item_to_object(self, itemp)
22564  */
22565     __Pyx_XDECREF(__pyx_r);
22566     __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 977, __pyx_L1_error)
22567     __Pyx_GOTREF(__pyx_t_2);
22568     __pyx_r = __pyx_t_2;
22569     __pyx_t_2 = 0;
22570     goto __pyx_L0;
22571 
22572     /* "View.MemoryView":976
22573  *
22574  *     cdef convert_item_to_object(self, char *itemp):
22575  *         if self.to_object_func != NULL:             # <<<<<<<<<<<<<<
22576  *             return self.to_object_func(itemp)
22577  *         else:
22578  */
22579   }
22580 
22581   /* "View.MemoryView":979
22582  *             return self.to_object_func(itemp)
22583  *         else:
22584  *             return memoryview.convert_item_to_object(self, itemp)             # <<<<<<<<<<<<<<
22585  *
22586  *     cdef assign_item_from_object(self, char *itemp, object value):
22587  */
22588   /*else*/ {
22589     __Pyx_XDECREF(__pyx_r);
22590     __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 979, __pyx_L1_error)
22591     __Pyx_GOTREF(__pyx_t_2);
22592     __pyx_r = __pyx_t_2;
22593     __pyx_t_2 = 0;
22594     goto __pyx_L0;
22595   }
22596 
22597   /* "View.MemoryView":975
22598  *         __PYX_XDEC_MEMVIEW(&self.from_slice, 1)
22599  *
22600  *     cdef convert_item_to_object(self, char *itemp):             # <<<<<<<<<<<<<<
22601  *         if self.to_object_func != NULL:
22602  *             return self.to_object_func(itemp)
22603  */
22604 
22605   /* function exit code */
22606   __pyx_L1_error:;
22607   __Pyx_XDECREF(__pyx_t_2);
22608   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
22609   __pyx_r = 0;
22610   __pyx_L0:;
22611   __Pyx_XGIVEREF(__pyx_r);
22612   __Pyx_RefNannyFinishContext();
22613   return __pyx_r;
22614 }
22615 
22616 /* "View.MemoryView":981
22617  *             return memoryview.convert_item_to_object(self, itemp)
22618  *
22619  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
22620  *         if self.to_dtype_func != NULL:
22621  *             self.to_dtype_func(itemp, value)
22622  */
22623 
__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj * __pyx_v_self,char * __pyx_v_itemp,PyObject * __pyx_v_value)22624 static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memoryviewslice_obj *__pyx_v_self, char *__pyx_v_itemp, PyObject *__pyx_v_value) {
22625   PyObject *__pyx_r = NULL;
22626   __Pyx_RefNannyDeclarations
22627   int __pyx_t_1;
22628   int __pyx_t_2;
22629   PyObject *__pyx_t_3 = NULL;
22630   __Pyx_RefNannySetupContext("assign_item_from_object", 0);
22631 
22632   /* "View.MemoryView":982
22633  *
22634  *     cdef assign_item_from_object(self, char *itemp, object value):
22635  *         if self.to_dtype_func != NULL:             # <<<<<<<<<<<<<<
22636  *             self.to_dtype_func(itemp, value)
22637  *         else:
22638  */
22639   __pyx_t_1 = ((__pyx_v_self->to_dtype_func != NULL) != 0);
22640   if (__pyx_t_1) {
22641 
22642     /* "View.MemoryView":983
22643  *     cdef assign_item_from_object(self, char *itemp, object value):
22644  *         if self.to_dtype_func != NULL:
22645  *             self.to_dtype_func(itemp, value)             # <<<<<<<<<<<<<<
22646  *         else:
22647  *             memoryview.assign_item_from_object(self, itemp, value)
22648  */
22649     __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 983, __pyx_L1_error)
22650 
22651     /* "View.MemoryView":982
22652  *
22653  *     cdef assign_item_from_object(self, char *itemp, object value):
22654  *         if self.to_dtype_func != NULL:             # <<<<<<<<<<<<<<
22655  *             self.to_dtype_func(itemp, value)
22656  *         else:
22657  */
22658     goto __pyx_L3;
22659   }
22660 
22661   /* "View.MemoryView":985
22662  *             self.to_dtype_func(itemp, value)
22663  *         else:
22664  *             memoryview.assign_item_from_object(self, itemp, value)             # <<<<<<<<<<<<<<
22665  *
22666  *     @property
22667  */
22668   /*else*/ {
22669     __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 985, __pyx_L1_error)
22670     __Pyx_GOTREF(__pyx_t_3);
22671     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22672   }
22673   __pyx_L3:;
22674 
22675   /* "View.MemoryView":981
22676  *             return memoryview.convert_item_to_object(self, itemp)
22677  *
22678  *     cdef assign_item_from_object(self, char *itemp, object value):             # <<<<<<<<<<<<<<
22679  *         if self.to_dtype_func != NULL:
22680  *             self.to_dtype_func(itemp, value)
22681  */
22682 
22683   /* function exit code */
22684   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
22685   goto __pyx_L0;
22686   __pyx_L1_error:;
22687   __Pyx_XDECREF(__pyx_t_3);
22688   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
22689   __pyx_r = 0;
22690   __pyx_L0:;
22691   __Pyx_XGIVEREF(__pyx_r);
22692   __Pyx_RefNannyFinishContext();
22693   return __pyx_r;
22694 }
22695 
22696 /* "View.MemoryView":988
22697  *
22698  *     @property
22699  *     def base(self):             # <<<<<<<<<<<<<<
22700  *         return self.from_object
22701  *
22702  */
22703 
22704 /* Python wrapper */
22705 static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject * __pyx_v_self)22706 static PyObject *__pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(PyObject *__pyx_v_self) {
22707   PyObject *__pyx_r = 0;
22708   __Pyx_RefNannyDeclarations
22709   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
22710   __pyx_r = __pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));
22711 
22712   /* function exit code */
22713   __Pyx_RefNannyFinishContext();
22714   return __pyx_r;
22715 }
22716 
__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj * __pyx_v_self)22717 static PyObject *__pyx_pf_15View_dot_MemoryView_16_memoryviewslice_4base___get__(struct __pyx_memoryviewslice_obj *__pyx_v_self) {
22718   PyObject *__pyx_r = NULL;
22719   __Pyx_RefNannyDeclarations
22720   __Pyx_RefNannySetupContext("__get__", 0);
22721 
22722   /* "View.MemoryView":989
22723  *     @property
22724  *     def base(self):
22725  *         return self.from_object             # <<<<<<<<<<<<<<
22726  *
22727  *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")
22728  */
22729   __Pyx_XDECREF(__pyx_r);
22730   __Pyx_INCREF(__pyx_v_self->from_object);
22731   __pyx_r = __pyx_v_self->from_object;
22732   goto __pyx_L0;
22733 
22734   /* "View.MemoryView":988
22735  *
22736  *     @property
22737  *     def base(self):             # <<<<<<<<<<<<<<
22738  *         return self.from_object
22739  *
22740  */
22741 
22742   /* function exit code */
22743   __pyx_L0:;
22744   __Pyx_XGIVEREF(__pyx_r);
22745   __Pyx_RefNannyFinishContext();
22746   return __pyx_r;
22747 }
22748 
22749 /* "(tree fragment)":1
22750  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
22751  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22752  * def __setstate_cython__(self, __pyx_state):
22753  */
22754 
22755 /* Python wrapper */
22756 static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)22757 static PyObject *__pyx_pw___pyx_memoryviewslice_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
22758   PyObject *__pyx_r = 0;
22759   __Pyx_RefNannyDeclarations
22760   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
22761   __pyx_r = __pyx_pf___pyx_memoryviewslice___reduce_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self));
22762 
22763   /* function exit code */
22764   __Pyx_RefNannyFinishContext();
22765   return __pyx_r;
22766 }
22767 
__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj * __pyx_v_self)22768 static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self) {
22769   PyObject *__pyx_r = NULL;
22770   __Pyx_RefNannyDeclarations
22771   PyObject *__pyx_t_1 = NULL;
22772   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
22773 
22774   /* "(tree fragment)":2
22775  * def __reduce_cython__(self):
22776  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
22777  * def __setstate_cython__(self, __pyx_state):
22778  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22779  */
22780   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
22781   __Pyx_GOTREF(__pyx_t_1);
22782   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
22783   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22784   __PYX_ERR(1, 2, __pyx_L1_error)
22785 
22786   /* "(tree fragment)":1
22787  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
22788  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22789  * def __setstate_cython__(self, __pyx_state):
22790  */
22791 
22792   /* function exit code */
22793   __pyx_L1_error:;
22794   __Pyx_XDECREF(__pyx_t_1);
22795   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
22796   __pyx_r = NULL;
22797   __Pyx_XGIVEREF(__pyx_r);
22798   __Pyx_RefNannyFinishContext();
22799   return __pyx_r;
22800 }
22801 
22802 /* "(tree fragment)":3
22803  * def __reduce_cython__(self):
22804  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22805  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
22806  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22807  */
22808 
22809 /* Python wrapper */
22810 static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)22811 static PyObject *__pyx_pw___pyx_memoryviewslice_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
22812   PyObject *__pyx_r = 0;
22813   __Pyx_RefNannyDeclarations
22814   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
22815   __pyx_r = __pyx_pf___pyx_memoryviewslice_2__setstate_cython__(((struct __pyx_memoryviewslice_obj *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
22816 
22817   /* function exit code */
22818   __Pyx_RefNannyFinishContext();
22819   return __pyx_r;
22820 }
22821 
__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)22822 static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
22823   PyObject *__pyx_r = NULL;
22824   __Pyx_RefNannyDeclarations
22825   PyObject *__pyx_t_1 = NULL;
22826   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
22827 
22828   /* "(tree fragment)":4
22829  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22830  * def __setstate_cython__(self, __pyx_state):
22831  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
22832  */
22833   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
22834   __Pyx_GOTREF(__pyx_t_1);
22835   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
22836   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22837   __PYX_ERR(1, 4, __pyx_L1_error)
22838 
22839   /* "(tree fragment)":3
22840  * def __reduce_cython__(self):
22841  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22842  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
22843  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
22844  */
22845 
22846   /* function exit code */
22847   __pyx_L1_error:;
22848   __Pyx_XDECREF(__pyx_t_1);
22849   __Pyx_AddTraceback("View.MemoryView._memoryviewslice.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
22850   __pyx_r = NULL;
22851   __Pyx_XGIVEREF(__pyx_r);
22852   __Pyx_RefNannyFinishContext();
22853   return __pyx_r;
22854 }
22855 
22856 /* "View.MemoryView":995
22857  *
22858  * @cname('__pyx_memoryview_fromslice')
22859  * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice,             # <<<<<<<<<<<<<<
22860  *                           int ndim,
22861  *                           object (*to_object_func)(char *),
22862  */
22863 
__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice,int __pyx_v_ndim,PyObject * (* __pyx_v_to_object_func)(char *),int (* __pyx_v_to_dtype_func)(char *,PyObject *),int __pyx_v_dtype_is_object)22864 static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewslice, int __pyx_v_ndim, PyObject *(*__pyx_v_to_object_func)(char *), int (*__pyx_v_to_dtype_func)(char *, PyObject *), int __pyx_v_dtype_is_object) {
22865   struct __pyx_memoryviewslice_obj *__pyx_v_result = 0;
22866   Py_ssize_t __pyx_v_suboffset;
22867   PyObject *__pyx_v_length = NULL;
22868   PyObject *__pyx_r = NULL;
22869   __Pyx_RefNannyDeclarations
22870   int __pyx_t_1;
22871   PyObject *__pyx_t_2 = NULL;
22872   PyObject *__pyx_t_3 = NULL;
22873   __Pyx_TypeInfo *__pyx_t_4;
22874   Py_buffer __pyx_t_5;
22875   Py_ssize_t *__pyx_t_6;
22876   Py_ssize_t *__pyx_t_7;
22877   Py_ssize_t *__pyx_t_8;
22878   Py_ssize_t __pyx_t_9;
22879   __Pyx_RefNannySetupContext("memoryview_fromslice", 0);
22880 
22881   /* "View.MemoryView":1003
22882  *     cdef _memoryviewslice result
22883  *
22884  *     if <PyObject *> memviewslice.memview == Py_None:             # <<<<<<<<<<<<<<
22885  *         return None
22886  *
22887  */
22888   __pyx_t_1 = ((((PyObject *)__pyx_v_memviewslice.memview) == Py_None) != 0);
22889   if (__pyx_t_1) {
22890 
22891     /* "View.MemoryView":1004
22892  *
22893  *     if <PyObject *> memviewslice.memview == Py_None:
22894  *         return None             # <<<<<<<<<<<<<<
22895  *
22896  *
22897  */
22898     __Pyx_XDECREF(__pyx_r);
22899     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
22900     goto __pyx_L0;
22901 
22902     /* "View.MemoryView":1003
22903  *     cdef _memoryviewslice result
22904  *
22905  *     if <PyObject *> memviewslice.memview == Py_None:             # <<<<<<<<<<<<<<
22906  *         return None
22907  *
22908  */
22909   }
22910 
22911   /* "View.MemoryView":1009
22912  *
22913  *
22914  *     result = _memoryviewslice(None, 0, dtype_is_object)             # <<<<<<<<<<<<<<
22915  *
22916  *     result.from_slice = memviewslice
22917  */
22918   __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1009, __pyx_L1_error)
22919   __Pyx_GOTREF(__pyx_t_2);
22920   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1009, __pyx_L1_error)
22921   __Pyx_GOTREF(__pyx_t_3);
22922   __Pyx_INCREF(Py_None);
22923   __Pyx_GIVEREF(Py_None);
22924   PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None);
22925   __Pyx_INCREF(__pyx_int_0);
22926   __Pyx_GIVEREF(__pyx_int_0);
22927   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);
22928   __Pyx_GIVEREF(__pyx_t_2);
22929   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
22930   __pyx_t_2 = 0;
22931   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_memoryviewslice_type), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1009, __pyx_L1_error)
22932   __Pyx_GOTREF(__pyx_t_2);
22933   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22934   __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2);
22935   __pyx_t_2 = 0;
22936 
22937   /* "View.MemoryView":1011
22938  *     result = _memoryviewslice(None, 0, dtype_is_object)
22939  *
22940  *     result.from_slice = memviewslice             # <<<<<<<<<<<<<<
22941  *     __PYX_INC_MEMVIEW(&memviewslice, 1)
22942  *
22943  */
22944   __pyx_v_result->from_slice = __pyx_v_memviewslice;
22945 
22946   /* "View.MemoryView":1012
22947  *
22948  *     result.from_slice = memviewslice
22949  *     __PYX_INC_MEMVIEW(&memviewslice, 1)             # <<<<<<<<<<<<<<
22950  *
22951  *     result.from_object = (<memoryview> memviewslice.memview).base
22952  */
22953   __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1);
22954 
22955   /* "View.MemoryView":1014
22956  *     __PYX_INC_MEMVIEW(&memviewslice, 1)
22957  *
22958  *     result.from_object = (<memoryview> memviewslice.memview).base             # <<<<<<<<<<<<<<
22959  *     result.typeinfo = memviewslice.memview.typeinfo
22960  *
22961  */
22962   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_memviewslice.memview), __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1014, __pyx_L1_error)
22963   __Pyx_GOTREF(__pyx_t_2);
22964   __Pyx_GIVEREF(__pyx_t_2);
22965   __Pyx_GOTREF(__pyx_v_result->from_object);
22966   __Pyx_DECREF(__pyx_v_result->from_object);
22967   __pyx_v_result->from_object = __pyx_t_2;
22968   __pyx_t_2 = 0;
22969 
22970   /* "View.MemoryView":1015
22971  *
22972  *     result.from_object = (<memoryview> memviewslice.memview).base
22973  *     result.typeinfo = memviewslice.memview.typeinfo             # <<<<<<<<<<<<<<
22974  *
22975  *     result.view = memviewslice.memview.view
22976  */
22977   __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo;
22978   __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4;
22979 
22980   /* "View.MemoryView":1017
22981  *     result.typeinfo = memviewslice.memview.typeinfo
22982  *
22983  *     result.view = memviewslice.memview.view             # <<<<<<<<<<<<<<
22984  *     result.view.buf = <void *> memviewslice.data
22985  *     result.view.ndim = ndim
22986  */
22987   __pyx_t_5 = __pyx_v_memviewslice.memview->view;
22988   __pyx_v_result->__pyx_base.view = __pyx_t_5;
22989 
22990   /* "View.MemoryView":1018
22991  *
22992  *     result.view = memviewslice.memview.view
22993  *     result.view.buf = <void *> memviewslice.data             # <<<<<<<<<<<<<<
22994  *     result.view.ndim = ndim
22995  *     (<__pyx_buffer *> &result.view).obj = Py_None
22996  */
22997   __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data);
22998 
22999   /* "View.MemoryView":1019
23000  *     result.view = memviewslice.memview.view
23001  *     result.view.buf = <void *> memviewslice.data
23002  *     result.view.ndim = ndim             # <<<<<<<<<<<<<<
23003  *     (<__pyx_buffer *> &result.view).obj = Py_None
23004  *     Py_INCREF(Py_None)
23005  */
23006   __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim;
23007 
23008   /* "View.MemoryView":1020
23009  *     result.view.buf = <void *> memviewslice.data
23010  *     result.view.ndim = ndim
23011  *     (<__pyx_buffer *> &result.view).obj = Py_None             # <<<<<<<<<<<<<<
23012  *     Py_INCREF(Py_None)
23013  *
23014  */
23015   ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None;
23016 
23017   /* "View.MemoryView":1021
23018  *     result.view.ndim = ndim
23019  *     (<__pyx_buffer *> &result.view).obj = Py_None
23020  *     Py_INCREF(Py_None)             # <<<<<<<<<<<<<<
23021  *
23022  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:
23023  */
23024   Py_INCREF(Py_None);
23025 
23026   /* "View.MemoryView":1023
23027  *     Py_INCREF(Py_None)
23028  *
23029  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
23030  *         result.flags = PyBUF_RECORDS
23031  *     else:
23032  */
23033   __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0);
23034   if (__pyx_t_1) {
23035 
23036     /* "View.MemoryView":1024
23037  *
23038  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:
23039  *         result.flags = PyBUF_RECORDS             # <<<<<<<<<<<<<<
23040  *     else:
23041  *         result.flags = PyBUF_RECORDS_RO
23042  */
23043     __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS;
23044 
23045     /* "View.MemoryView":1023
23046  *     Py_INCREF(Py_None)
23047  *
23048  *     if (<memoryview>memviewslice.memview).flags & PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
23049  *         result.flags = PyBUF_RECORDS
23050  *     else:
23051  */
23052     goto __pyx_L4;
23053   }
23054 
23055   /* "View.MemoryView":1026
23056  *         result.flags = PyBUF_RECORDS
23057  *     else:
23058  *         result.flags = PyBUF_RECORDS_RO             # <<<<<<<<<<<<<<
23059  *
23060  *     result.view.shape = <Py_ssize_t *> result.from_slice.shape
23061  */
23062   /*else*/ {
23063     __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS_RO;
23064   }
23065   __pyx_L4:;
23066 
23067   /* "View.MemoryView":1028
23068  *         result.flags = PyBUF_RECORDS_RO
23069  *
23070  *     result.view.shape = <Py_ssize_t *> result.from_slice.shape             # <<<<<<<<<<<<<<
23071  *     result.view.strides = <Py_ssize_t *> result.from_slice.strides
23072  *
23073  */
23074   __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape);
23075 
23076   /* "View.MemoryView":1029
23077  *
23078  *     result.view.shape = <Py_ssize_t *> result.from_slice.shape
23079  *     result.view.strides = <Py_ssize_t *> result.from_slice.strides             # <<<<<<<<<<<<<<
23080  *
23081  *
23082  */
23083   __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides);
23084 
23085   /* "View.MemoryView":1032
23086  *
23087  *
23088  *     result.view.suboffsets = NULL             # <<<<<<<<<<<<<<
23089  *     for suboffset in result.from_slice.suboffsets[:ndim]:
23090  *         if suboffset >= 0:
23091  */
23092   __pyx_v_result->__pyx_base.view.suboffsets = NULL;
23093 
23094   /* "View.MemoryView":1033
23095  *
23096  *     result.view.suboffsets = NULL
23097  *     for suboffset in result.from_slice.suboffsets[:ndim]:             # <<<<<<<<<<<<<<
23098  *         if suboffset >= 0:
23099  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
23100  */
23101   __pyx_t_7 = (__pyx_v_result->from_slice.suboffsets + __pyx_v_ndim);
23102   for (__pyx_t_8 = __pyx_v_result->from_slice.suboffsets; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) {
23103     __pyx_t_6 = __pyx_t_8;
23104     __pyx_v_suboffset = (__pyx_t_6[0]);
23105 
23106     /* "View.MemoryView":1034
23107  *     result.view.suboffsets = NULL
23108  *     for suboffset in result.from_slice.suboffsets[:ndim]:
23109  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
23110  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
23111  *             break
23112  */
23113     __pyx_t_1 = ((__pyx_v_suboffset >= 0) != 0);
23114     if (__pyx_t_1) {
23115 
23116       /* "View.MemoryView":1035
23117  *     for suboffset in result.from_slice.suboffsets[:ndim]:
23118  *         if suboffset >= 0:
23119  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets             # <<<<<<<<<<<<<<
23120  *             break
23121  *
23122  */
23123       __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets);
23124 
23125       /* "View.MemoryView":1036
23126  *         if suboffset >= 0:
23127  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
23128  *             break             # <<<<<<<<<<<<<<
23129  *
23130  *     result.view.len = result.view.itemsize
23131  */
23132       goto __pyx_L6_break;
23133 
23134       /* "View.MemoryView":1034
23135  *     result.view.suboffsets = NULL
23136  *     for suboffset in result.from_slice.suboffsets[:ndim]:
23137  *         if suboffset >= 0:             # <<<<<<<<<<<<<<
23138  *             result.view.suboffsets = <Py_ssize_t *> result.from_slice.suboffsets
23139  *             break
23140  */
23141     }
23142   }
23143   __pyx_L6_break:;
23144 
23145   /* "View.MemoryView":1038
23146  *             break
23147  *
23148  *     result.view.len = result.view.itemsize             # <<<<<<<<<<<<<<
23149  *     for length in result.view.shape[:ndim]:
23150  *         result.view.len *= length
23151  */
23152   __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize;
23153   __pyx_v_result->__pyx_base.view.len = __pyx_t_9;
23154 
23155   /* "View.MemoryView":1039
23156  *
23157  *     result.view.len = result.view.itemsize
23158  *     for length in result.view.shape[:ndim]:             # <<<<<<<<<<<<<<
23159  *         result.view.len *= length
23160  *
23161  */
23162   __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim);
23163   for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) {
23164     __pyx_t_6 = __pyx_t_8;
23165     __pyx_t_2 = PyInt_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1039, __pyx_L1_error)
23166     __Pyx_GOTREF(__pyx_t_2);
23167     __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2);
23168     __pyx_t_2 = 0;
23169 
23170     /* "View.MemoryView":1040
23171  *     result.view.len = result.view.itemsize
23172  *     for length in result.view.shape[:ndim]:
23173  *         result.view.len *= length             # <<<<<<<<<<<<<<
23174  *
23175  *     result.to_object_func = to_object_func
23176  */
23177     __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1040, __pyx_L1_error)
23178     __Pyx_GOTREF(__pyx_t_2);
23179     __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1040, __pyx_L1_error)
23180     __Pyx_GOTREF(__pyx_t_3);
23181     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23182     __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1040, __pyx_L1_error)
23183     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23184     __pyx_v_result->__pyx_base.view.len = __pyx_t_9;
23185   }
23186 
23187   /* "View.MemoryView":1042
23188  *         result.view.len *= length
23189  *
23190  *     result.to_object_func = to_object_func             # <<<<<<<<<<<<<<
23191  *     result.to_dtype_func = to_dtype_func
23192  *
23193  */
23194   __pyx_v_result->to_object_func = __pyx_v_to_object_func;
23195 
23196   /* "View.MemoryView":1043
23197  *
23198  *     result.to_object_func = to_object_func
23199  *     result.to_dtype_func = to_dtype_func             # <<<<<<<<<<<<<<
23200  *
23201  *     return result
23202  */
23203   __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func;
23204 
23205   /* "View.MemoryView":1045
23206  *     result.to_dtype_func = to_dtype_func
23207  *
23208  *     return result             # <<<<<<<<<<<<<<
23209  *
23210  * @cname('__pyx_memoryview_get_slice_from_memoryview')
23211  */
23212   __Pyx_XDECREF(__pyx_r);
23213   __Pyx_INCREF(((PyObject *)__pyx_v_result));
23214   __pyx_r = ((PyObject *)__pyx_v_result);
23215   goto __pyx_L0;
23216 
23217   /* "View.MemoryView":995
23218  *
23219  * @cname('__pyx_memoryview_fromslice')
23220  * cdef memoryview_fromslice(__Pyx_memviewslice memviewslice,             # <<<<<<<<<<<<<<
23221  *                           int ndim,
23222  *                           object (*to_object_func)(char *),
23223  */
23224 
23225   /* function exit code */
23226   __pyx_L1_error:;
23227   __Pyx_XDECREF(__pyx_t_2);
23228   __Pyx_XDECREF(__pyx_t_3);
23229   __Pyx_AddTraceback("View.MemoryView.memoryview_fromslice", __pyx_clineno, __pyx_lineno, __pyx_filename);
23230   __pyx_r = 0;
23231   __pyx_L0:;
23232   __Pyx_XDECREF((PyObject *)__pyx_v_result);
23233   __Pyx_XDECREF(__pyx_v_length);
23234   __Pyx_XGIVEREF(__pyx_r);
23235   __Pyx_RefNannyFinishContext();
23236   return __pyx_r;
23237 }
23238 
23239 /* "View.MemoryView":1048
23240  *
23241  * @cname('__pyx_memoryview_get_slice_from_memoryview')
23242  * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview,             # <<<<<<<<<<<<<<
23243  *                                                    __Pyx_memviewslice *mslice):
23244  *     cdef _memoryviewslice obj
23245  */
23246 
__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj * __pyx_v_memview,__Pyx_memviewslice * __pyx_v_mslice)23247 static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_mslice) {
23248   struct __pyx_memoryviewslice_obj *__pyx_v_obj = 0;
23249   __Pyx_memviewslice *__pyx_r;
23250   __Pyx_RefNannyDeclarations
23251   int __pyx_t_1;
23252   int __pyx_t_2;
23253   PyObject *__pyx_t_3 = NULL;
23254   __Pyx_RefNannySetupContext("get_slice_from_memview", 0);
23255 
23256   /* "View.MemoryView":1051
23257  *                                                    __Pyx_memviewslice *mslice):
23258  *     cdef _memoryviewslice obj
23259  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
23260  *         obj = memview
23261  *         return &obj.from_slice
23262  */
23263   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type);
23264   __pyx_t_2 = (__pyx_t_1 != 0);
23265   if (__pyx_t_2) {
23266 
23267     /* "View.MemoryView":1052
23268  *     cdef _memoryviewslice obj
23269  *     if isinstance(memview, _memoryviewslice):
23270  *         obj = memview             # <<<<<<<<<<<<<<
23271  *         return &obj.from_slice
23272  *     else:
23273  */
23274     if (!(likely(((((PyObject *)__pyx_v_memview)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type))))) __PYX_ERR(1, 1052, __pyx_L1_error)
23275     __pyx_t_3 = ((PyObject *)__pyx_v_memview);
23276     __Pyx_INCREF(__pyx_t_3);
23277     __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_3);
23278     __pyx_t_3 = 0;
23279 
23280     /* "View.MemoryView":1053
23281  *     if isinstance(memview, _memoryviewslice):
23282  *         obj = memview
23283  *         return &obj.from_slice             # <<<<<<<<<<<<<<
23284  *     else:
23285  *         slice_copy(memview, mslice)
23286  */
23287     __pyx_r = (&__pyx_v_obj->from_slice);
23288     goto __pyx_L0;
23289 
23290     /* "View.MemoryView":1051
23291  *                                                    __Pyx_memviewslice *mslice):
23292  *     cdef _memoryviewslice obj
23293  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
23294  *         obj = memview
23295  *         return &obj.from_slice
23296  */
23297   }
23298 
23299   /* "View.MemoryView":1055
23300  *         return &obj.from_slice
23301  *     else:
23302  *         slice_copy(memview, mslice)             # <<<<<<<<<<<<<<
23303  *         return mslice
23304  *
23305  */
23306   /*else*/ {
23307     __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice);
23308 
23309     /* "View.MemoryView":1056
23310  *     else:
23311  *         slice_copy(memview, mslice)
23312  *         return mslice             # <<<<<<<<<<<<<<
23313  *
23314  * @cname('__pyx_memoryview_slice_copy')
23315  */
23316     __pyx_r = __pyx_v_mslice;
23317     goto __pyx_L0;
23318   }
23319 
23320   /* "View.MemoryView":1048
23321  *
23322  * @cname('__pyx_memoryview_get_slice_from_memoryview')
23323  * cdef __Pyx_memviewslice *get_slice_from_memview(memoryview memview,             # <<<<<<<<<<<<<<
23324  *                                                    __Pyx_memviewslice *mslice):
23325  *     cdef _memoryviewslice obj
23326  */
23327 
23328   /* function exit code */
23329   __pyx_L1_error:;
23330   __Pyx_XDECREF(__pyx_t_3);
23331   __Pyx_WriteUnraisable("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
23332   __pyx_r = 0;
23333   __pyx_L0:;
23334   __Pyx_XDECREF((PyObject *)__pyx_v_obj);
23335   __Pyx_RefNannyFinishContext();
23336   return __pyx_r;
23337 }
23338 
23339 /* "View.MemoryView":1059
23340  *
23341  * @cname('__pyx_memoryview_slice_copy')
23342  * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst):             # <<<<<<<<<<<<<<
23343  *     cdef int dim
23344  *     cdef (Py_ssize_t*) shape, strides, suboffsets
23345  */
23346 
__pyx_memoryview_slice_copy(struct __pyx_memoryview_obj * __pyx_v_memview,__Pyx_memviewslice * __pyx_v_dst)23347 static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_dst) {
23348   int __pyx_v_dim;
23349   Py_ssize_t *__pyx_v_shape;
23350   Py_ssize_t *__pyx_v_strides;
23351   Py_ssize_t *__pyx_v_suboffsets;
23352   __Pyx_RefNannyDeclarations
23353   Py_ssize_t *__pyx_t_1;
23354   int __pyx_t_2;
23355   int __pyx_t_3;
23356   int __pyx_t_4;
23357   Py_ssize_t __pyx_t_5;
23358   __Pyx_RefNannySetupContext("slice_copy", 0);
23359 
23360   /* "View.MemoryView":1063
23361  *     cdef (Py_ssize_t*) shape, strides, suboffsets
23362  *
23363  *     shape = memview.view.shape             # <<<<<<<<<<<<<<
23364  *     strides = memview.view.strides
23365  *     suboffsets = memview.view.suboffsets
23366  */
23367   __pyx_t_1 = __pyx_v_memview->view.shape;
23368   __pyx_v_shape = __pyx_t_1;
23369 
23370   /* "View.MemoryView":1064
23371  *
23372  *     shape = memview.view.shape
23373  *     strides = memview.view.strides             # <<<<<<<<<<<<<<
23374  *     suboffsets = memview.view.suboffsets
23375  *
23376  */
23377   __pyx_t_1 = __pyx_v_memview->view.strides;
23378   __pyx_v_strides = __pyx_t_1;
23379 
23380   /* "View.MemoryView":1065
23381  *     shape = memview.view.shape
23382  *     strides = memview.view.strides
23383  *     suboffsets = memview.view.suboffsets             # <<<<<<<<<<<<<<
23384  *
23385  *     dst.memview = <__pyx_memoryview *> memview
23386  */
23387   __pyx_t_1 = __pyx_v_memview->view.suboffsets;
23388   __pyx_v_suboffsets = __pyx_t_1;
23389 
23390   /* "View.MemoryView":1067
23391  *     suboffsets = memview.view.suboffsets
23392  *
23393  *     dst.memview = <__pyx_memoryview *> memview             # <<<<<<<<<<<<<<
23394  *     dst.data = <char *> memview.view.buf
23395  *
23396  */
23397   __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview);
23398 
23399   /* "View.MemoryView":1068
23400  *
23401  *     dst.memview = <__pyx_memoryview *> memview
23402  *     dst.data = <char *> memview.view.buf             # <<<<<<<<<<<<<<
23403  *
23404  *     for dim in range(memview.view.ndim):
23405  */
23406   __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf);
23407 
23408   /* "View.MemoryView":1070
23409  *     dst.data = <char *> memview.view.buf
23410  *
23411  *     for dim in range(memview.view.ndim):             # <<<<<<<<<<<<<<
23412  *         dst.shape[dim] = shape[dim]
23413  *         dst.strides[dim] = strides[dim]
23414  */
23415   __pyx_t_2 = __pyx_v_memview->view.ndim;
23416   __pyx_t_3 = __pyx_t_2;
23417   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
23418     __pyx_v_dim = __pyx_t_4;
23419 
23420     /* "View.MemoryView":1071
23421  *
23422  *     for dim in range(memview.view.ndim):
23423  *         dst.shape[dim] = shape[dim]             # <<<<<<<<<<<<<<
23424  *         dst.strides[dim] = strides[dim]
23425  *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1
23426  */
23427     (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]);
23428 
23429     /* "View.MemoryView":1072
23430  *     for dim in range(memview.view.ndim):
23431  *         dst.shape[dim] = shape[dim]
23432  *         dst.strides[dim] = strides[dim]             # <<<<<<<<<<<<<<
23433  *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1
23434  *
23435  */
23436     (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]);
23437 
23438     /* "View.MemoryView":1073
23439  *         dst.shape[dim] = shape[dim]
23440  *         dst.strides[dim] = strides[dim]
23441  *         dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1             # <<<<<<<<<<<<<<
23442  *
23443  * @cname('__pyx_memoryview_copy_object')
23444  */
23445     if ((__pyx_v_suboffsets != 0)) {
23446       __pyx_t_5 = (__pyx_v_suboffsets[__pyx_v_dim]);
23447     } else {
23448       __pyx_t_5 = -1L;
23449     }
23450     (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5;
23451   }
23452 
23453   /* "View.MemoryView":1059
23454  *
23455  * @cname('__pyx_memoryview_slice_copy')
23456  * cdef void slice_copy(memoryview memview, __Pyx_memviewslice *dst):             # <<<<<<<<<<<<<<
23457  *     cdef int dim
23458  *     cdef (Py_ssize_t*) shape, strides, suboffsets
23459  */
23460 
23461   /* function exit code */
23462   __Pyx_RefNannyFinishContext();
23463 }
23464 
23465 /* "View.MemoryView":1076
23466  *
23467  * @cname('__pyx_memoryview_copy_object')
23468  * cdef memoryview_copy(memoryview memview):             # <<<<<<<<<<<<<<
23469  *     "Create a new memoryview object"
23470  *     cdef __Pyx_memviewslice memviewslice
23471  */
23472 
__pyx_memoryview_copy_object(struct __pyx_memoryview_obj * __pyx_v_memview)23473 static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx_v_memview) {
23474   __Pyx_memviewslice __pyx_v_memviewslice;
23475   PyObject *__pyx_r = NULL;
23476   __Pyx_RefNannyDeclarations
23477   PyObject *__pyx_t_1 = NULL;
23478   __Pyx_RefNannySetupContext("memoryview_copy", 0);
23479 
23480   /* "View.MemoryView":1079
23481  *     "Create a new memoryview object"
23482  *     cdef __Pyx_memviewslice memviewslice
23483  *     slice_copy(memview, &memviewslice)             # <<<<<<<<<<<<<<
23484  *     return memoryview_copy_from_slice(memview, &memviewslice)
23485  *
23486  */
23487   __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice));
23488 
23489   /* "View.MemoryView":1080
23490  *     cdef __Pyx_memviewslice memviewslice
23491  *     slice_copy(memview, &memviewslice)
23492  *     return memoryview_copy_from_slice(memview, &memviewslice)             # <<<<<<<<<<<<<<
23493  *
23494  * @cname('__pyx_memoryview_copy_object_from_slice')
23495  */
23496   __Pyx_XDECREF(__pyx_r);
23497   __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1080, __pyx_L1_error)
23498   __Pyx_GOTREF(__pyx_t_1);
23499   __pyx_r = __pyx_t_1;
23500   __pyx_t_1 = 0;
23501   goto __pyx_L0;
23502 
23503   /* "View.MemoryView":1076
23504  *
23505  * @cname('__pyx_memoryview_copy_object')
23506  * cdef memoryview_copy(memoryview memview):             # <<<<<<<<<<<<<<
23507  *     "Create a new memoryview object"
23508  *     cdef __Pyx_memviewslice memviewslice
23509  */
23510 
23511   /* function exit code */
23512   __pyx_L1_error:;
23513   __Pyx_XDECREF(__pyx_t_1);
23514   __Pyx_AddTraceback("View.MemoryView.memoryview_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
23515   __pyx_r = 0;
23516   __pyx_L0:;
23517   __Pyx_XGIVEREF(__pyx_r);
23518   __Pyx_RefNannyFinishContext();
23519   return __pyx_r;
23520 }
23521 
23522 /* "View.MemoryView":1083
23523  *
23524  * @cname('__pyx_memoryview_copy_object_from_slice')
23525  * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice):             # <<<<<<<<<<<<<<
23526  *     """
23527  *     Create a new memoryview object from a given memoryview object and slice.
23528  */
23529 
__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj * __pyx_v_memview,__Pyx_memviewslice * __pyx_v_memviewslice)23530 static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview_obj *__pyx_v_memview, __Pyx_memviewslice *__pyx_v_memviewslice) {
23531   PyObject *(*__pyx_v_to_object_func)(char *);
23532   int (*__pyx_v_to_dtype_func)(char *, PyObject *);
23533   PyObject *__pyx_r = NULL;
23534   __Pyx_RefNannyDeclarations
23535   int __pyx_t_1;
23536   int __pyx_t_2;
23537   PyObject *(*__pyx_t_3)(char *);
23538   int (*__pyx_t_4)(char *, PyObject *);
23539   PyObject *__pyx_t_5 = NULL;
23540   __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0);
23541 
23542   /* "View.MemoryView":1090
23543  *     cdef int (*to_dtype_func)(char *, object) except 0
23544  *
23545  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
23546  *         to_object_func = (<_memoryviewslice> memview).to_object_func
23547  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
23548  */
23549   __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_memoryviewslice_type);
23550   __pyx_t_2 = (__pyx_t_1 != 0);
23551   if (__pyx_t_2) {
23552 
23553     /* "View.MemoryView":1091
23554  *
23555  *     if isinstance(memview, _memoryviewslice):
23556  *         to_object_func = (<_memoryviewslice> memview).to_object_func             # <<<<<<<<<<<<<<
23557  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
23558  *     else:
23559  */
23560     __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func;
23561     __pyx_v_to_object_func = __pyx_t_3;
23562 
23563     /* "View.MemoryView":1092
23564  *     if isinstance(memview, _memoryviewslice):
23565  *         to_object_func = (<_memoryviewslice> memview).to_object_func
23566  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func             # <<<<<<<<<<<<<<
23567  *     else:
23568  *         to_object_func = NULL
23569  */
23570     __pyx_t_4 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func;
23571     __pyx_v_to_dtype_func = __pyx_t_4;
23572 
23573     /* "View.MemoryView":1090
23574  *     cdef int (*to_dtype_func)(char *, object) except 0
23575  *
23576  *     if isinstance(memview, _memoryviewslice):             # <<<<<<<<<<<<<<
23577  *         to_object_func = (<_memoryviewslice> memview).to_object_func
23578  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
23579  */
23580     goto __pyx_L3;
23581   }
23582 
23583   /* "View.MemoryView":1094
23584  *         to_dtype_func = (<_memoryviewslice> memview).to_dtype_func
23585  *     else:
23586  *         to_object_func = NULL             # <<<<<<<<<<<<<<
23587  *         to_dtype_func = NULL
23588  *
23589  */
23590   /*else*/ {
23591     __pyx_v_to_object_func = NULL;
23592 
23593     /* "View.MemoryView":1095
23594  *     else:
23595  *         to_object_func = NULL
23596  *         to_dtype_func = NULL             # <<<<<<<<<<<<<<
23597  *
23598  *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,
23599  */
23600     __pyx_v_to_dtype_func = NULL;
23601   }
23602   __pyx_L3:;
23603 
23604   /* "View.MemoryView":1097
23605  *         to_dtype_func = NULL
23606  *
23607  *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,             # <<<<<<<<<<<<<<
23608  *                                 to_object_func, to_dtype_func,
23609  *                                 memview.dtype_is_object)
23610  */
23611   __Pyx_XDECREF(__pyx_r);
23612 
23613   /* "View.MemoryView":1099
23614  *     return memoryview_fromslice(memviewslice[0], memview.view.ndim,
23615  *                                 to_object_func, to_dtype_func,
23616  *                                 memview.dtype_is_object)             # <<<<<<<<<<<<<<
23617  *
23618  *
23619  */
23620   __pyx_t_5 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1097, __pyx_L1_error)
23621   __Pyx_GOTREF(__pyx_t_5);
23622   __pyx_r = __pyx_t_5;
23623   __pyx_t_5 = 0;
23624   goto __pyx_L0;
23625 
23626   /* "View.MemoryView":1083
23627  *
23628  * @cname('__pyx_memoryview_copy_object_from_slice')
23629  * cdef memoryview_copy_from_slice(memoryview memview, __Pyx_memviewslice *memviewslice):             # <<<<<<<<<<<<<<
23630  *     """
23631  *     Create a new memoryview object from a given memoryview object and slice.
23632  */
23633 
23634   /* function exit code */
23635   __pyx_L1_error:;
23636   __Pyx_XDECREF(__pyx_t_5);
23637   __Pyx_AddTraceback("View.MemoryView.memoryview_copy_from_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
23638   __pyx_r = 0;
23639   __pyx_L0:;
23640   __Pyx_XGIVEREF(__pyx_r);
23641   __Pyx_RefNannyFinishContext();
23642   return __pyx_r;
23643 }
23644 
23645 /* "View.MemoryView":1105
23646  *
23647  *
23648  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:             # <<<<<<<<<<<<<<
23649  *     if arg < 0:
23650  *         return -arg
23651  */
23652 
abs_py_ssize_t(Py_ssize_t __pyx_v_arg)23653 static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) {
23654   Py_ssize_t __pyx_r;
23655   int __pyx_t_1;
23656 
23657   /* "View.MemoryView":1106
23658  *
23659  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:
23660  *     if arg < 0:             # <<<<<<<<<<<<<<
23661  *         return -arg
23662  *     else:
23663  */
23664   __pyx_t_1 = ((__pyx_v_arg < 0) != 0);
23665   if (__pyx_t_1) {
23666 
23667     /* "View.MemoryView":1107
23668  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:
23669  *     if arg < 0:
23670  *         return -arg             # <<<<<<<<<<<<<<
23671  *     else:
23672  *         return arg
23673  */
23674     __pyx_r = (-__pyx_v_arg);
23675     goto __pyx_L0;
23676 
23677     /* "View.MemoryView":1106
23678  *
23679  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:
23680  *     if arg < 0:             # <<<<<<<<<<<<<<
23681  *         return -arg
23682  *     else:
23683  */
23684   }
23685 
23686   /* "View.MemoryView":1109
23687  *         return -arg
23688  *     else:
23689  *         return arg             # <<<<<<<<<<<<<<
23690  *
23691  * @cname('__pyx_get_best_slice_order')
23692  */
23693   /*else*/ {
23694     __pyx_r = __pyx_v_arg;
23695     goto __pyx_L0;
23696   }
23697 
23698   /* "View.MemoryView":1105
23699  *
23700  *
23701  * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) nogil:             # <<<<<<<<<<<<<<
23702  *     if arg < 0:
23703  *         return -arg
23704  */
23705 
23706   /* function exit code */
23707   __pyx_L0:;
23708   return __pyx_r;
23709 }
23710 
23711 /* "View.MemoryView":1112
23712  *
23713  * @cname('__pyx_get_best_slice_order')
23714  * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil:             # <<<<<<<<<<<<<<
23715  *     """
23716  *     Figure out the best memory access order for a given slice.
23717  */
23718 
__pyx_get_best_slice_order(__Pyx_memviewslice * __pyx_v_mslice,int __pyx_v_ndim)23719 static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim) {
23720   int __pyx_v_i;
23721   Py_ssize_t __pyx_v_c_stride;
23722   Py_ssize_t __pyx_v_f_stride;
23723   char __pyx_r;
23724   int __pyx_t_1;
23725   int __pyx_t_2;
23726   int __pyx_t_3;
23727   int __pyx_t_4;
23728 
23729   /* "View.MemoryView":1117
23730  *     """
23731  *     cdef int i
23732  *     cdef Py_ssize_t c_stride = 0             # <<<<<<<<<<<<<<
23733  *     cdef Py_ssize_t f_stride = 0
23734  *
23735  */
23736   __pyx_v_c_stride = 0;
23737 
23738   /* "View.MemoryView":1118
23739  *     cdef int i
23740  *     cdef Py_ssize_t c_stride = 0
23741  *     cdef Py_ssize_t f_stride = 0             # <<<<<<<<<<<<<<
23742  *
23743  *     for i in range(ndim - 1, -1, -1):
23744  */
23745   __pyx_v_f_stride = 0;
23746 
23747   /* "View.MemoryView":1120
23748  *     cdef Py_ssize_t f_stride = 0
23749  *
23750  *     for i in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
23751  *         if mslice.shape[i] > 1:
23752  *             c_stride = mslice.strides[i]
23753  */
23754   for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) {
23755     __pyx_v_i = __pyx_t_1;
23756 
23757     /* "View.MemoryView":1121
23758  *
23759  *     for i in range(ndim - 1, -1, -1):
23760  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
23761  *             c_stride = mslice.strides[i]
23762  *             break
23763  */
23764     __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0);
23765     if (__pyx_t_2) {
23766 
23767       /* "View.MemoryView":1122
23768  *     for i in range(ndim - 1, -1, -1):
23769  *         if mslice.shape[i] > 1:
23770  *             c_stride = mslice.strides[i]             # <<<<<<<<<<<<<<
23771  *             break
23772  *
23773  */
23774       __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]);
23775 
23776       /* "View.MemoryView":1123
23777  *         if mslice.shape[i] > 1:
23778  *             c_stride = mslice.strides[i]
23779  *             break             # <<<<<<<<<<<<<<
23780  *
23781  *     for i in range(ndim):
23782  */
23783       goto __pyx_L4_break;
23784 
23785       /* "View.MemoryView":1121
23786  *
23787  *     for i in range(ndim - 1, -1, -1):
23788  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
23789  *             c_stride = mslice.strides[i]
23790  *             break
23791  */
23792     }
23793   }
23794   __pyx_L4_break:;
23795 
23796   /* "View.MemoryView":1125
23797  *             break
23798  *
23799  *     for i in range(ndim):             # <<<<<<<<<<<<<<
23800  *         if mslice.shape[i] > 1:
23801  *             f_stride = mslice.strides[i]
23802  */
23803   __pyx_t_1 = __pyx_v_ndim;
23804   __pyx_t_3 = __pyx_t_1;
23805   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
23806     __pyx_v_i = __pyx_t_4;
23807 
23808     /* "View.MemoryView":1126
23809  *
23810  *     for i in range(ndim):
23811  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
23812  *             f_stride = mslice.strides[i]
23813  *             break
23814  */
23815     __pyx_t_2 = (((__pyx_v_mslice->shape[__pyx_v_i]) > 1) != 0);
23816     if (__pyx_t_2) {
23817 
23818       /* "View.MemoryView":1127
23819  *     for i in range(ndim):
23820  *         if mslice.shape[i] > 1:
23821  *             f_stride = mslice.strides[i]             # <<<<<<<<<<<<<<
23822  *             break
23823  *
23824  */
23825       __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]);
23826 
23827       /* "View.MemoryView":1128
23828  *         if mslice.shape[i] > 1:
23829  *             f_stride = mslice.strides[i]
23830  *             break             # <<<<<<<<<<<<<<
23831  *
23832  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):
23833  */
23834       goto __pyx_L7_break;
23835 
23836       /* "View.MemoryView":1126
23837  *
23838  *     for i in range(ndim):
23839  *         if mslice.shape[i] > 1:             # <<<<<<<<<<<<<<
23840  *             f_stride = mslice.strides[i]
23841  *             break
23842  */
23843     }
23844   }
23845   __pyx_L7_break:;
23846 
23847   /* "View.MemoryView":1130
23848  *             break
23849  *
23850  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):             # <<<<<<<<<<<<<<
23851  *         return 'C'
23852  *     else:
23853  */
23854   __pyx_t_2 = ((abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)) != 0);
23855   if (__pyx_t_2) {
23856 
23857     /* "View.MemoryView":1131
23858  *
23859  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):
23860  *         return 'C'             # <<<<<<<<<<<<<<
23861  *     else:
23862  *         return 'F'
23863  */
23864     __pyx_r = 'C';
23865     goto __pyx_L0;
23866 
23867     /* "View.MemoryView":1130
23868  *             break
23869  *
23870  *     if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride):             # <<<<<<<<<<<<<<
23871  *         return 'C'
23872  *     else:
23873  */
23874   }
23875 
23876   /* "View.MemoryView":1133
23877  *         return 'C'
23878  *     else:
23879  *         return 'F'             # <<<<<<<<<<<<<<
23880  *
23881  * @cython.cdivision(True)
23882  */
23883   /*else*/ {
23884     __pyx_r = 'F';
23885     goto __pyx_L0;
23886   }
23887 
23888   /* "View.MemoryView":1112
23889  *
23890  * @cname('__pyx_get_best_slice_order')
23891  * cdef char get_best_order(__Pyx_memviewslice *mslice, int ndim) nogil:             # <<<<<<<<<<<<<<
23892  *     """
23893  *     Figure out the best memory access order for a given slice.
23894  */
23895 
23896   /* function exit code */
23897   __pyx_L0:;
23898   return __pyx_r;
23899 }
23900 
23901 /* "View.MemoryView":1136
23902  *
23903  * @cython.cdivision(True)
23904  * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides,             # <<<<<<<<<<<<<<
23905  *                                    char *dst_data, Py_ssize_t *dst_strides,
23906  *                                    Py_ssize_t *src_shape, Py_ssize_t *dst_shape,
23907  */
23908 
_copy_strided_to_strided(char * __pyx_v_src_data,Py_ssize_t * __pyx_v_src_strides,char * __pyx_v_dst_data,Py_ssize_t * __pyx_v_dst_strides,Py_ssize_t * __pyx_v_src_shape,Py_ssize_t * __pyx_v_dst_shape,int __pyx_v_ndim,size_t __pyx_v_itemsize)23909 static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v_src_strides, char *__pyx_v_dst_data, Py_ssize_t *__pyx_v_dst_strides, Py_ssize_t *__pyx_v_src_shape, Py_ssize_t *__pyx_v_dst_shape, int __pyx_v_ndim, size_t __pyx_v_itemsize) {
23910   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
23911   CYTHON_UNUSED Py_ssize_t __pyx_v_src_extent;
23912   Py_ssize_t __pyx_v_dst_extent;
23913   Py_ssize_t __pyx_v_src_stride;
23914   Py_ssize_t __pyx_v_dst_stride;
23915   int __pyx_t_1;
23916   int __pyx_t_2;
23917   int __pyx_t_3;
23918   Py_ssize_t __pyx_t_4;
23919   Py_ssize_t __pyx_t_5;
23920   Py_ssize_t __pyx_t_6;
23921 
23922   /* "View.MemoryView":1143
23923  *
23924  *     cdef Py_ssize_t i
23925  *     cdef Py_ssize_t src_extent = src_shape[0]             # <<<<<<<<<<<<<<
23926  *     cdef Py_ssize_t dst_extent = dst_shape[0]
23927  *     cdef Py_ssize_t src_stride = src_strides[0]
23928  */
23929   __pyx_v_src_extent = (__pyx_v_src_shape[0]);
23930 
23931   /* "View.MemoryView":1144
23932  *     cdef Py_ssize_t i
23933  *     cdef Py_ssize_t src_extent = src_shape[0]
23934  *     cdef Py_ssize_t dst_extent = dst_shape[0]             # <<<<<<<<<<<<<<
23935  *     cdef Py_ssize_t src_stride = src_strides[0]
23936  *     cdef Py_ssize_t dst_stride = dst_strides[0]
23937  */
23938   __pyx_v_dst_extent = (__pyx_v_dst_shape[0]);
23939 
23940   /* "View.MemoryView":1145
23941  *     cdef Py_ssize_t src_extent = src_shape[0]
23942  *     cdef Py_ssize_t dst_extent = dst_shape[0]
23943  *     cdef Py_ssize_t src_stride = src_strides[0]             # <<<<<<<<<<<<<<
23944  *     cdef Py_ssize_t dst_stride = dst_strides[0]
23945  *
23946  */
23947   __pyx_v_src_stride = (__pyx_v_src_strides[0]);
23948 
23949   /* "View.MemoryView":1146
23950  *     cdef Py_ssize_t dst_extent = dst_shape[0]
23951  *     cdef Py_ssize_t src_stride = src_strides[0]
23952  *     cdef Py_ssize_t dst_stride = dst_strides[0]             # <<<<<<<<<<<<<<
23953  *
23954  *     if ndim == 1:
23955  */
23956   __pyx_v_dst_stride = (__pyx_v_dst_strides[0]);
23957 
23958   /* "View.MemoryView":1148
23959  *     cdef Py_ssize_t dst_stride = dst_strides[0]
23960  *
23961  *     if ndim == 1:             # <<<<<<<<<<<<<<
23962  *        if (src_stride > 0 and dst_stride > 0 and
23963  *            <size_t> src_stride == itemsize == <size_t> dst_stride):
23964  */
23965   __pyx_t_1 = ((__pyx_v_ndim == 1) != 0);
23966   if (__pyx_t_1) {
23967 
23968     /* "View.MemoryView":1149
23969  *
23970  *     if ndim == 1:
23971  *        if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
23972  *            <size_t> src_stride == itemsize == <size_t> dst_stride):
23973  *            memcpy(dst_data, src_data, itemsize * dst_extent)
23974  */
23975     __pyx_t_2 = ((__pyx_v_src_stride > 0) != 0);
23976     if (__pyx_t_2) {
23977     } else {
23978       __pyx_t_1 = __pyx_t_2;
23979       goto __pyx_L5_bool_binop_done;
23980     }
23981     __pyx_t_2 = ((__pyx_v_dst_stride > 0) != 0);
23982     if (__pyx_t_2) {
23983     } else {
23984       __pyx_t_1 = __pyx_t_2;
23985       goto __pyx_L5_bool_binop_done;
23986     }
23987 
23988     /* "View.MemoryView":1150
23989  *     if ndim == 1:
23990  *        if (src_stride > 0 and dst_stride > 0 and
23991  *            <size_t> src_stride == itemsize == <size_t> dst_stride):             # <<<<<<<<<<<<<<
23992  *            memcpy(dst_data, src_data, itemsize * dst_extent)
23993  *        else:
23994  */
23995     __pyx_t_2 = (((size_t)__pyx_v_src_stride) == __pyx_v_itemsize);
23996     if (__pyx_t_2) {
23997       __pyx_t_2 = (__pyx_v_itemsize == ((size_t)__pyx_v_dst_stride));
23998     }
23999     __pyx_t_3 = (__pyx_t_2 != 0);
24000     __pyx_t_1 = __pyx_t_3;
24001     __pyx_L5_bool_binop_done:;
24002 
24003     /* "View.MemoryView":1149
24004  *
24005  *     if ndim == 1:
24006  *        if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
24007  *            <size_t> src_stride == itemsize == <size_t> dst_stride):
24008  *            memcpy(dst_data, src_data, itemsize * dst_extent)
24009  */
24010     if (__pyx_t_1) {
24011 
24012       /* "View.MemoryView":1151
24013  *        if (src_stride > 0 and dst_stride > 0 and
24014  *            <size_t> src_stride == itemsize == <size_t> dst_stride):
24015  *            memcpy(dst_data, src_data, itemsize * dst_extent)             # <<<<<<<<<<<<<<
24016  *        else:
24017  *            for i in range(dst_extent):
24018  */
24019       (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent)));
24020 
24021       /* "View.MemoryView":1149
24022  *
24023  *     if ndim == 1:
24024  *        if (src_stride > 0 and dst_stride > 0 and             # <<<<<<<<<<<<<<
24025  *            <size_t> src_stride == itemsize == <size_t> dst_stride):
24026  *            memcpy(dst_data, src_data, itemsize * dst_extent)
24027  */
24028       goto __pyx_L4;
24029     }
24030 
24031     /* "View.MemoryView":1153
24032  *            memcpy(dst_data, src_data, itemsize * dst_extent)
24033  *        else:
24034  *            for i in range(dst_extent):             # <<<<<<<<<<<<<<
24035  *                memcpy(dst_data, src_data, itemsize)
24036  *                src_data += src_stride
24037  */
24038     /*else*/ {
24039       __pyx_t_4 = __pyx_v_dst_extent;
24040       __pyx_t_5 = __pyx_t_4;
24041       for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
24042         __pyx_v_i = __pyx_t_6;
24043 
24044         /* "View.MemoryView":1154
24045  *        else:
24046  *            for i in range(dst_extent):
24047  *                memcpy(dst_data, src_data, itemsize)             # <<<<<<<<<<<<<<
24048  *                src_data += src_stride
24049  *                dst_data += dst_stride
24050  */
24051         (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize));
24052 
24053         /* "View.MemoryView":1155
24054  *            for i in range(dst_extent):
24055  *                memcpy(dst_data, src_data, itemsize)
24056  *                src_data += src_stride             # <<<<<<<<<<<<<<
24057  *                dst_data += dst_stride
24058  *     else:
24059  */
24060         __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride);
24061 
24062         /* "View.MemoryView":1156
24063  *                memcpy(dst_data, src_data, itemsize)
24064  *                src_data += src_stride
24065  *                dst_data += dst_stride             # <<<<<<<<<<<<<<
24066  *     else:
24067  *         for i in range(dst_extent):
24068  */
24069         __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride);
24070       }
24071     }
24072     __pyx_L4:;
24073 
24074     /* "View.MemoryView":1148
24075  *     cdef Py_ssize_t dst_stride = dst_strides[0]
24076  *
24077  *     if ndim == 1:             # <<<<<<<<<<<<<<
24078  *        if (src_stride > 0 and dst_stride > 0 and
24079  *            <size_t> src_stride == itemsize == <size_t> dst_stride):
24080  */
24081     goto __pyx_L3;
24082   }
24083 
24084   /* "View.MemoryView":1158
24085  *                dst_data += dst_stride
24086  *     else:
24087  *         for i in range(dst_extent):             # <<<<<<<<<<<<<<
24088  *             _copy_strided_to_strided(src_data, src_strides + 1,
24089  *                                      dst_data, dst_strides + 1,
24090  */
24091   /*else*/ {
24092     __pyx_t_4 = __pyx_v_dst_extent;
24093     __pyx_t_5 = __pyx_t_4;
24094     for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
24095       __pyx_v_i = __pyx_t_6;
24096 
24097       /* "View.MemoryView":1159
24098  *     else:
24099  *         for i in range(dst_extent):
24100  *             _copy_strided_to_strided(src_data, src_strides + 1,             # <<<<<<<<<<<<<<
24101  *                                      dst_data, dst_strides + 1,
24102  *                                      src_shape + 1, dst_shape + 1,
24103  */
24104       _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize);
24105 
24106       /* "View.MemoryView":1163
24107  *                                      src_shape + 1, dst_shape + 1,
24108  *                                      ndim - 1, itemsize)
24109  *             src_data += src_stride             # <<<<<<<<<<<<<<
24110  *             dst_data += dst_stride
24111  *
24112  */
24113       __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride);
24114 
24115       /* "View.MemoryView":1164
24116  *                                      ndim - 1, itemsize)
24117  *             src_data += src_stride
24118  *             dst_data += dst_stride             # <<<<<<<<<<<<<<
24119  *
24120  * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,
24121  */
24122       __pyx_v_dst_data = (__pyx_v_dst_data + __pyx_v_dst_stride);
24123     }
24124   }
24125   __pyx_L3:;
24126 
24127   /* "View.MemoryView":1136
24128  *
24129  * @cython.cdivision(True)
24130  * cdef void _copy_strided_to_strided(char *src_data, Py_ssize_t *src_strides,             # <<<<<<<<<<<<<<
24131  *                                    char *dst_data, Py_ssize_t *dst_strides,
24132  *                                    Py_ssize_t *src_shape, Py_ssize_t *dst_shape,
24133  */
24134 
24135   /* function exit code */
24136 }
24137 
24138 /* "View.MemoryView":1166
24139  *             dst_data += dst_stride
24140  *
24141  * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
24142  *                                   __Pyx_memviewslice *dst,
24143  *                                   int ndim, size_t itemsize) nogil:
24144  */
24145 
copy_strided_to_strided(__Pyx_memviewslice * __pyx_v_src,__Pyx_memviewslice * __pyx_v_dst,int __pyx_v_ndim,size_t __pyx_v_itemsize)24146 static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) {
24147 
24148   /* "View.MemoryView":1169
24149  *                                   __Pyx_memviewslice *dst,
24150  *                                   int ndim, size_t itemsize) nogil:
24151  *     _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides,             # <<<<<<<<<<<<<<
24152  *                              src.shape, dst.shape, ndim, itemsize)
24153  *
24154  */
24155   _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize);
24156 
24157   /* "View.MemoryView":1166
24158  *             dst_data += dst_stride
24159  *
24160  * cdef void copy_strided_to_strided(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
24161  *                                   __Pyx_memviewslice *dst,
24162  *                                   int ndim, size_t itemsize) nogil:
24163  */
24164 
24165   /* function exit code */
24166 }
24167 
24168 /* "View.MemoryView":1173
24169  *
24170  * @cname('__pyx_memoryview_slice_get_size')
24171  * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil:             # <<<<<<<<<<<<<<
24172  *     "Return the size of the memory occupied by the slice in number of bytes"
24173  *     cdef int i
24174  */
24175 
__pyx_memoryview_slice_get_size(__Pyx_memviewslice * __pyx_v_src,int __pyx_v_ndim)24176 static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_src, int __pyx_v_ndim) {
24177   int __pyx_v_i;
24178   Py_ssize_t __pyx_v_size;
24179   Py_ssize_t __pyx_r;
24180   Py_ssize_t __pyx_t_1;
24181   int __pyx_t_2;
24182   int __pyx_t_3;
24183   int __pyx_t_4;
24184 
24185   /* "View.MemoryView":1176
24186  *     "Return the size of the memory occupied by the slice in number of bytes"
24187  *     cdef int i
24188  *     cdef Py_ssize_t size = src.memview.view.itemsize             # <<<<<<<<<<<<<<
24189  *
24190  *     for i in range(ndim):
24191  */
24192   __pyx_t_1 = __pyx_v_src->memview->view.itemsize;
24193   __pyx_v_size = __pyx_t_1;
24194 
24195   /* "View.MemoryView":1178
24196  *     cdef Py_ssize_t size = src.memview.view.itemsize
24197  *
24198  *     for i in range(ndim):             # <<<<<<<<<<<<<<
24199  *         size *= src.shape[i]
24200  *
24201  */
24202   __pyx_t_2 = __pyx_v_ndim;
24203   __pyx_t_3 = __pyx_t_2;
24204   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
24205     __pyx_v_i = __pyx_t_4;
24206 
24207     /* "View.MemoryView":1179
24208  *
24209  *     for i in range(ndim):
24210  *         size *= src.shape[i]             # <<<<<<<<<<<<<<
24211  *
24212  *     return size
24213  */
24214     __pyx_v_size = (__pyx_v_size * (__pyx_v_src->shape[__pyx_v_i]));
24215   }
24216 
24217   /* "View.MemoryView":1181
24218  *         size *= src.shape[i]
24219  *
24220  *     return size             # <<<<<<<<<<<<<<
24221  *
24222  * @cname('__pyx_fill_contig_strides_array')
24223  */
24224   __pyx_r = __pyx_v_size;
24225   goto __pyx_L0;
24226 
24227   /* "View.MemoryView":1173
24228  *
24229  * @cname('__pyx_memoryview_slice_get_size')
24230  * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) nogil:             # <<<<<<<<<<<<<<
24231  *     "Return the size of the memory occupied by the slice in number of bytes"
24232  *     cdef int i
24233  */
24234 
24235   /* function exit code */
24236   __pyx_L0:;
24237   return __pyx_r;
24238 }
24239 
24240 /* "View.MemoryView":1184
24241  *
24242  * @cname('__pyx_fill_contig_strides_array')
24243  * cdef Py_ssize_t fill_contig_strides_array(             # <<<<<<<<<<<<<<
24244  *                 Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride,
24245  *                 int ndim, char order) nogil:
24246  */
24247 
__pyx_fill_contig_strides_array(Py_ssize_t * __pyx_v_shape,Py_ssize_t * __pyx_v_strides,Py_ssize_t __pyx_v_stride,int __pyx_v_ndim,char __pyx_v_order)24248 static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, Py_ssize_t __pyx_v_stride, int __pyx_v_ndim, char __pyx_v_order) {
24249   int __pyx_v_idx;
24250   Py_ssize_t __pyx_r;
24251   int __pyx_t_1;
24252   int __pyx_t_2;
24253   int __pyx_t_3;
24254   int __pyx_t_4;
24255 
24256   /* "View.MemoryView":1193
24257  *     cdef int idx
24258  *
24259  *     if order == 'F':             # <<<<<<<<<<<<<<
24260  *         for idx in range(ndim):
24261  *             strides[idx] = stride
24262  */
24263   __pyx_t_1 = ((__pyx_v_order == 'F') != 0);
24264   if (__pyx_t_1) {
24265 
24266     /* "View.MemoryView":1194
24267  *
24268  *     if order == 'F':
24269  *         for idx in range(ndim):             # <<<<<<<<<<<<<<
24270  *             strides[idx] = stride
24271  *             stride = stride * shape[idx]
24272  */
24273     __pyx_t_2 = __pyx_v_ndim;
24274     __pyx_t_3 = __pyx_t_2;
24275     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
24276       __pyx_v_idx = __pyx_t_4;
24277 
24278       /* "View.MemoryView":1195
24279  *     if order == 'F':
24280  *         for idx in range(ndim):
24281  *             strides[idx] = stride             # <<<<<<<<<<<<<<
24282  *             stride = stride * shape[idx]
24283  *     else:
24284  */
24285       (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride;
24286 
24287       /* "View.MemoryView":1196
24288  *         for idx in range(ndim):
24289  *             strides[idx] = stride
24290  *             stride = stride * shape[idx]             # <<<<<<<<<<<<<<
24291  *     else:
24292  *         for idx in range(ndim - 1, -1, -1):
24293  */
24294       __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx]));
24295     }
24296 
24297     /* "View.MemoryView":1193
24298  *     cdef int idx
24299  *
24300  *     if order == 'F':             # <<<<<<<<<<<<<<
24301  *         for idx in range(ndim):
24302  *             strides[idx] = stride
24303  */
24304     goto __pyx_L3;
24305   }
24306 
24307   /* "View.MemoryView":1198
24308  *             stride = stride * shape[idx]
24309  *     else:
24310  *         for idx in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
24311  *             strides[idx] = stride
24312  *             stride = stride * shape[idx]
24313  */
24314   /*else*/ {
24315     for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) {
24316       __pyx_v_idx = __pyx_t_2;
24317 
24318       /* "View.MemoryView":1199
24319  *     else:
24320  *         for idx in range(ndim - 1, -1, -1):
24321  *             strides[idx] = stride             # <<<<<<<<<<<<<<
24322  *             stride = stride * shape[idx]
24323  *
24324  */
24325       (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride;
24326 
24327       /* "View.MemoryView":1200
24328  *         for idx in range(ndim - 1, -1, -1):
24329  *             strides[idx] = stride
24330  *             stride = stride * shape[idx]             # <<<<<<<<<<<<<<
24331  *
24332  *     return stride
24333  */
24334       __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx]));
24335     }
24336   }
24337   __pyx_L3:;
24338 
24339   /* "View.MemoryView":1202
24340  *             stride = stride * shape[idx]
24341  *
24342  *     return stride             # <<<<<<<<<<<<<<
24343  *
24344  * @cname('__pyx_memoryview_copy_data_to_temp')
24345  */
24346   __pyx_r = __pyx_v_stride;
24347   goto __pyx_L0;
24348 
24349   /* "View.MemoryView":1184
24350  *
24351  * @cname('__pyx_fill_contig_strides_array')
24352  * cdef Py_ssize_t fill_contig_strides_array(             # <<<<<<<<<<<<<<
24353  *                 Py_ssize_t *shape, Py_ssize_t *strides, Py_ssize_t stride,
24354  *                 int ndim, char order) nogil:
24355  */
24356 
24357   /* function exit code */
24358   __pyx_L0:;
24359   return __pyx_r;
24360 }
24361 
24362 /* "View.MemoryView":1205
24363  *
24364  * @cname('__pyx_memoryview_copy_data_to_temp')
24365  * cdef void *copy_data_to_temp(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
24366  *                              __Pyx_memviewslice *tmpslice,
24367  *                              char order,
24368  */
24369 
__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice * __pyx_v_src,__Pyx_memviewslice * __pyx_v_tmpslice,char __pyx_v_order,int __pyx_v_ndim)24370 static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_tmpslice, char __pyx_v_order, int __pyx_v_ndim) {
24371   int __pyx_v_i;
24372   void *__pyx_v_result;
24373   size_t __pyx_v_itemsize;
24374   size_t __pyx_v_size;
24375   void *__pyx_r;
24376   Py_ssize_t __pyx_t_1;
24377   int __pyx_t_2;
24378   int __pyx_t_3;
24379   struct __pyx_memoryview_obj *__pyx_t_4;
24380   int __pyx_t_5;
24381   int __pyx_t_6;
24382 
24383   /* "View.MemoryView":1216
24384  *     cdef void *result
24385  *
24386  *     cdef size_t itemsize = src.memview.view.itemsize             # <<<<<<<<<<<<<<
24387  *     cdef size_t size = slice_get_size(src, ndim)
24388  *
24389  */
24390   __pyx_t_1 = __pyx_v_src->memview->view.itemsize;
24391   __pyx_v_itemsize = __pyx_t_1;
24392 
24393   /* "View.MemoryView":1217
24394  *
24395  *     cdef size_t itemsize = src.memview.view.itemsize
24396  *     cdef size_t size = slice_get_size(src, ndim)             # <<<<<<<<<<<<<<
24397  *
24398  *     result = malloc(size)
24399  */
24400   __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim);
24401 
24402   /* "View.MemoryView":1219
24403  *     cdef size_t size = slice_get_size(src, ndim)
24404  *
24405  *     result = malloc(size)             # <<<<<<<<<<<<<<
24406  *     if not result:
24407  *         _err(MemoryError, NULL)
24408  */
24409   __pyx_v_result = malloc(__pyx_v_size);
24410 
24411   /* "View.MemoryView":1220
24412  *
24413  *     result = malloc(size)
24414  *     if not result:             # <<<<<<<<<<<<<<
24415  *         _err(MemoryError, NULL)
24416  *
24417  */
24418   __pyx_t_2 = ((!(__pyx_v_result != 0)) != 0);
24419   if (__pyx_t_2) {
24420 
24421     /* "View.MemoryView":1221
24422  *     result = malloc(size)
24423  *     if not result:
24424  *         _err(MemoryError, NULL)             # <<<<<<<<<<<<<<
24425  *
24426  *
24427  */
24428     __pyx_t_3 = __pyx_memoryview_err(__pyx_builtin_MemoryError, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1221, __pyx_L1_error)
24429 
24430     /* "View.MemoryView":1220
24431  *
24432  *     result = malloc(size)
24433  *     if not result:             # <<<<<<<<<<<<<<
24434  *         _err(MemoryError, NULL)
24435  *
24436  */
24437   }
24438 
24439   /* "View.MemoryView":1224
24440  *
24441  *
24442  *     tmpslice.data = <char *> result             # <<<<<<<<<<<<<<
24443  *     tmpslice.memview = src.memview
24444  *     for i in range(ndim):
24445  */
24446   __pyx_v_tmpslice->data = ((char *)__pyx_v_result);
24447 
24448   /* "View.MemoryView":1225
24449  *
24450  *     tmpslice.data = <char *> result
24451  *     tmpslice.memview = src.memview             # <<<<<<<<<<<<<<
24452  *     for i in range(ndim):
24453  *         tmpslice.shape[i] = src.shape[i]
24454  */
24455   __pyx_t_4 = __pyx_v_src->memview;
24456   __pyx_v_tmpslice->memview = __pyx_t_4;
24457 
24458   /* "View.MemoryView":1226
24459  *     tmpslice.data = <char *> result
24460  *     tmpslice.memview = src.memview
24461  *     for i in range(ndim):             # <<<<<<<<<<<<<<
24462  *         tmpslice.shape[i] = src.shape[i]
24463  *         tmpslice.suboffsets[i] = -1
24464  */
24465   __pyx_t_3 = __pyx_v_ndim;
24466   __pyx_t_5 = __pyx_t_3;
24467   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
24468     __pyx_v_i = __pyx_t_6;
24469 
24470     /* "View.MemoryView":1227
24471  *     tmpslice.memview = src.memview
24472  *     for i in range(ndim):
24473  *         tmpslice.shape[i] = src.shape[i]             # <<<<<<<<<<<<<<
24474  *         tmpslice.suboffsets[i] = -1
24475  *
24476  */
24477     (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]);
24478 
24479     /* "View.MemoryView":1228
24480  *     for i in range(ndim):
24481  *         tmpslice.shape[i] = src.shape[i]
24482  *         tmpslice.suboffsets[i] = -1             # <<<<<<<<<<<<<<
24483  *
24484  *     fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize,
24485  */
24486     (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L;
24487   }
24488 
24489   /* "View.MemoryView":1230
24490  *         tmpslice.suboffsets[i] = -1
24491  *
24492  *     fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize,             # <<<<<<<<<<<<<<
24493  *                               ndim, order)
24494  *
24495  */
24496   (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order));
24497 
24498   /* "View.MemoryView":1234
24499  *
24500  *
24501  *     for i in range(ndim):             # <<<<<<<<<<<<<<
24502  *         if tmpslice.shape[i] == 1:
24503  *             tmpslice.strides[i] = 0
24504  */
24505   __pyx_t_3 = __pyx_v_ndim;
24506   __pyx_t_5 = __pyx_t_3;
24507   for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
24508     __pyx_v_i = __pyx_t_6;
24509 
24510     /* "View.MemoryView":1235
24511  *
24512  *     for i in range(ndim):
24513  *         if tmpslice.shape[i] == 1:             # <<<<<<<<<<<<<<
24514  *             tmpslice.strides[i] = 0
24515  *
24516  */
24517     __pyx_t_2 = (((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1) != 0);
24518     if (__pyx_t_2) {
24519 
24520       /* "View.MemoryView":1236
24521  *     for i in range(ndim):
24522  *         if tmpslice.shape[i] == 1:
24523  *             tmpslice.strides[i] = 0             # <<<<<<<<<<<<<<
24524  *
24525  *     if slice_is_contig(src[0], order, ndim):
24526  */
24527       (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0;
24528 
24529       /* "View.MemoryView":1235
24530  *
24531  *     for i in range(ndim):
24532  *         if tmpslice.shape[i] == 1:             # <<<<<<<<<<<<<<
24533  *             tmpslice.strides[i] = 0
24534  *
24535  */
24536     }
24537   }
24538 
24539   /* "View.MemoryView":1238
24540  *             tmpslice.strides[i] = 0
24541  *
24542  *     if slice_is_contig(src[0], order, ndim):             # <<<<<<<<<<<<<<
24543  *         memcpy(result, src.data, size)
24544  *     else:
24545  */
24546   __pyx_t_2 = (__pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim) != 0);
24547   if (__pyx_t_2) {
24548 
24549     /* "View.MemoryView":1239
24550  *
24551  *     if slice_is_contig(src[0], order, ndim):
24552  *         memcpy(result, src.data, size)             # <<<<<<<<<<<<<<
24553  *     else:
24554  *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)
24555  */
24556     (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size));
24557 
24558     /* "View.MemoryView":1238
24559  *             tmpslice.strides[i] = 0
24560  *
24561  *     if slice_is_contig(src[0], order, ndim):             # <<<<<<<<<<<<<<
24562  *         memcpy(result, src.data, size)
24563  *     else:
24564  */
24565     goto __pyx_L9;
24566   }
24567 
24568   /* "View.MemoryView":1241
24569  *         memcpy(result, src.data, size)
24570  *     else:
24571  *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)             # <<<<<<<<<<<<<<
24572  *
24573  *     return result
24574  */
24575   /*else*/ {
24576     copy_strided_to_strided(__pyx_v_src, __pyx_v_tmpslice, __pyx_v_ndim, __pyx_v_itemsize);
24577   }
24578   __pyx_L9:;
24579 
24580   /* "View.MemoryView":1243
24581  *         copy_strided_to_strided(src, tmpslice, ndim, itemsize)
24582  *
24583  *     return result             # <<<<<<<<<<<<<<
24584  *
24585  *
24586  */
24587   __pyx_r = __pyx_v_result;
24588   goto __pyx_L0;
24589 
24590   /* "View.MemoryView":1205
24591  *
24592  * @cname('__pyx_memoryview_copy_data_to_temp')
24593  * cdef void *copy_data_to_temp(__Pyx_memviewslice *src,             # <<<<<<<<<<<<<<
24594  *                              __Pyx_memviewslice *tmpslice,
24595  *                              char order,
24596  */
24597 
24598   /* function exit code */
24599   __pyx_L1_error:;
24600   {
24601     #ifdef WITH_THREAD
24602     PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
24603     #endif
24604     __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename);
24605     #ifdef WITH_THREAD
24606     __Pyx_PyGILState_Release(__pyx_gilstate_save);
24607     #endif
24608   }
24609   __pyx_r = NULL;
24610   __pyx_L0:;
24611   return __pyx_r;
24612 }
24613 
24614 /* "View.MemoryView":1248
24615  *
24616  * @cname('__pyx_memoryview_err_extents')
24617  * cdef int _err_extents(int i, Py_ssize_t extent1,             # <<<<<<<<<<<<<<
24618  *                              Py_ssize_t extent2) except -1 with gil:
24619  *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %
24620  */
24621 
__pyx_memoryview_err_extents(int __pyx_v_i,Py_ssize_t __pyx_v_extent1,Py_ssize_t __pyx_v_extent2)24622 static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent1, Py_ssize_t __pyx_v_extent2) {
24623   int __pyx_r;
24624   __Pyx_RefNannyDeclarations
24625   PyObject *__pyx_t_1 = NULL;
24626   PyObject *__pyx_t_2 = NULL;
24627   PyObject *__pyx_t_3 = NULL;
24628   PyObject *__pyx_t_4 = NULL;
24629   #ifdef WITH_THREAD
24630   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
24631   #endif
24632   __Pyx_RefNannySetupContext("_err_extents", 0);
24633 
24634   /* "View.MemoryView":1251
24635  *                              Py_ssize_t extent2) except -1 with gil:
24636  *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %
24637  *                                                         (i, extent1, extent2))             # <<<<<<<<<<<<<<
24638  *
24639  * @cname('__pyx_memoryview_err_dim')
24640  */
24641   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1251, __pyx_L1_error)
24642   __Pyx_GOTREF(__pyx_t_1);
24643   __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_extent1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1251, __pyx_L1_error)
24644   __Pyx_GOTREF(__pyx_t_2);
24645   __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_extent2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1251, __pyx_L1_error)
24646   __Pyx_GOTREF(__pyx_t_3);
24647   __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1251, __pyx_L1_error)
24648   __Pyx_GOTREF(__pyx_t_4);
24649   __Pyx_GIVEREF(__pyx_t_1);
24650   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
24651   __Pyx_GIVEREF(__pyx_t_2);
24652   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
24653   __Pyx_GIVEREF(__pyx_t_3);
24654   PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
24655   __pyx_t_1 = 0;
24656   __pyx_t_2 = 0;
24657   __pyx_t_3 = 0;
24658 
24659   /* "View.MemoryView":1250
24660  * cdef int _err_extents(int i, Py_ssize_t extent1,
24661  *                              Py_ssize_t extent2) except -1 with gil:
24662  *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %             # <<<<<<<<<<<<<<
24663  *                                                         (i, extent1, extent2))
24664  *
24665  */
24666   __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1250, __pyx_L1_error)
24667   __Pyx_GOTREF(__pyx_t_3);
24668   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
24669   __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1250, __pyx_L1_error)
24670   __Pyx_GOTREF(__pyx_t_4);
24671   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24672   __Pyx_Raise(__pyx_t_4, 0, 0, 0);
24673   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
24674   __PYX_ERR(1, 1250, __pyx_L1_error)
24675 
24676   /* "View.MemoryView":1248
24677  *
24678  * @cname('__pyx_memoryview_err_extents')
24679  * cdef int _err_extents(int i, Py_ssize_t extent1,             # <<<<<<<<<<<<<<
24680  *                              Py_ssize_t extent2) except -1 with gil:
24681  *     raise ValueError("got differing extents in dimension %d (got %d and %d)" %
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_4);
24690   __Pyx_AddTraceback("View.MemoryView._err_extents", __pyx_clineno, __pyx_lineno, __pyx_filename);
24691   __pyx_r = -1;
24692   __Pyx_RefNannyFinishContext();
24693   #ifdef WITH_THREAD
24694   __Pyx_PyGILState_Release(__pyx_gilstate_save);
24695   #endif
24696   return __pyx_r;
24697 }
24698 
24699 /* "View.MemoryView":1254
24700  *
24701  * @cname('__pyx_memoryview_err_dim')
24702  * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil:             # <<<<<<<<<<<<<<
24703  *     raise error(msg.decode('ascii') % dim)
24704  *
24705  */
24706 
__pyx_memoryview_err_dim(PyObject * __pyx_v_error,char * __pyx_v_msg,int __pyx_v_dim)24707 static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg, int __pyx_v_dim) {
24708   int __pyx_r;
24709   __Pyx_RefNannyDeclarations
24710   PyObject *__pyx_t_1 = NULL;
24711   PyObject *__pyx_t_2 = NULL;
24712   PyObject *__pyx_t_3 = NULL;
24713   PyObject *__pyx_t_4 = NULL;
24714   #ifdef WITH_THREAD
24715   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
24716   #endif
24717   __Pyx_RefNannySetupContext("_err_dim", 0);
24718   __Pyx_INCREF(__pyx_v_error);
24719 
24720   /* "View.MemoryView":1255
24721  * @cname('__pyx_memoryview_err_dim')
24722  * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil:
24723  *     raise error(msg.decode('ascii') % dim)             # <<<<<<<<<<<<<<
24724  *
24725  * @cname('__pyx_memoryview_err')
24726  */
24727   __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1255, __pyx_L1_error)
24728   __Pyx_GOTREF(__pyx_t_2);
24729   __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1255, __pyx_L1_error)
24730   __Pyx_GOTREF(__pyx_t_3);
24731   __pyx_t_4 = PyUnicode_Format(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1255, __pyx_L1_error)
24732   __Pyx_GOTREF(__pyx_t_4);
24733   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24734   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24735   __Pyx_INCREF(__pyx_v_error);
24736   __pyx_t_3 = __pyx_v_error; __pyx_t_2 = NULL;
24737   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
24738     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
24739     if (likely(__pyx_t_2)) {
24740       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
24741       __Pyx_INCREF(__pyx_t_2);
24742       __Pyx_INCREF(function);
24743       __Pyx_DECREF_SET(__pyx_t_3, function);
24744     }
24745   }
24746   __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
24747   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24748   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
24749   if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1255, __pyx_L1_error)
24750   __Pyx_GOTREF(__pyx_t_1);
24751   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24752   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
24753   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24754   __PYX_ERR(1, 1255, __pyx_L1_error)
24755 
24756   /* "View.MemoryView":1254
24757  *
24758  * @cname('__pyx_memoryview_err_dim')
24759  * cdef int _err_dim(object error, char *msg, int dim) except -1 with gil:             # <<<<<<<<<<<<<<
24760  *     raise error(msg.decode('ascii') % dim)
24761  *
24762  */
24763 
24764   /* function exit code */
24765   __pyx_L1_error:;
24766   __Pyx_XDECREF(__pyx_t_1);
24767   __Pyx_XDECREF(__pyx_t_2);
24768   __Pyx_XDECREF(__pyx_t_3);
24769   __Pyx_XDECREF(__pyx_t_4);
24770   __Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
24771   __pyx_r = -1;
24772   __Pyx_XDECREF(__pyx_v_error);
24773   __Pyx_RefNannyFinishContext();
24774   #ifdef WITH_THREAD
24775   __Pyx_PyGILState_Release(__pyx_gilstate_save);
24776   #endif
24777   return __pyx_r;
24778 }
24779 
24780 /* "View.MemoryView":1258
24781  *
24782  * @cname('__pyx_memoryview_err')
24783  * cdef int _err(object error, char *msg) except -1 with gil:             # <<<<<<<<<<<<<<
24784  *     if msg != NULL:
24785  *         raise error(msg.decode('ascii'))
24786  */
24787 
__pyx_memoryview_err(PyObject * __pyx_v_error,char * __pyx_v_msg)24788 static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
24789   int __pyx_r;
24790   __Pyx_RefNannyDeclarations
24791   int __pyx_t_1;
24792   PyObject *__pyx_t_2 = NULL;
24793   PyObject *__pyx_t_3 = NULL;
24794   PyObject *__pyx_t_4 = NULL;
24795   PyObject *__pyx_t_5 = NULL;
24796   #ifdef WITH_THREAD
24797   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
24798   #endif
24799   __Pyx_RefNannySetupContext("_err", 0);
24800   __Pyx_INCREF(__pyx_v_error);
24801 
24802   /* "View.MemoryView":1259
24803  * @cname('__pyx_memoryview_err')
24804  * cdef int _err(object error, char *msg) except -1 with gil:
24805  *     if msg != NULL:             # <<<<<<<<<<<<<<
24806  *         raise error(msg.decode('ascii'))
24807  *     else:
24808  */
24809   __pyx_t_1 = ((__pyx_v_msg != NULL) != 0);
24810   if (unlikely(__pyx_t_1)) {
24811 
24812     /* "View.MemoryView":1260
24813  * cdef int _err(object error, char *msg) except -1 with gil:
24814  *     if msg != NULL:
24815  *         raise error(msg.decode('ascii'))             # <<<<<<<<<<<<<<
24816  *     else:
24817  *         raise error
24818  */
24819     __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_msg, 0, strlen(__pyx_v_msg), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1260, __pyx_L1_error)
24820     __Pyx_GOTREF(__pyx_t_3);
24821     __Pyx_INCREF(__pyx_v_error);
24822     __pyx_t_4 = __pyx_v_error; __pyx_t_5 = NULL;
24823     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
24824       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
24825       if (likely(__pyx_t_5)) {
24826         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
24827         __Pyx_INCREF(__pyx_t_5);
24828         __Pyx_INCREF(function);
24829         __Pyx_DECREF_SET(__pyx_t_4, function);
24830       }
24831     }
24832     __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
24833     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
24834     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24835     if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1260, __pyx_L1_error)
24836     __Pyx_GOTREF(__pyx_t_2);
24837     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
24838     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
24839     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24840     __PYX_ERR(1, 1260, __pyx_L1_error)
24841 
24842     /* "View.MemoryView":1259
24843  * @cname('__pyx_memoryview_err')
24844  * cdef int _err(object error, char *msg) except -1 with gil:
24845  *     if msg != NULL:             # <<<<<<<<<<<<<<
24846  *         raise error(msg.decode('ascii'))
24847  *     else:
24848  */
24849   }
24850 
24851   /* "View.MemoryView":1262
24852  *         raise error(msg.decode('ascii'))
24853  *     else:
24854  *         raise error             # <<<<<<<<<<<<<<
24855  *
24856  * @cname('__pyx_memoryview_copy_contents')
24857  */
24858   /*else*/ {
24859     __Pyx_Raise(__pyx_v_error, 0, 0, 0);
24860     __PYX_ERR(1, 1262, __pyx_L1_error)
24861   }
24862 
24863   /* "View.MemoryView":1258
24864  *
24865  * @cname('__pyx_memoryview_err')
24866  * cdef int _err(object error, char *msg) except -1 with gil:             # <<<<<<<<<<<<<<
24867  *     if msg != NULL:
24868  *         raise error(msg.decode('ascii'))
24869  */
24870 
24871   /* function exit code */
24872   __pyx_L1_error:;
24873   __Pyx_XDECREF(__pyx_t_2);
24874   __Pyx_XDECREF(__pyx_t_3);
24875   __Pyx_XDECREF(__pyx_t_4);
24876   __Pyx_XDECREF(__pyx_t_5);
24877   __Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
24878   __pyx_r = -1;
24879   __Pyx_XDECREF(__pyx_v_error);
24880   __Pyx_RefNannyFinishContext();
24881   #ifdef WITH_THREAD
24882   __Pyx_PyGILState_Release(__pyx_gilstate_save);
24883   #endif
24884   return __pyx_r;
24885 }
24886 
24887 /* "View.MemoryView":1265
24888  *
24889  * @cname('__pyx_memoryview_copy_contents')
24890  * cdef int memoryview_copy_contents(__Pyx_memviewslice src,             # <<<<<<<<<<<<<<
24891  *                                   __Pyx_memviewslice dst,
24892  *                                   int src_ndim, int dst_ndim,
24893  */
24894 
__pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src,__Pyx_memviewslice __pyx_v_dst,int __pyx_v_src_ndim,int __pyx_v_dst_ndim,int __pyx_v_dtype_is_object)24895 static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_memviewslice __pyx_v_dst, int __pyx_v_src_ndim, int __pyx_v_dst_ndim, int __pyx_v_dtype_is_object) {
24896   void *__pyx_v_tmpdata;
24897   size_t __pyx_v_itemsize;
24898   int __pyx_v_i;
24899   char __pyx_v_order;
24900   int __pyx_v_broadcasting;
24901   int __pyx_v_direct_copy;
24902   __Pyx_memviewslice __pyx_v_tmp;
24903   int __pyx_v_ndim;
24904   int __pyx_r;
24905   Py_ssize_t __pyx_t_1;
24906   int __pyx_t_2;
24907   int __pyx_t_3;
24908   int __pyx_t_4;
24909   int __pyx_t_5;
24910   int __pyx_t_6;
24911   void *__pyx_t_7;
24912   int __pyx_t_8;
24913 
24914   /* "View.MemoryView":1273
24915  *     Check for overlapping memory and verify the shapes.
24916  *     """
24917  *     cdef void *tmpdata = NULL             # <<<<<<<<<<<<<<
24918  *     cdef size_t itemsize = src.memview.view.itemsize
24919  *     cdef int i
24920  */
24921   __pyx_v_tmpdata = NULL;
24922 
24923   /* "View.MemoryView":1274
24924  *     """
24925  *     cdef void *tmpdata = NULL
24926  *     cdef size_t itemsize = src.memview.view.itemsize             # <<<<<<<<<<<<<<
24927  *     cdef int i
24928  *     cdef char order = get_best_order(&src, src_ndim)
24929  */
24930   __pyx_t_1 = __pyx_v_src.memview->view.itemsize;
24931   __pyx_v_itemsize = __pyx_t_1;
24932 
24933   /* "View.MemoryView":1276
24934  *     cdef size_t itemsize = src.memview.view.itemsize
24935  *     cdef int i
24936  *     cdef char order = get_best_order(&src, src_ndim)             # <<<<<<<<<<<<<<
24937  *     cdef bint broadcasting = False
24938  *     cdef bint direct_copy = False
24939  */
24940   __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim);
24941 
24942   /* "View.MemoryView":1277
24943  *     cdef int i
24944  *     cdef char order = get_best_order(&src, src_ndim)
24945  *     cdef bint broadcasting = False             # <<<<<<<<<<<<<<
24946  *     cdef bint direct_copy = False
24947  *     cdef __Pyx_memviewslice tmp
24948  */
24949   __pyx_v_broadcasting = 0;
24950 
24951   /* "View.MemoryView":1278
24952  *     cdef char order = get_best_order(&src, src_ndim)
24953  *     cdef bint broadcasting = False
24954  *     cdef bint direct_copy = False             # <<<<<<<<<<<<<<
24955  *     cdef __Pyx_memviewslice tmp
24956  *
24957  */
24958   __pyx_v_direct_copy = 0;
24959 
24960   /* "View.MemoryView":1281
24961  *     cdef __Pyx_memviewslice tmp
24962  *
24963  *     if src_ndim < dst_ndim:             # <<<<<<<<<<<<<<
24964  *         broadcast_leading(&src, src_ndim, dst_ndim)
24965  *     elif dst_ndim < src_ndim:
24966  */
24967   __pyx_t_2 = ((__pyx_v_src_ndim < __pyx_v_dst_ndim) != 0);
24968   if (__pyx_t_2) {
24969 
24970     /* "View.MemoryView":1282
24971  *
24972  *     if src_ndim < dst_ndim:
24973  *         broadcast_leading(&src, src_ndim, dst_ndim)             # <<<<<<<<<<<<<<
24974  *     elif dst_ndim < src_ndim:
24975  *         broadcast_leading(&dst, dst_ndim, src_ndim)
24976  */
24977     __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim);
24978 
24979     /* "View.MemoryView":1281
24980  *     cdef __Pyx_memviewslice tmp
24981  *
24982  *     if src_ndim < dst_ndim:             # <<<<<<<<<<<<<<
24983  *         broadcast_leading(&src, src_ndim, dst_ndim)
24984  *     elif dst_ndim < src_ndim:
24985  */
24986     goto __pyx_L3;
24987   }
24988 
24989   /* "View.MemoryView":1283
24990  *     if src_ndim < dst_ndim:
24991  *         broadcast_leading(&src, src_ndim, dst_ndim)
24992  *     elif dst_ndim < src_ndim:             # <<<<<<<<<<<<<<
24993  *         broadcast_leading(&dst, dst_ndim, src_ndim)
24994  *
24995  */
24996   __pyx_t_2 = ((__pyx_v_dst_ndim < __pyx_v_src_ndim) != 0);
24997   if (__pyx_t_2) {
24998 
24999     /* "View.MemoryView":1284
25000  *         broadcast_leading(&src, src_ndim, dst_ndim)
25001  *     elif dst_ndim < src_ndim:
25002  *         broadcast_leading(&dst, dst_ndim, src_ndim)             # <<<<<<<<<<<<<<
25003  *
25004  *     cdef int ndim = max(src_ndim, dst_ndim)
25005  */
25006     __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim);
25007 
25008     /* "View.MemoryView":1283
25009  *     if src_ndim < dst_ndim:
25010  *         broadcast_leading(&src, src_ndim, dst_ndim)
25011  *     elif dst_ndim < src_ndim:             # <<<<<<<<<<<<<<
25012  *         broadcast_leading(&dst, dst_ndim, src_ndim)
25013  *
25014  */
25015   }
25016   __pyx_L3:;
25017 
25018   /* "View.MemoryView":1286
25019  *         broadcast_leading(&dst, dst_ndim, src_ndim)
25020  *
25021  *     cdef int ndim = max(src_ndim, dst_ndim)             # <<<<<<<<<<<<<<
25022  *
25023  *     for i in range(ndim):
25024  */
25025   __pyx_t_3 = __pyx_v_dst_ndim;
25026   __pyx_t_4 = __pyx_v_src_ndim;
25027   if (((__pyx_t_3 > __pyx_t_4) != 0)) {
25028     __pyx_t_5 = __pyx_t_3;
25029   } else {
25030     __pyx_t_5 = __pyx_t_4;
25031   }
25032   __pyx_v_ndim = __pyx_t_5;
25033 
25034   /* "View.MemoryView":1288
25035  *     cdef int ndim = max(src_ndim, dst_ndim)
25036  *
25037  *     for i in range(ndim):             # <<<<<<<<<<<<<<
25038  *         if src.shape[i] != dst.shape[i]:
25039  *             if src.shape[i] == 1:
25040  */
25041   __pyx_t_5 = __pyx_v_ndim;
25042   __pyx_t_3 = __pyx_t_5;
25043   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
25044     __pyx_v_i = __pyx_t_4;
25045 
25046     /* "View.MemoryView":1289
25047  *
25048  *     for i in range(ndim):
25049  *         if src.shape[i] != dst.shape[i]:             # <<<<<<<<<<<<<<
25050  *             if src.shape[i] == 1:
25051  *                 broadcasting = True
25052  */
25053     __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])) != 0);
25054     if (__pyx_t_2) {
25055 
25056       /* "View.MemoryView":1290
25057  *     for i in range(ndim):
25058  *         if src.shape[i] != dst.shape[i]:
25059  *             if src.shape[i] == 1:             # <<<<<<<<<<<<<<
25060  *                 broadcasting = True
25061  *                 src.strides[i] = 0
25062  */
25063       __pyx_t_2 = (((__pyx_v_src.shape[__pyx_v_i]) == 1) != 0);
25064       if (__pyx_t_2) {
25065 
25066         /* "View.MemoryView":1291
25067  *         if src.shape[i] != dst.shape[i]:
25068  *             if src.shape[i] == 1:
25069  *                 broadcasting = True             # <<<<<<<<<<<<<<
25070  *                 src.strides[i] = 0
25071  *             else:
25072  */
25073         __pyx_v_broadcasting = 1;
25074 
25075         /* "View.MemoryView":1292
25076  *             if src.shape[i] == 1:
25077  *                 broadcasting = True
25078  *                 src.strides[i] = 0             # <<<<<<<<<<<<<<
25079  *             else:
25080  *                 _err_extents(i, dst.shape[i], src.shape[i])
25081  */
25082         (__pyx_v_src.strides[__pyx_v_i]) = 0;
25083 
25084         /* "View.MemoryView":1290
25085  *     for i in range(ndim):
25086  *         if src.shape[i] != dst.shape[i]:
25087  *             if src.shape[i] == 1:             # <<<<<<<<<<<<<<
25088  *                 broadcasting = True
25089  *                 src.strides[i] = 0
25090  */
25091         goto __pyx_L7;
25092       }
25093 
25094       /* "View.MemoryView":1294
25095  *                 src.strides[i] = 0
25096  *             else:
25097  *                 _err_extents(i, dst.shape[i], src.shape[i])             # <<<<<<<<<<<<<<
25098  *
25099  *         if src.suboffsets[i] >= 0:
25100  */
25101       /*else*/ {
25102         __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1294, __pyx_L1_error)
25103       }
25104       __pyx_L7:;
25105 
25106       /* "View.MemoryView":1289
25107  *
25108  *     for i in range(ndim):
25109  *         if src.shape[i] != dst.shape[i]:             # <<<<<<<<<<<<<<
25110  *             if src.shape[i] == 1:
25111  *                 broadcasting = True
25112  */
25113     }
25114 
25115     /* "View.MemoryView":1296
25116  *                 _err_extents(i, dst.shape[i], src.shape[i])
25117  *
25118  *         if src.suboffsets[i] >= 0:             # <<<<<<<<<<<<<<
25119  *             _err_dim(ValueError, "Dimension %d is not direct", i)
25120  *
25121  */
25122     __pyx_t_2 = (((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0) != 0);
25123     if (__pyx_t_2) {
25124 
25125       /* "View.MemoryView":1297
25126  *
25127  *         if src.suboffsets[i] >= 0:
25128  *             _err_dim(ValueError, "Dimension %d is not direct", i)             # <<<<<<<<<<<<<<
25129  *
25130  *     if slices_overlap(&src, &dst, ndim, itemsize):
25131  */
25132       __pyx_t_6 = __pyx_memoryview_err_dim(__pyx_builtin_ValueError, ((char *)"Dimension %d is not direct"), __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error)
25133 
25134       /* "View.MemoryView":1296
25135  *                 _err_extents(i, dst.shape[i], src.shape[i])
25136  *
25137  *         if src.suboffsets[i] >= 0:             # <<<<<<<<<<<<<<
25138  *             _err_dim(ValueError, "Dimension %d is not direct", i)
25139  *
25140  */
25141     }
25142   }
25143 
25144   /* "View.MemoryView":1299
25145  *             _err_dim(ValueError, "Dimension %d is not direct", i)
25146  *
25147  *     if slices_overlap(&src, &dst, ndim, itemsize):             # <<<<<<<<<<<<<<
25148  *
25149  *         if not slice_is_contig(src, order, ndim):
25150  */
25151   __pyx_t_2 = (__pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize) != 0);
25152   if (__pyx_t_2) {
25153 
25154     /* "View.MemoryView":1301
25155  *     if slices_overlap(&src, &dst, ndim, itemsize):
25156  *
25157  *         if not slice_is_contig(src, order, ndim):             # <<<<<<<<<<<<<<
25158  *             order = get_best_order(&dst, ndim)
25159  *
25160  */
25161     __pyx_t_2 = ((!(__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim) != 0)) != 0);
25162     if (__pyx_t_2) {
25163 
25164       /* "View.MemoryView":1302
25165  *
25166  *         if not slice_is_contig(src, order, ndim):
25167  *             order = get_best_order(&dst, ndim)             # <<<<<<<<<<<<<<
25168  *
25169  *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)
25170  */
25171       __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim);
25172 
25173       /* "View.MemoryView":1301
25174  *     if slices_overlap(&src, &dst, ndim, itemsize):
25175  *
25176  *         if not slice_is_contig(src, order, ndim):             # <<<<<<<<<<<<<<
25177  *             order = get_best_order(&dst, ndim)
25178  *
25179  */
25180     }
25181 
25182     /* "View.MemoryView":1304
25183  *             order = get_best_order(&dst, ndim)
25184  *
25185  *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)             # <<<<<<<<<<<<<<
25186  *         src = tmp
25187  *
25188  */
25189     __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1304, __pyx_L1_error)
25190     __pyx_v_tmpdata = __pyx_t_7;
25191 
25192     /* "View.MemoryView":1305
25193  *
25194  *         tmpdata = copy_data_to_temp(&src, &tmp, order, ndim)
25195  *         src = tmp             # <<<<<<<<<<<<<<
25196  *
25197  *     if not broadcasting:
25198  */
25199     __pyx_v_src = __pyx_v_tmp;
25200 
25201     /* "View.MemoryView":1299
25202  *             _err_dim(ValueError, "Dimension %d is not direct", i)
25203  *
25204  *     if slices_overlap(&src, &dst, ndim, itemsize):             # <<<<<<<<<<<<<<
25205  *
25206  *         if not slice_is_contig(src, order, ndim):
25207  */
25208   }
25209 
25210   /* "View.MemoryView":1307
25211  *         src = tmp
25212  *
25213  *     if not broadcasting:             # <<<<<<<<<<<<<<
25214  *
25215  *
25216  */
25217   __pyx_t_2 = ((!(__pyx_v_broadcasting != 0)) != 0);
25218   if (__pyx_t_2) {
25219 
25220     /* "View.MemoryView":1310
25221  *
25222  *
25223  *         if slice_is_contig(src, 'C', ndim):             # <<<<<<<<<<<<<<
25224  *             direct_copy = slice_is_contig(dst, 'C', ndim)
25225  *         elif slice_is_contig(src, 'F', ndim):
25226  */
25227     __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim) != 0);
25228     if (__pyx_t_2) {
25229 
25230       /* "View.MemoryView":1311
25231  *
25232  *         if slice_is_contig(src, 'C', ndim):
25233  *             direct_copy = slice_is_contig(dst, 'C', ndim)             # <<<<<<<<<<<<<<
25234  *         elif slice_is_contig(src, 'F', ndim):
25235  *             direct_copy = slice_is_contig(dst, 'F', ndim)
25236  */
25237       __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim);
25238 
25239       /* "View.MemoryView":1310
25240  *
25241  *
25242  *         if slice_is_contig(src, 'C', ndim):             # <<<<<<<<<<<<<<
25243  *             direct_copy = slice_is_contig(dst, 'C', ndim)
25244  *         elif slice_is_contig(src, 'F', ndim):
25245  */
25246       goto __pyx_L12;
25247     }
25248 
25249     /* "View.MemoryView":1312
25250  *         if slice_is_contig(src, 'C', ndim):
25251  *             direct_copy = slice_is_contig(dst, 'C', ndim)
25252  *         elif slice_is_contig(src, 'F', ndim):             # <<<<<<<<<<<<<<
25253  *             direct_copy = slice_is_contig(dst, 'F', ndim)
25254  *
25255  */
25256     __pyx_t_2 = (__pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim) != 0);
25257     if (__pyx_t_2) {
25258 
25259       /* "View.MemoryView":1313
25260  *             direct_copy = slice_is_contig(dst, 'C', ndim)
25261  *         elif slice_is_contig(src, 'F', ndim):
25262  *             direct_copy = slice_is_contig(dst, 'F', ndim)             # <<<<<<<<<<<<<<
25263  *
25264  *         if direct_copy:
25265  */
25266       __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim);
25267 
25268       /* "View.MemoryView":1312
25269  *         if slice_is_contig(src, 'C', ndim):
25270  *             direct_copy = slice_is_contig(dst, 'C', ndim)
25271  *         elif slice_is_contig(src, 'F', ndim):             # <<<<<<<<<<<<<<
25272  *             direct_copy = slice_is_contig(dst, 'F', ndim)
25273  *
25274  */
25275     }
25276     __pyx_L12:;
25277 
25278     /* "View.MemoryView":1315
25279  *             direct_copy = slice_is_contig(dst, 'F', ndim)
25280  *
25281  *         if direct_copy:             # <<<<<<<<<<<<<<
25282  *
25283  *             refcount_copying(&dst, dtype_is_object, ndim, False)
25284  */
25285     __pyx_t_2 = (__pyx_v_direct_copy != 0);
25286     if (__pyx_t_2) {
25287 
25288       /* "View.MemoryView":1317
25289  *         if direct_copy:
25290  *
25291  *             refcount_copying(&dst, dtype_is_object, ndim, False)             # <<<<<<<<<<<<<<
25292  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
25293  *             refcount_copying(&dst, dtype_is_object, ndim, True)
25294  */
25295       __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0);
25296 
25297       /* "View.MemoryView":1318
25298  *
25299  *             refcount_copying(&dst, dtype_is_object, ndim, False)
25300  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))             # <<<<<<<<<<<<<<
25301  *             refcount_copying(&dst, dtype_is_object, ndim, True)
25302  *             free(tmpdata)
25303  */
25304       (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim)));
25305 
25306       /* "View.MemoryView":1319
25307  *             refcount_copying(&dst, dtype_is_object, ndim, False)
25308  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
25309  *             refcount_copying(&dst, dtype_is_object, ndim, True)             # <<<<<<<<<<<<<<
25310  *             free(tmpdata)
25311  *             return 0
25312  */
25313       __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1);
25314 
25315       /* "View.MemoryView":1320
25316  *             memcpy(dst.data, src.data, slice_get_size(&src, ndim))
25317  *             refcount_copying(&dst, dtype_is_object, ndim, True)
25318  *             free(tmpdata)             # <<<<<<<<<<<<<<
25319  *             return 0
25320  *
25321  */
25322       free(__pyx_v_tmpdata);
25323 
25324       /* "View.MemoryView":1321
25325  *             refcount_copying(&dst, dtype_is_object, ndim, True)
25326  *             free(tmpdata)
25327  *             return 0             # <<<<<<<<<<<<<<
25328  *
25329  *     if order == 'F' == get_best_order(&dst, ndim):
25330  */
25331       __pyx_r = 0;
25332       goto __pyx_L0;
25333 
25334       /* "View.MemoryView":1315
25335  *             direct_copy = slice_is_contig(dst, 'F', ndim)
25336  *
25337  *         if direct_copy:             # <<<<<<<<<<<<<<
25338  *
25339  *             refcount_copying(&dst, dtype_is_object, ndim, False)
25340  */
25341     }
25342 
25343     /* "View.MemoryView":1307
25344  *         src = tmp
25345  *
25346  *     if not broadcasting:             # <<<<<<<<<<<<<<
25347  *
25348  *
25349  */
25350   }
25351 
25352   /* "View.MemoryView":1323
25353  *             return 0
25354  *
25355  *     if order == 'F' == get_best_order(&dst, ndim):             # <<<<<<<<<<<<<<
25356  *
25357  *
25358  */
25359   __pyx_t_2 = (__pyx_v_order == 'F');
25360   if (__pyx_t_2) {
25361     __pyx_t_2 = ('F' == __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim));
25362   }
25363   __pyx_t_8 = (__pyx_t_2 != 0);
25364   if (__pyx_t_8) {
25365 
25366     /* "View.MemoryView":1326
25367  *
25368  *
25369  *         transpose_memslice(&src)             # <<<<<<<<<<<<<<
25370  *         transpose_memslice(&dst)
25371  *
25372  */
25373     __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1326, __pyx_L1_error)
25374 
25375     /* "View.MemoryView":1327
25376  *
25377  *         transpose_memslice(&src)
25378  *         transpose_memslice(&dst)             # <<<<<<<<<<<<<<
25379  *
25380  *     refcount_copying(&dst, dtype_is_object, ndim, False)
25381  */
25382     __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)0))) __PYX_ERR(1, 1327, __pyx_L1_error)
25383 
25384     /* "View.MemoryView":1323
25385  *             return 0
25386  *
25387  *     if order == 'F' == get_best_order(&dst, ndim):             # <<<<<<<<<<<<<<
25388  *
25389  *
25390  */
25391   }
25392 
25393   /* "View.MemoryView":1329
25394  *         transpose_memslice(&dst)
25395  *
25396  *     refcount_copying(&dst, dtype_is_object, ndim, False)             # <<<<<<<<<<<<<<
25397  *     copy_strided_to_strided(&src, &dst, ndim, itemsize)
25398  *     refcount_copying(&dst, dtype_is_object, ndim, True)
25399  */
25400   __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0);
25401 
25402   /* "View.MemoryView":1330
25403  *
25404  *     refcount_copying(&dst, dtype_is_object, ndim, False)
25405  *     copy_strided_to_strided(&src, &dst, ndim, itemsize)             # <<<<<<<<<<<<<<
25406  *     refcount_copying(&dst, dtype_is_object, ndim, True)
25407  *
25408  */
25409   copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize);
25410 
25411   /* "View.MemoryView":1331
25412  *     refcount_copying(&dst, dtype_is_object, ndim, False)
25413  *     copy_strided_to_strided(&src, &dst, ndim, itemsize)
25414  *     refcount_copying(&dst, dtype_is_object, ndim, True)             # <<<<<<<<<<<<<<
25415  *
25416  *     free(tmpdata)
25417  */
25418   __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1);
25419 
25420   /* "View.MemoryView":1333
25421  *     refcount_copying(&dst, dtype_is_object, ndim, True)
25422  *
25423  *     free(tmpdata)             # <<<<<<<<<<<<<<
25424  *     return 0
25425  *
25426  */
25427   free(__pyx_v_tmpdata);
25428 
25429   /* "View.MemoryView":1334
25430  *
25431  *     free(tmpdata)
25432  *     return 0             # <<<<<<<<<<<<<<
25433  *
25434  * @cname('__pyx_memoryview_broadcast_leading')
25435  */
25436   __pyx_r = 0;
25437   goto __pyx_L0;
25438 
25439   /* "View.MemoryView":1265
25440  *
25441  * @cname('__pyx_memoryview_copy_contents')
25442  * cdef int memoryview_copy_contents(__Pyx_memviewslice src,             # <<<<<<<<<<<<<<
25443  *                                   __Pyx_memviewslice dst,
25444  *                                   int src_ndim, int dst_ndim,
25445  */
25446 
25447   /* function exit code */
25448   __pyx_L1_error:;
25449   {
25450     #ifdef WITH_THREAD
25451     PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
25452     #endif
25453     __Pyx_AddTraceback("View.MemoryView.memoryview_copy_contents", __pyx_clineno, __pyx_lineno, __pyx_filename);
25454     #ifdef WITH_THREAD
25455     __Pyx_PyGILState_Release(__pyx_gilstate_save);
25456     #endif
25457   }
25458   __pyx_r = -1;
25459   __pyx_L0:;
25460   return __pyx_r;
25461 }
25462 
25463 /* "View.MemoryView":1337
25464  *
25465  * @cname('__pyx_memoryview_broadcast_leading')
25466  * cdef void broadcast_leading(__Pyx_memviewslice *mslice,             # <<<<<<<<<<<<<<
25467  *                             int ndim,
25468  *                             int ndim_other) nogil:
25469  */
25470 
__pyx_memoryview_broadcast_leading(__Pyx_memviewslice * __pyx_v_mslice,int __pyx_v_ndim,int __pyx_v_ndim_other)25471 static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslice, int __pyx_v_ndim, int __pyx_v_ndim_other) {
25472   int __pyx_v_i;
25473   int __pyx_v_offset;
25474   int __pyx_t_1;
25475   int __pyx_t_2;
25476   int __pyx_t_3;
25477 
25478   /* "View.MemoryView":1341
25479  *                             int ndim_other) nogil:
25480  *     cdef int i
25481  *     cdef int offset = ndim_other - ndim             # <<<<<<<<<<<<<<
25482  *
25483  *     for i in range(ndim - 1, -1, -1):
25484  */
25485   __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim);
25486 
25487   /* "View.MemoryView":1343
25488  *     cdef int offset = ndim_other - ndim
25489  *
25490  *     for i in range(ndim - 1, -1, -1):             # <<<<<<<<<<<<<<
25491  *         mslice.shape[i + offset] = mslice.shape[i]
25492  *         mslice.strides[i + offset] = mslice.strides[i]
25493  */
25494   for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) {
25495     __pyx_v_i = __pyx_t_1;
25496 
25497     /* "View.MemoryView":1344
25498  *
25499  *     for i in range(ndim - 1, -1, -1):
25500  *         mslice.shape[i + offset] = mslice.shape[i]             # <<<<<<<<<<<<<<
25501  *         mslice.strides[i + offset] = mslice.strides[i]
25502  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
25503  */
25504     (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]);
25505 
25506     /* "View.MemoryView":1345
25507  *     for i in range(ndim - 1, -1, -1):
25508  *         mslice.shape[i + offset] = mslice.shape[i]
25509  *         mslice.strides[i + offset] = mslice.strides[i]             # <<<<<<<<<<<<<<
25510  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
25511  *
25512  */
25513     (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]);
25514 
25515     /* "View.MemoryView":1346
25516  *         mslice.shape[i + offset] = mslice.shape[i]
25517  *         mslice.strides[i + offset] = mslice.strides[i]
25518  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]             # <<<<<<<<<<<<<<
25519  *
25520  *     for i in range(offset):
25521  */
25522     (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]);
25523   }
25524 
25525   /* "View.MemoryView":1348
25526  *         mslice.suboffsets[i + offset] = mslice.suboffsets[i]
25527  *
25528  *     for i in range(offset):             # <<<<<<<<<<<<<<
25529  *         mslice.shape[i] = 1
25530  *         mslice.strides[i] = mslice.strides[0]
25531  */
25532   __pyx_t_1 = __pyx_v_offset;
25533   __pyx_t_2 = __pyx_t_1;
25534   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
25535     __pyx_v_i = __pyx_t_3;
25536 
25537     /* "View.MemoryView":1349
25538  *
25539  *     for i in range(offset):
25540  *         mslice.shape[i] = 1             # <<<<<<<<<<<<<<
25541  *         mslice.strides[i] = mslice.strides[0]
25542  *         mslice.suboffsets[i] = -1
25543  */
25544     (__pyx_v_mslice->shape[__pyx_v_i]) = 1;
25545 
25546     /* "View.MemoryView":1350
25547  *     for i in range(offset):
25548  *         mslice.shape[i] = 1
25549  *         mslice.strides[i] = mslice.strides[0]             # <<<<<<<<<<<<<<
25550  *         mslice.suboffsets[i] = -1
25551  *
25552  */
25553     (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]);
25554 
25555     /* "View.MemoryView":1351
25556  *         mslice.shape[i] = 1
25557  *         mslice.strides[i] = mslice.strides[0]
25558  *         mslice.suboffsets[i] = -1             # <<<<<<<<<<<<<<
25559  *
25560  *
25561  */
25562     (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L;
25563   }
25564 
25565   /* "View.MemoryView":1337
25566  *
25567  * @cname('__pyx_memoryview_broadcast_leading')
25568  * cdef void broadcast_leading(__Pyx_memviewslice *mslice,             # <<<<<<<<<<<<<<
25569  *                             int ndim,
25570  *                             int ndim_other) nogil:
25571  */
25572 
25573   /* function exit code */
25574 }
25575 
25576 /* "View.MemoryView":1359
25577  *
25578  * @cname('__pyx_memoryview_refcount_copying')
25579  * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object,             # <<<<<<<<<<<<<<
25580  *                            int ndim, bint inc) nogil:
25581  *
25582  */
25583 
__pyx_memoryview_refcount_copying(__Pyx_memviewslice * __pyx_v_dst,int __pyx_v_dtype_is_object,int __pyx_v_ndim,int __pyx_v_inc)25584 static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) {
25585   int __pyx_t_1;
25586 
25587   /* "View.MemoryView":1363
25588  *
25589  *
25590  *     if dtype_is_object:             # <<<<<<<<<<<<<<
25591  *         refcount_objects_in_slice_with_gil(dst.data, dst.shape,
25592  *                                            dst.strides, ndim, inc)
25593  */
25594   __pyx_t_1 = (__pyx_v_dtype_is_object != 0);
25595   if (__pyx_t_1) {
25596 
25597     /* "View.MemoryView":1364
25598  *
25599  *     if dtype_is_object:
25600  *         refcount_objects_in_slice_with_gil(dst.data, dst.shape,             # <<<<<<<<<<<<<<
25601  *                                            dst.strides, ndim, inc)
25602  *
25603  */
25604     __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc);
25605 
25606     /* "View.MemoryView":1363
25607  *
25608  *
25609  *     if dtype_is_object:             # <<<<<<<<<<<<<<
25610  *         refcount_objects_in_slice_with_gil(dst.data, dst.shape,
25611  *                                            dst.strides, ndim, inc)
25612  */
25613   }
25614 
25615   /* "View.MemoryView":1359
25616  *
25617  * @cname('__pyx_memoryview_refcount_copying')
25618  * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object,             # <<<<<<<<<<<<<<
25619  *                            int ndim, bint inc) nogil:
25620  *
25621  */
25622 
25623   /* function exit code */
25624 }
25625 
25626 /* "View.MemoryView":1368
25627  *
25628  * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
25629  * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
25630  *                                              Py_ssize_t *strides, int ndim,
25631  *                                              bint inc) with gil:
25632  */
25633 
__pyx_memoryview_refcount_objects_in_slice_with_gil(char * __pyx_v_data,Py_ssize_t * __pyx_v_shape,Py_ssize_t * __pyx_v_strides,int __pyx_v_ndim,int __pyx_v_inc)25634 static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) {
25635   __Pyx_RefNannyDeclarations
25636   #ifdef WITH_THREAD
25637   PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
25638   #endif
25639   __Pyx_RefNannySetupContext("refcount_objects_in_slice_with_gil", 0);
25640 
25641   /* "View.MemoryView":1371
25642  *                                              Py_ssize_t *strides, int ndim,
25643  *                                              bint inc) with gil:
25644  *     refcount_objects_in_slice(data, shape, strides, ndim, inc)             # <<<<<<<<<<<<<<
25645  *
25646  * @cname('__pyx_memoryview_refcount_objects_in_slice')
25647  */
25648   __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc);
25649 
25650   /* "View.MemoryView":1368
25651  *
25652  * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil')
25653  * cdef void refcount_objects_in_slice_with_gil(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
25654  *                                              Py_ssize_t *strides, int ndim,
25655  *                                              bint inc) with gil:
25656  */
25657 
25658   /* function exit code */
25659   __Pyx_RefNannyFinishContext();
25660   #ifdef WITH_THREAD
25661   __Pyx_PyGILState_Release(__pyx_gilstate_save);
25662   #endif
25663 }
25664 
25665 /* "View.MemoryView":1374
25666  *
25667  * @cname('__pyx_memoryview_refcount_objects_in_slice')
25668  * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
25669  *                                     Py_ssize_t *strides, int ndim, bint inc):
25670  *     cdef Py_ssize_t i
25671  */
25672 
__pyx_memoryview_refcount_objects_in_slice(char * __pyx_v_data,Py_ssize_t * __pyx_v_shape,Py_ssize_t * __pyx_v_strides,int __pyx_v_ndim,int __pyx_v_inc)25673 static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) {
25674   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
25675   __Pyx_RefNannyDeclarations
25676   Py_ssize_t __pyx_t_1;
25677   Py_ssize_t __pyx_t_2;
25678   Py_ssize_t __pyx_t_3;
25679   int __pyx_t_4;
25680   __Pyx_RefNannySetupContext("refcount_objects_in_slice", 0);
25681 
25682   /* "View.MemoryView":1378
25683  *     cdef Py_ssize_t i
25684  *
25685  *     for i in range(shape[0]):             # <<<<<<<<<<<<<<
25686  *         if ndim == 1:
25687  *             if inc:
25688  */
25689   __pyx_t_1 = (__pyx_v_shape[0]);
25690   __pyx_t_2 = __pyx_t_1;
25691   for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
25692     __pyx_v_i = __pyx_t_3;
25693 
25694     /* "View.MemoryView":1379
25695  *
25696  *     for i in range(shape[0]):
25697  *         if ndim == 1:             # <<<<<<<<<<<<<<
25698  *             if inc:
25699  *                 Py_INCREF((<PyObject **> data)[0])
25700  */
25701     __pyx_t_4 = ((__pyx_v_ndim == 1) != 0);
25702     if (__pyx_t_4) {
25703 
25704       /* "View.MemoryView":1380
25705  *     for i in range(shape[0]):
25706  *         if ndim == 1:
25707  *             if inc:             # <<<<<<<<<<<<<<
25708  *                 Py_INCREF((<PyObject **> data)[0])
25709  *             else:
25710  */
25711       __pyx_t_4 = (__pyx_v_inc != 0);
25712       if (__pyx_t_4) {
25713 
25714         /* "View.MemoryView":1381
25715  *         if ndim == 1:
25716  *             if inc:
25717  *                 Py_INCREF((<PyObject **> data)[0])             # <<<<<<<<<<<<<<
25718  *             else:
25719  *                 Py_DECREF((<PyObject **> data)[0])
25720  */
25721         Py_INCREF((((PyObject **)__pyx_v_data)[0]));
25722 
25723         /* "View.MemoryView":1380
25724  *     for i in range(shape[0]):
25725  *         if ndim == 1:
25726  *             if inc:             # <<<<<<<<<<<<<<
25727  *                 Py_INCREF((<PyObject **> data)[0])
25728  *             else:
25729  */
25730         goto __pyx_L6;
25731       }
25732 
25733       /* "View.MemoryView":1383
25734  *                 Py_INCREF((<PyObject **> data)[0])
25735  *             else:
25736  *                 Py_DECREF((<PyObject **> data)[0])             # <<<<<<<<<<<<<<
25737  *         else:
25738  *             refcount_objects_in_slice(data, shape + 1, strides + 1,
25739  */
25740       /*else*/ {
25741         Py_DECREF((((PyObject **)__pyx_v_data)[0]));
25742       }
25743       __pyx_L6:;
25744 
25745       /* "View.MemoryView":1379
25746  *
25747  *     for i in range(shape[0]):
25748  *         if ndim == 1:             # <<<<<<<<<<<<<<
25749  *             if inc:
25750  *                 Py_INCREF((<PyObject **> data)[0])
25751  */
25752       goto __pyx_L5;
25753     }
25754 
25755     /* "View.MemoryView":1385
25756  *                 Py_DECREF((<PyObject **> data)[0])
25757  *         else:
25758  *             refcount_objects_in_slice(data, shape + 1, strides + 1,             # <<<<<<<<<<<<<<
25759  *                                       ndim - 1, inc)
25760  *
25761  */
25762     /*else*/ {
25763 
25764       /* "View.MemoryView":1386
25765  *         else:
25766  *             refcount_objects_in_slice(data, shape + 1, strides + 1,
25767  *                                       ndim - 1, inc)             # <<<<<<<<<<<<<<
25768  *
25769  *         data += strides[0]
25770  */
25771       __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_inc);
25772     }
25773     __pyx_L5:;
25774 
25775     /* "View.MemoryView":1388
25776  *                                       ndim - 1, inc)
25777  *
25778  *         data += strides[0]             # <<<<<<<<<<<<<<
25779  *
25780  *
25781  */
25782     __pyx_v_data = (__pyx_v_data + (__pyx_v_strides[0]));
25783   }
25784 
25785   /* "View.MemoryView":1374
25786  *
25787  * @cname('__pyx_memoryview_refcount_objects_in_slice')
25788  * cdef void refcount_objects_in_slice(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
25789  *                                     Py_ssize_t *strides, int ndim, bint inc):
25790  *     cdef Py_ssize_t i
25791  */
25792 
25793   /* function exit code */
25794   __Pyx_RefNannyFinishContext();
25795 }
25796 
25797 /* "View.MemoryView":1394
25798  *
25799  * @cname('__pyx_memoryview_slice_assign_scalar')
25800  * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim,             # <<<<<<<<<<<<<<
25801  *                               size_t itemsize, void *item,
25802  *                               bint dtype_is_object) nogil:
25803  */
25804 
__pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice * __pyx_v_dst,int __pyx_v_ndim,size_t __pyx_v_itemsize,void * __pyx_v_item,int __pyx_v_dtype_is_object)25805 static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) {
25806 
25807   /* "View.MemoryView":1397
25808  *                               size_t itemsize, void *item,
25809  *                               bint dtype_is_object) nogil:
25810  *     refcount_copying(dst, dtype_is_object, ndim, False)             # <<<<<<<<<<<<<<
25811  *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim,
25812  *                          itemsize, item)
25813  */
25814   __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0);
25815 
25816   /* "View.MemoryView":1398
25817  *                               bint dtype_is_object) nogil:
25818  *     refcount_copying(dst, dtype_is_object, ndim, False)
25819  *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim,             # <<<<<<<<<<<<<<
25820  *                          itemsize, item)
25821  *     refcount_copying(dst, dtype_is_object, ndim, True)
25822  */
25823   __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item);
25824 
25825   /* "View.MemoryView":1400
25826  *     _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim,
25827  *                          itemsize, item)
25828  *     refcount_copying(dst, dtype_is_object, ndim, True)             # <<<<<<<<<<<<<<
25829  *
25830  *
25831  */
25832   __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1);
25833 
25834   /* "View.MemoryView":1394
25835  *
25836  * @cname('__pyx_memoryview_slice_assign_scalar')
25837  * cdef void slice_assign_scalar(__Pyx_memviewslice *dst, int ndim,             # <<<<<<<<<<<<<<
25838  *                               size_t itemsize, void *item,
25839  *                               bint dtype_is_object) nogil:
25840  */
25841 
25842   /* function exit code */
25843 }
25844 
25845 /* "View.MemoryView":1404
25846  *
25847  * @cname('__pyx_memoryview__slice_assign_scalar')
25848  * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
25849  *                               Py_ssize_t *strides, int ndim,
25850  *                               size_t itemsize, void *item) nogil:
25851  */
25852 
__pyx_memoryview__slice_assign_scalar(char * __pyx_v_data,Py_ssize_t * __pyx_v_shape,Py_ssize_t * __pyx_v_strides,int __pyx_v_ndim,size_t __pyx_v_itemsize,void * __pyx_v_item)25853 static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item) {
25854   CYTHON_UNUSED Py_ssize_t __pyx_v_i;
25855   Py_ssize_t __pyx_v_stride;
25856   Py_ssize_t __pyx_v_extent;
25857   int __pyx_t_1;
25858   Py_ssize_t __pyx_t_2;
25859   Py_ssize_t __pyx_t_3;
25860   Py_ssize_t __pyx_t_4;
25861 
25862   /* "View.MemoryView":1408
25863  *                               size_t itemsize, void *item) nogil:
25864  *     cdef Py_ssize_t i
25865  *     cdef Py_ssize_t stride = strides[0]             # <<<<<<<<<<<<<<
25866  *     cdef Py_ssize_t extent = shape[0]
25867  *
25868  */
25869   __pyx_v_stride = (__pyx_v_strides[0]);
25870 
25871   /* "View.MemoryView":1409
25872  *     cdef Py_ssize_t i
25873  *     cdef Py_ssize_t stride = strides[0]
25874  *     cdef Py_ssize_t extent = shape[0]             # <<<<<<<<<<<<<<
25875  *
25876  *     if ndim == 1:
25877  */
25878   __pyx_v_extent = (__pyx_v_shape[0]);
25879 
25880   /* "View.MemoryView":1411
25881  *     cdef Py_ssize_t extent = shape[0]
25882  *
25883  *     if ndim == 1:             # <<<<<<<<<<<<<<
25884  *         for i in range(extent):
25885  *             memcpy(data, item, itemsize)
25886  */
25887   __pyx_t_1 = ((__pyx_v_ndim == 1) != 0);
25888   if (__pyx_t_1) {
25889 
25890     /* "View.MemoryView":1412
25891  *
25892  *     if ndim == 1:
25893  *         for i in range(extent):             # <<<<<<<<<<<<<<
25894  *             memcpy(data, item, itemsize)
25895  *             data += stride
25896  */
25897     __pyx_t_2 = __pyx_v_extent;
25898     __pyx_t_3 = __pyx_t_2;
25899     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
25900       __pyx_v_i = __pyx_t_4;
25901 
25902       /* "View.MemoryView":1413
25903  *     if ndim == 1:
25904  *         for i in range(extent):
25905  *             memcpy(data, item, itemsize)             # <<<<<<<<<<<<<<
25906  *             data += stride
25907  *     else:
25908  */
25909       (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize));
25910 
25911       /* "View.MemoryView":1414
25912  *         for i in range(extent):
25913  *             memcpy(data, item, itemsize)
25914  *             data += stride             # <<<<<<<<<<<<<<
25915  *     else:
25916  *         for i in range(extent):
25917  */
25918       __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
25919     }
25920 
25921     /* "View.MemoryView":1411
25922  *     cdef Py_ssize_t extent = shape[0]
25923  *
25924  *     if ndim == 1:             # <<<<<<<<<<<<<<
25925  *         for i in range(extent):
25926  *             memcpy(data, item, itemsize)
25927  */
25928     goto __pyx_L3;
25929   }
25930 
25931   /* "View.MemoryView":1416
25932  *             data += stride
25933  *     else:
25934  *         for i in range(extent):             # <<<<<<<<<<<<<<
25935  *             _slice_assign_scalar(data, shape + 1, strides + 1,
25936  *                                 ndim - 1, itemsize, item)
25937  */
25938   /*else*/ {
25939     __pyx_t_2 = __pyx_v_extent;
25940     __pyx_t_3 = __pyx_t_2;
25941     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
25942       __pyx_v_i = __pyx_t_4;
25943 
25944       /* "View.MemoryView":1417
25945  *     else:
25946  *         for i in range(extent):
25947  *             _slice_assign_scalar(data, shape + 1, strides + 1,             # <<<<<<<<<<<<<<
25948  *                                 ndim - 1, itemsize, item)
25949  *             data += stride
25950  */
25951       __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item);
25952 
25953       /* "View.MemoryView":1419
25954  *             _slice_assign_scalar(data, shape + 1, strides + 1,
25955  *                                 ndim - 1, itemsize, item)
25956  *             data += stride             # <<<<<<<<<<<<<<
25957  *
25958  *
25959  */
25960       __pyx_v_data = (__pyx_v_data + __pyx_v_stride);
25961     }
25962   }
25963   __pyx_L3:;
25964 
25965   /* "View.MemoryView":1404
25966  *
25967  * @cname('__pyx_memoryview__slice_assign_scalar')
25968  * cdef void _slice_assign_scalar(char *data, Py_ssize_t *shape,             # <<<<<<<<<<<<<<
25969  *                               Py_ssize_t *strides, int ndim,
25970  *                               size_t itemsize, void *item) nogil:
25971  */
25972 
25973   /* function exit code */
25974 }
25975 
25976 /* "(tree fragment)":1
25977  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
25978  *     cdef object __pyx_PickleError
25979  *     cdef object __pyx_result
25980  */
25981 
25982 /* Python wrapper */
25983 static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
25984 static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject * __pyx_self,PyObject * __pyx_args,PyObject * __pyx_kwds)25985 static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
25986   PyObject *__pyx_v___pyx_type = 0;
25987   long __pyx_v___pyx_checksum;
25988   PyObject *__pyx_v___pyx_state = 0;
25989   PyObject *__pyx_r = 0;
25990   __Pyx_RefNannyDeclarations
25991   __Pyx_RefNannySetupContext("__pyx_unpickle_Enum (wrapper)", 0);
25992   {
25993     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
25994     PyObject* values[3] = {0,0,0};
25995     if (unlikely(__pyx_kwds)) {
25996       Py_ssize_t kw_args;
25997       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
25998       switch (pos_args) {
25999         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
26000         CYTHON_FALLTHROUGH;
26001         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
26002         CYTHON_FALLTHROUGH;
26003         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
26004         CYTHON_FALLTHROUGH;
26005         case  0: break;
26006         default: goto __pyx_L5_argtuple_error;
26007       }
26008       kw_args = PyDict_Size(__pyx_kwds);
26009       switch (pos_args) {
26010         case  0:
26011         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
26012         else goto __pyx_L5_argtuple_error;
26013         CYTHON_FALLTHROUGH;
26014         case  1:
26015         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
26016         else {
26017           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
26018         }
26019         CYTHON_FALLTHROUGH;
26020         case  2:
26021         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
26022         else {
26023           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
26024         }
26025       }
26026       if (unlikely(kw_args > 0)) {
26027         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Enum") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
26028       }
26029     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
26030       goto __pyx_L5_argtuple_error;
26031     } else {
26032       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
26033       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
26034       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
26035     }
26036     __pyx_v___pyx_type = values[0];
26037     __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)
26038     __pyx_v___pyx_state = values[2];
26039   }
26040   goto __pyx_L4_argument_unpacking_done;
26041   __pyx_L5_argtuple_error:;
26042   __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
26043   __pyx_L3_error:;
26044   __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
26045   __Pyx_RefNannyFinishContext();
26046   return NULL;
26047   __pyx_L4_argument_unpacking_done:;
26048   __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
26049 
26050   /* function exit code */
26051   __Pyx_RefNannyFinishContext();
26052   return __pyx_r;
26053 }
26054 
__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject * __pyx_self,PyObject * __pyx_v___pyx_type,long __pyx_v___pyx_checksum,PyObject * __pyx_v___pyx_state)26055 static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
26056   PyObject *__pyx_v___pyx_PickleError = 0;
26057   PyObject *__pyx_v___pyx_result = 0;
26058   PyObject *__pyx_r = NULL;
26059   __Pyx_RefNannyDeclarations
26060   int __pyx_t_1;
26061   PyObject *__pyx_t_2 = NULL;
26062   PyObject *__pyx_t_3 = NULL;
26063   PyObject *__pyx_t_4 = NULL;
26064   PyObject *__pyx_t_5 = NULL;
26065   int __pyx_t_6;
26066   __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
26067 
26068   /* "(tree fragment)":4
26069  *     cdef object __pyx_PickleError
26070  *     cdef object __pyx_result
26071  *     if __pyx_checksum != 0xb068931:             # <<<<<<<<<<<<<<
26072  *         from pickle import PickleError as __pyx_PickleError
26073  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
26074  */
26075   __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb068931) != 0);
26076   if (__pyx_t_1) {
26077 
26078     /* "(tree fragment)":5
26079  *     cdef object __pyx_result
26080  *     if __pyx_checksum != 0xb068931:
26081  *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
26082  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
26083  *     __pyx_result = Enum.__new__(__pyx_type)
26084  */
26085     __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
26086     __Pyx_GOTREF(__pyx_t_2);
26087     __Pyx_INCREF(__pyx_n_s_PickleError);
26088     __Pyx_GIVEREF(__pyx_n_s_PickleError);
26089     PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
26090     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
26091     __Pyx_GOTREF(__pyx_t_3);
26092     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26093     __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
26094     __Pyx_GOTREF(__pyx_t_2);
26095     __Pyx_INCREF(__pyx_t_2);
26096     __pyx_v___pyx_PickleError = __pyx_t_2;
26097     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26098     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26099 
26100     /* "(tree fragment)":6
26101  *     if __pyx_checksum != 0xb068931:
26102  *         from pickle import PickleError as __pyx_PickleError
26103  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
26104  *     __pyx_result = Enum.__new__(__pyx_type)
26105  *     if __pyx_state is not None:
26106  */
26107     __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
26108     __Pyx_GOTREF(__pyx_t_2);
26109     __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)
26110     __Pyx_GOTREF(__pyx_t_4);
26111     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26112     __Pyx_INCREF(__pyx_v___pyx_PickleError);
26113     __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
26114     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
26115       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
26116       if (likely(__pyx_t_5)) {
26117         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
26118         __Pyx_INCREF(__pyx_t_5);
26119         __Pyx_INCREF(function);
26120         __Pyx_DECREF_SET(__pyx_t_2, function);
26121       }
26122     }
26123     __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);
26124     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
26125     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
26126     if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
26127     __Pyx_GOTREF(__pyx_t_3);
26128     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26129     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
26130     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26131     __PYX_ERR(1, 6, __pyx_L1_error)
26132 
26133     /* "(tree fragment)":4
26134  *     cdef object __pyx_PickleError
26135  *     cdef object __pyx_result
26136  *     if __pyx_checksum != 0xb068931:             # <<<<<<<<<<<<<<
26137  *         from pickle import PickleError as __pyx_PickleError
26138  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
26139  */
26140   }
26141 
26142   /* "(tree fragment)":7
26143  *         from pickle import PickleError as __pyx_PickleError
26144  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
26145  *     __pyx_result = Enum.__new__(__pyx_type)             # <<<<<<<<<<<<<<
26146  *     if __pyx_state is not None:
26147  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
26148  */
26149   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
26150   __Pyx_GOTREF(__pyx_t_2);
26151   __pyx_t_4 = NULL;
26152   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
26153     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
26154     if (likely(__pyx_t_4)) {
26155       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
26156       __Pyx_INCREF(__pyx_t_4);
26157       __Pyx_INCREF(function);
26158       __Pyx_DECREF_SET(__pyx_t_2, function);
26159     }
26160   }
26161   __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);
26162   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
26163   if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
26164   __Pyx_GOTREF(__pyx_t_3);
26165   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26166   __pyx_v___pyx_result = __pyx_t_3;
26167   __pyx_t_3 = 0;
26168 
26169   /* "(tree fragment)":8
26170  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
26171  *     __pyx_result = Enum.__new__(__pyx_type)
26172  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
26173  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
26174  *     return __pyx_result
26175  */
26176   __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
26177   __pyx_t_6 = (__pyx_t_1 != 0);
26178   if (__pyx_t_6) {
26179 
26180     /* "(tree fragment)":9
26181  *     __pyx_result = Enum.__new__(__pyx_type)
26182  *     if __pyx_state is not None:
26183  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
26184  *     return __pyx_result
26185  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
26186  */
26187     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)
26188     __pyx_t_3 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
26189     __Pyx_GOTREF(__pyx_t_3);
26190     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26191 
26192     /* "(tree fragment)":8
26193  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
26194  *     __pyx_result = Enum.__new__(__pyx_type)
26195  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
26196  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
26197  *     return __pyx_result
26198  */
26199   }
26200 
26201   /* "(tree fragment)":10
26202  *     if __pyx_state is not None:
26203  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
26204  *     return __pyx_result             # <<<<<<<<<<<<<<
26205  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
26206  *     __pyx_result.name = __pyx_state[0]
26207  */
26208   __Pyx_XDECREF(__pyx_r);
26209   __Pyx_INCREF(__pyx_v___pyx_result);
26210   __pyx_r = __pyx_v___pyx_result;
26211   goto __pyx_L0;
26212 
26213   /* "(tree fragment)":1
26214  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
26215  *     cdef object __pyx_PickleError
26216  *     cdef object __pyx_result
26217  */
26218 
26219   /* function exit code */
26220   __pyx_L1_error:;
26221   __Pyx_XDECREF(__pyx_t_2);
26222   __Pyx_XDECREF(__pyx_t_3);
26223   __Pyx_XDECREF(__pyx_t_4);
26224   __Pyx_XDECREF(__pyx_t_5);
26225   __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
26226   __pyx_r = NULL;
26227   __pyx_L0:;
26228   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
26229   __Pyx_XDECREF(__pyx_v___pyx_result);
26230   __Pyx_XGIVEREF(__pyx_r);
26231   __Pyx_RefNannyFinishContext();
26232   return __pyx_r;
26233 }
26234 
26235 /* "(tree fragment)":11
26236  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
26237  *     return __pyx_result
26238  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
26239  *     __pyx_result.name = __pyx_state[0]
26240  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
26241  */
26242 
__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj * __pyx_v___pyx_result,PyObject * __pyx_v___pyx_state)26243 static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
26244   PyObject *__pyx_r = NULL;
26245   __Pyx_RefNannyDeclarations
26246   PyObject *__pyx_t_1 = NULL;
26247   int __pyx_t_2;
26248   Py_ssize_t __pyx_t_3;
26249   int __pyx_t_4;
26250   int __pyx_t_5;
26251   PyObject *__pyx_t_6 = NULL;
26252   PyObject *__pyx_t_7 = NULL;
26253   PyObject *__pyx_t_8 = NULL;
26254   __Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
26255 
26256   /* "(tree fragment)":12
26257  *     return __pyx_result
26258  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
26259  *     __pyx_result.name = __pyx_state[0]             # <<<<<<<<<<<<<<
26260  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
26261  *         __pyx_result.__dict__.update(__pyx_state[1])
26262  */
26263   if (unlikely(__pyx_v___pyx_state == Py_None)) {
26264     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
26265     __PYX_ERR(1, 12, __pyx_L1_error)
26266   }
26267   __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)
26268   __Pyx_GOTREF(__pyx_t_1);
26269   __Pyx_GIVEREF(__pyx_t_1);
26270   __Pyx_GOTREF(__pyx_v___pyx_result->name);
26271   __Pyx_DECREF(__pyx_v___pyx_result->name);
26272   __pyx_v___pyx_result->name = __pyx_t_1;
26273   __pyx_t_1 = 0;
26274 
26275   /* "(tree fragment)":13
26276  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
26277  *     __pyx_result.name = __pyx_state[0]
26278  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
26279  *         __pyx_result.__dict__.update(__pyx_state[1])
26280  */
26281   if (unlikely(__pyx_v___pyx_state == Py_None)) {
26282     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
26283     __PYX_ERR(1, 13, __pyx_L1_error)
26284   }
26285   __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)
26286   __pyx_t_4 = ((__pyx_t_3 > 1) != 0);
26287   if (__pyx_t_4) {
26288   } else {
26289     __pyx_t_2 = __pyx_t_4;
26290     goto __pyx_L4_bool_binop_done;
26291   }
26292   __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)
26293   __pyx_t_5 = (__pyx_t_4 != 0);
26294   __pyx_t_2 = __pyx_t_5;
26295   __pyx_L4_bool_binop_done:;
26296   if (__pyx_t_2) {
26297 
26298     /* "(tree fragment)":14
26299  *     __pyx_result.name = __pyx_state[0]
26300  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
26301  *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
26302  */
26303     __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)
26304     __Pyx_GOTREF(__pyx_t_6);
26305     __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)
26306     __Pyx_GOTREF(__pyx_t_7);
26307     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26308     if (unlikely(__pyx_v___pyx_state == Py_None)) {
26309       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
26310       __PYX_ERR(1, 14, __pyx_L1_error)
26311     }
26312     __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)
26313     __Pyx_GOTREF(__pyx_t_6);
26314     __pyx_t_8 = NULL;
26315     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
26316       __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
26317       if (likely(__pyx_t_8)) {
26318         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
26319         __Pyx_INCREF(__pyx_t_8);
26320         __Pyx_INCREF(function);
26321         __Pyx_DECREF_SET(__pyx_t_7, function);
26322       }
26323     }
26324     __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);
26325     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
26326     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26327     if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
26328     __Pyx_GOTREF(__pyx_t_1);
26329     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
26330     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26331 
26332     /* "(tree fragment)":13
26333  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):
26334  *     __pyx_result.name = __pyx_state[0]
26335  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
26336  *         __pyx_result.__dict__.update(__pyx_state[1])
26337  */
26338   }
26339 
26340   /* "(tree fragment)":11
26341  *         __pyx_unpickle_Enum__set_state(<Enum> __pyx_result, __pyx_state)
26342  *     return __pyx_result
26343  * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
26344  *     __pyx_result.name = __pyx_state[0]
26345  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
26346  */
26347 
26348   /* function exit code */
26349   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
26350   goto __pyx_L0;
26351   __pyx_L1_error:;
26352   __Pyx_XDECREF(__pyx_t_1);
26353   __Pyx_XDECREF(__pyx_t_6);
26354   __Pyx_XDECREF(__pyx_t_7);
26355   __Pyx_XDECREF(__pyx_t_8);
26356   __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
26357   __pyx_r = 0;
26358   __pyx_L0:;
26359   __Pyx_XGIVEREF(__pyx_r);
26360   __Pyx_RefNannyFinishContext();
26361   return __pyx_r;
26362 }
26363 
26364 /* "BufferFormatFromTypeInfo":1460
26365  *
26366  * @cname('__pyx_format_from_typeinfo')
26367  * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type):             # <<<<<<<<<<<<<<
26368  *     cdef __Pyx_StructField *field
26369  *     cdef __pyx_typeinfo_string fmt
26370  */
26371 
__pyx_format_from_typeinfo(__Pyx_TypeInfo * __pyx_v_type)26372 static PyObject *__pyx_format_from_typeinfo(__Pyx_TypeInfo *__pyx_v_type) {
26373   __Pyx_StructField *__pyx_v_field;
26374   struct __pyx_typeinfo_string __pyx_v_fmt;
26375   PyObject *__pyx_v_part = 0;
26376   PyObject *__pyx_v_result = 0;
26377   PyObject *__pyx_v_alignment = NULL;
26378   PyObject *__pyx_v_parts = NULL;
26379   PyObject *__pyx_v_extents = NULL;
26380   int __pyx_v_i;
26381   PyObject *__pyx_r = NULL;
26382   __Pyx_RefNannyDeclarations
26383   int __pyx_t_1;
26384   int __pyx_t_2;
26385   PyObject *__pyx_t_3 = NULL;
26386   __Pyx_StructField *__pyx_t_4;
26387   PyObject *__pyx_t_5 = NULL;
26388   PyObject *__pyx_t_6 = NULL;
26389   int __pyx_t_7;
26390   int __pyx_t_8;
26391   int __pyx_t_9;
26392   int __pyx_t_10;
26393   __Pyx_RefNannySetupContext("format_from_typeinfo", 0);
26394 
26395   /* "BufferFormatFromTypeInfo":1465
26396  *     cdef bytes part, result
26397  *
26398  *     if type.typegroup == 'S':             # <<<<<<<<<<<<<<
26399  *         assert type.fields != NULL and type.fields.type != NULL
26400  *
26401  */
26402   __pyx_t_1 = ((__pyx_v_type->typegroup == 'S') != 0);
26403   if (__pyx_t_1) {
26404 
26405     /* "BufferFormatFromTypeInfo":1466
26406  *
26407  *     if type.typegroup == 'S':
26408  *         assert type.fields != NULL and type.fields.type != NULL             # <<<<<<<<<<<<<<
26409  *
26410  *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:
26411  */
26412     #ifndef CYTHON_WITHOUT_ASSERTIONS
26413     if (unlikely(!Py_OptimizeFlag)) {
26414       __pyx_t_2 = ((__pyx_v_type->fields != NULL) != 0);
26415       if (__pyx_t_2) {
26416       } else {
26417         __pyx_t_1 = __pyx_t_2;
26418         goto __pyx_L4_bool_binop_done;
26419       }
26420       __pyx_t_2 = ((__pyx_v_type->fields->type != NULL) != 0);
26421       __pyx_t_1 = __pyx_t_2;
26422       __pyx_L4_bool_binop_done:;
26423       if (unlikely(!__pyx_t_1)) {
26424         PyErr_SetNone(PyExc_AssertionError);
26425         __PYX_ERR(1, 1466, __pyx_L1_error)
26426       }
26427     }
26428     #endif
26429 
26430     /* "BufferFormatFromTypeInfo":1468
26431  *         assert type.fields != NULL and type.fields.type != NULL
26432  *
26433  *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:             # <<<<<<<<<<<<<<
26434  *             alignment = b'^'
26435  *         else:
26436  */
26437     __pyx_t_1 = ((__pyx_v_type->flags & __PYX_BUF_FLAGS_PACKED_STRUCT) != 0);
26438     if (__pyx_t_1) {
26439 
26440       /* "BufferFormatFromTypeInfo":1469
26441  *
26442  *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:
26443  *             alignment = b'^'             # <<<<<<<<<<<<<<
26444  *         else:
26445  *             alignment = b''
26446  */
26447       __Pyx_INCREF(__pyx_kp_b__33);
26448       __pyx_v_alignment = __pyx_kp_b__33;
26449 
26450       /* "BufferFormatFromTypeInfo":1468
26451  *         assert type.fields != NULL and type.fields.type != NULL
26452  *
26453  *         if type.flags & __PYX_BUF_FLAGS_PACKED_STRUCT:             # <<<<<<<<<<<<<<
26454  *             alignment = b'^'
26455  *         else:
26456  */
26457       goto __pyx_L6;
26458     }
26459 
26460     /* "BufferFormatFromTypeInfo":1471
26461  *             alignment = b'^'
26462  *         else:
26463  *             alignment = b''             # <<<<<<<<<<<<<<
26464  *
26465  *         parts = [b"T{"]
26466  */
26467     /*else*/ {
26468       __Pyx_INCREF(__pyx_kp_b__34);
26469       __pyx_v_alignment = __pyx_kp_b__34;
26470     }
26471     __pyx_L6:;
26472 
26473     /* "BufferFormatFromTypeInfo":1473
26474  *             alignment = b''
26475  *
26476  *         parts = [b"T{"]             # <<<<<<<<<<<<<<
26477  *         field = type.fields
26478  *
26479  */
26480     __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1473, __pyx_L1_error)
26481     __Pyx_GOTREF(__pyx_t_3);
26482     __Pyx_INCREF(__pyx_kp_b_T);
26483     __Pyx_GIVEREF(__pyx_kp_b_T);
26484     PyList_SET_ITEM(__pyx_t_3, 0, __pyx_kp_b_T);
26485     __pyx_v_parts = ((PyObject*)__pyx_t_3);
26486     __pyx_t_3 = 0;
26487 
26488     /* "BufferFormatFromTypeInfo":1474
26489  *
26490  *         parts = [b"T{"]
26491  *         field = type.fields             # <<<<<<<<<<<<<<
26492  *
26493  *         while field.type:
26494  */
26495     __pyx_t_4 = __pyx_v_type->fields;
26496     __pyx_v_field = __pyx_t_4;
26497 
26498     /* "BufferFormatFromTypeInfo":1476
26499  *         field = type.fields
26500  *
26501  *         while field.type:             # <<<<<<<<<<<<<<
26502  *             part = format_from_typeinfo(field.type)
26503  *             parts.append(part + b':' + field.name + b':')
26504  */
26505     while (1) {
26506       __pyx_t_1 = (__pyx_v_field->type != 0);
26507       if (!__pyx_t_1) break;
26508 
26509       /* "BufferFormatFromTypeInfo":1477
26510  *
26511  *         while field.type:
26512  *             part = format_from_typeinfo(field.type)             # <<<<<<<<<<<<<<
26513  *             parts.append(part + b':' + field.name + b':')
26514  *             field += 1
26515  */
26516       __pyx_t_3 = __pyx_format_from_typeinfo(__pyx_v_field->type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1477, __pyx_L1_error)
26517       __Pyx_GOTREF(__pyx_t_3);
26518       __Pyx_XDECREF_SET(__pyx_v_part, ((PyObject*)__pyx_t_3));
26519       __pyx_t_3 = 0;
26520 
26521       /* "BufferFormatFromTypeInfo":1478
26522  *         while field.type:
26523  *             part = format_from_typeinfo(field.type)
26524  *             parts.append(part + b':' + field.name + b':')             # <<<<<<<<<<<<<<
26525  *             field += 1
26526  *
26527  */
26528       __pyx_t_3 = PyNumber_Add(__pyx_v_part, __pyx_kp_b__35); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1478, __pyx_L1_error)
26529       __Pyx_GOTREF(__pyx_t_3);
26530       __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_field->name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1478, __pyx_L1_error)
26531       __Pyx_GOTREF(__pyx_t_5);
26532       __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1478, __pyx_L1_error)
26533       __Pyx_GOTREF(__pyx_t_6);
26534       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26535       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26536       __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__35); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1478, __pyx_L1_error)
26537       __Pyx_GOTREF(__pyx_t_5);
26538       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26539       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_5); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 1478, __pyx_L1_error)
26540       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26541 
26542       /* "BufferFormatFromTypeInfo":1479
26543  *             part = format_from_typeinfo(field.type)
26544  *             parts.append(part + b':' + field.name + b':')
26545  *             field += 1             # <<<<<<<<<<<<<<
26546  *
26547  *         result = alignment.join(parts) + b'}'
26548  */
26549       __pyx_v_field = (__pyx_v_field + 1);
26550     }
26551 
26552     /* "BufferFormatFromTypeInfo":1481
26553  *             field += 1
26554  *
26555  *         result = alignment.join(parts) + b'}'             # <<<<<<<<<<<<<<
26556  *     else:
26557  *         fmt = __Pyx_TypeInfoToFormat(type)
26558  */
26559     __pyx_t_5 = __Pyx_PyBytes_Join(__pyx_v_alignment, __pyx_v_parts); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1481, __pyx_L1_error)
26560     __Pyx_GOTREF(__pyx_t_5);
26561     __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_kp_b__36); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1481, __pyx_L1_error)
26562     __Pyx_GOTREF(__pyx_t_6);
26563     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26564     if (!(likely(PyBytes_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(1, 1481, __pyx_L1_error)
26565     __pyx_v_result = ((PyObject*)__pyx_t_6);
26566     __pyx_t_6 = 0;
26567 
26568     /* "BufferFormatFromTypeInfo":1465
26569  *     cdef bytes part, result
26570  *
26571  *     if type.typegroup == 'S':             # <<<<<<<<<<<<<<
26572  *         assert type.fields != NULL and type.fields.type != NULL
26573  *
26574  */
26575     goto __pyx_L3;
26576   }
26577 
26578   /* "BufferFormatFromTypeInfo":1483
26579  *         result = alignment.join(parts) + b'}'
26580  *     else:
26581  *         fmt = __Pyx_TypeInfoToFormat(type)             # <<<<<<<<<<<<<<
26582  *         if type.arraysize[0]:
26583  *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
26584  */
26585   /*else*/ {
26586     __pyx_v_fmt = __Pyx_TypeInfoToFormat(__pyx_v_type);
26587 
26588     /* "BufferFormatFromTypeInfo":1484
26589  *     else:
26590  *         fmt = __Pyx_TypeInfoToFormat(type)
26591  *         if type.arraysize[0]:             # <<<<<<<<<<<<<<
26592  *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
26593  *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
26594  */
26595     __pyx_t_1 = ((__pyx_v_type->arraysize[0]) != 0);
26596     if (__pyx_t_1) {
26597 
26598       /* "BufferFormatFromTypeInfo":1485
26599  *         fmt = __Pyx_TypeInfoToFormat(type)
26600  *         if type.arraysize[0]:
26601  *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]             # <<<<<<<<<<<<<<
26602  *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
26603  *         else:
26604  */
26605       __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1485, __pyx_L1_error)
26606       __Pyx_GOTREF(__pyx_t_6);
26607       __pyx_t_8 = __pyx_v_type->ndim;
26608       __pyx_t_9 = __pyx_t_8;
26609       for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
26610         __pyx_v_i = __pyx_t_10;
26611         __pyx_t_5 = __Pyx_PyInt_FromSize_t((__pyx_v_type->arraysize[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1485, __pyx_L1_error)
26612         __Pyx_GOTREF(__pyx_t_5);
26613         __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1485, __pyx_L1_error)
26614         __Pyx_GOTREF(__pyx_t_3);
26615         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26616         if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_3))) __PYX_ERR(1, 1485, __pyx_L1_error)
26617         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26618       }
26619       __pyx_v_extents = ((PyObject*)__pyx_t_6);
26620       __pyx_t_6 = 0;
26621 
26622       /* "BufferFormatFromTypeInfo":1486
26623  *         if type.arraysize[0]:
26624  *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
26625  *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string             # <<<<<<<<<<<<<<
26626  *         else:
26627  *             result = fmt.string
26628  */
26629       __pyx_t_6 = PyUnicode_Join(__pyx_kp_u__37, __pyx_v_extents); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1486, __pyx_L1_error)
26630       __Pyx_GOTREF(__pyx_t_6);
26631       __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1486, __pyx_L1_error)
26632       __Pyx_GOTREF(__pyx_t_3);
26633       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26634       __pyx_t_6 = PyUnicode_AsASCIIString(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1486, __pyx_L1_error)
26635       __Pyx_GOTREF(__pyx_t_6);
26636       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26637       __pyx_t_3 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1486, __pyx_L1_error)
26638       __Pyx_GOTREF(__pyx_t_3);
26639       __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1486, __pyx_L1_error)
26640       __Pyx_GOTREF(__pyx_t_5);
26641       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
26642       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26643       if (!(likely(PyBytes_CheckExact(__pyx_t_5))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(1, 1486, __pyx_L1_error)
26644       __pyx_v_result = ((PyObject*)__pyx_t_5);
26645       __pyx_t_5 = 0;
26646 
26647       /* "BufferFormatFromTypeInfo":1484
26648  *     else:
26649  *         fmt = __Pyx_TypeInfoToFormat(type)
26650  *         if type.arraysize[0]:             # <<<<<<<<<<<<<<
26651  *             extents = [unicode(type.arraysize[i]) for i in range(type.ndim)]
26652  *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
26653  */
26654       goto __pyx_L9;
26655     }
26656 
26657     /* "BufferFormatFromTypeInfo":1488
26658  *             result = (u"(%s)" % u','.join(extents)).encode('ascii') + fmt.string
26659  *         else:
26660  *             result = fmt.string             # <<<<<<<<<<<<<<
26661  *
26662  *     return result
26663  */
26664     /*else*/ {
26665       __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_fmt.string); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1488, __pyx_L1_error)
26666       __Pyx_GOTREF(__pyx_t_5);
26667       __pyx_v_result = ((PyObject*)__pyx_t_5);
26668       __pyx_t_5 = 0;
26669     }
26670     __pyx_L9:;
26671   }
26672   __pyx_L3:;
26673 
26674   /* "BufferFormatFromTypeInfo":1490
26675  *             result = fmt.string
26676  *
26677  *     return result             # <<<<<<<<<<<<<<
26678  */
26679   __Pyx_XDECREF(__pyx_r);
26680   __Pyx_INCREF(__pyx_v_result);
26681   __pyx_r = __pyx_v_result;
26682   goto __pyx_L0;
26683 
26684   /* "BufferFormatFromTypeInfo":1460
26685  *
26686  * @cname('__pyx_format_from_typeinfo')
26687  * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type):             # <<<<<<<<<<<<<<
26688  *     cdef __Pyx_StructField *field
26689  *     cdef __pyx_typeinfo_string fmt
26690  */
26691 
26692   /* function exit code */
26693   __pyx_L1_error:;
26694   __Pyx_XDECREF(__pyx_t_3);
26695   __Pyx_XDECREF(__pyx_t_5);
26696   __Pyx_XDECREF(__pyx_t_6);
26697   __Pyx_AddTraceback("BufferFormatFromTypeInfo.format_from_typeinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
26698   __pyx_r = 0;
26699   __pyx_L0:;
26700   __Pyx_XDECREF(__pyx_v_part);
26701   __Pyx_XDECREF(__pyx_v_result);
26702   __Pyx_XDECREF(__pyx_v_alignment);
26703   __Pyx_XDECREF(__pyx_v_parts);
26704   __Pyx_XDECREF(__pyx_v_extents);
26705   __Pyx_XGIVEREF(__pyx_r);
26706   __Pyx_RefNannyFinishContext();
26707   return __pyx_r;
26708 }
26709 static struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode;
26710 
__pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyTypeObject * t,CYTHON_UNUSED PyObject * a,CYTHON_UNUSED PyObject * k)26711 static PyObject *__pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
26712   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *p;
26713   PyObject *o;
26714   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
26715     o = (*t->tp_alloc)(t, 0);
26716   } else {
26717     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
26718   }
26719   if (unlikely(!o)) return 0;
26720   p = ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)o);
26721   p->__pyx_vtab = __pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode;
26722   p->left_neighbors = Py_None; Py_INCREF(Py_None);
26723   p->right_neighbors = Py_None; Py_INCREF(Py_None);
26724   if (unlikely(__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
26725   return o;
26726   bad:
26727   Py_DECREF(o); o = 0;
26728   return NULL;
26729 }
26730 
__pyx_tp_dealloc_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyObject * o)26731 static void __pyx_tp_dealloc_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyObject *o) {
26732   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *p = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)o;
26733   #if CYTHON_USE_TP_FINALIZE
26734   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
26735     if (PyObject_CallFinalizerFromDealloc(o)) return;
26736   }
26737   #endif
26738   PyObject_GC_UnTrack(o);
26739   Py_CLEAR(p->left_neighbors);
26740   Py_CLEAR(p->right_neighbors);
26741   (*Py_TYPE(o)->tp_free)(o);
26742 }
26743 
__pyx_tp_traverse_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyObject * o,visitproc v,void * a)26744 static int __pyx_tp_traverse_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyObject *o, visitproc v, void *a) {
26745   int e;
26746   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *p = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)o;
26747   if (p->left_neighbors) {
26748     e = (*v)(p->left_neighbors, a); if (e) return e;
26749   }
26750   if (p->right_neighbors) {
26751     e = (*v)(p->right_neighbors, a); if (e) return e;
26752   }
26753   return 0;
26754 }
26755 
__pyx_tp_clear_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyObject * o)26756 static int __pyx_tp_clear_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode(PyObject *o) {
26757   PyObject* tmp;
26758   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *p = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *)o;
26759   tmp = ((PyObject*)p->left_neighbors);
26760   p->left_neighbors = Py_None; Py_INCREF(Py_None);
26761   Py_XDECREF(tmp);
26762   tmp = ((PyObject*)p->right_neighbors);
26763   p->right_neighbors = Py_None; Py_INCREF(Py_None);
26764   Py_XDECREF(tmp);
26765   return 0;
26766 }
26767 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_periodic_left(PyObject * o,CYTHON_UNUSED void * x)26768 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_periodic_left(PyObject *o, CYTHON_UNUSED void *x) {
26769   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_13periodic_left_1__get__(o);
26770 }
26771 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_periodic_right(PyObject * o,CYTHON_UNUSED void * x)26772 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_periodic_right(PyObject *o, CYTHON_UNUSED void *x) {
26773   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14periodic_right_1__get__(o);
26774 }
26775 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_left_edge(PyObject * o,CYTHON_UNUSED void * x)26776 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_left_edge(PyObject *o, CYTHON_UNUSED void *x) {
26777   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9left_edge_1__get__(o);
26778 }
26779 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_right_edge(PyObject * o,CYTHON_UNUSED void * x)26780 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_right_edge(PyObject *o, CYTHON_UNUSED void *x) {
26781   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10right_edge_1__get__(o);
26782 }
26783 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_domain_width(PyObject * o,CYTHON_UNUSED void * x)26784 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_domain_width(PyObject *o, CYTHON_UNUSED void *x) {
26785   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_12domain_width_1__get__(o);
26786 }
26787 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_slice(PyObject * o,CYTHON_UNUSED void * x)26788 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_slice(PyObject *o, CYTHON_UNUSED void *x) {
26789   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5slice_1__get__(o);
26790 }
26791 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_neighbors(PyObject * o,CYTHON_UNUSED void * x)26792 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_neighbors(PyObject *o, CYTHON_UNUSED void *x) {
26793   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9neighbors_1__get__(o);
26794 }
26795 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_id(PyObject * o,CYTHON_UNUSED void * x)26796 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_id(PyObject *o, CYTHON_UNUSED void *x) {
26797   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_2id_1__get__(o);
26798 }
26799 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_npts(PyObject * o,CYTHON_UNUSED void * x)26800 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_npts(PyObject *o, CYTHON_UNUSED void *x) {
26801   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4npts_1__get__(o);
26802 }
26803 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_ndim(PyObject * o,CYTHON_UNUSED void * x)26804 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_ndim(PyObject *o, CYTHON_UNUSED void *x) {
26805   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_4ndim_1__get__(o);
26806 }
26807 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_num_leaves(PyObject * o,CYTHON_UNUSED void * x)26808 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_num_leaves(PyObject *o, CYTHON_UNUSED void *x) {
26809   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_10num_leaves_1__get__(o);
26810 }
26811 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_start_idx(PyObject * o,CYTHON_UNUSED void * x)26812 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_start_idx(PyObject *o, CYTHON_UNUSED void *x) {
26813   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9start_idx_1__get__(o);
26814 }
26815 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_stop_idx(PyObject * o,CYTHON_UNUSED void * x)26816 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_stop_idx(PyObject *o, CYTHON_UNUSED void *x) {
26817   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_8stop_idx_1__get__(o);
26818 }
26819 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_left_neighbors(PyObject * o,CYTHON_UNUSED void * x)26820 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_left_neighbors(PyObject *o, CYTHON_UNUSED void *x) {
26821   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_14left_neighbors_1__get__(o);
26822 }
26823 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_right_neighbors(PyObject * o,CYTHON_UNUSED void * x)26824 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_right_neighbors(PyObject *o, CYTHON_UNUSED void *x) {
26825   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_15right_neighbors_1__get__(o);
26826 }
26827 
26828 static PyMethodDef __pyx_methods_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode[] = {
26829   {"assert_equal", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_7assert_equal, METH_O, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_6assert_equal},
26830   {"__reduce_cython__", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_9__reduce_cython__, METH_NOARGS, 0},
26831   {"__setstate_cython__", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_11__setstate_cython__, METH_O, 0},
26832   {0, 0, 0, 0}
26833 };
26834 
26835 static struct PyGetSetDef __pyx_getsets_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode[] = {
26836   {(char *)"periodic_left", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_periodic_left, 0, (char *)0, 0},
26837   {(char *)"periodic_right", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_periodic_right, 0, (char *)0, 0},
26838   {(char *)"left_edge", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_left_edge, 0, (char *)0, 0},
26839   {(char *)"right_edge", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_right_edge, 0, (char *)0, 0},
26840   {(char *)"domain_width", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_domain_width, 0, (char *)0, 0},
26841   {(char *)"slice", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_slice, 0, (char *)"slice: Slice of kdtree indices contained by this node.", 0},
26842   {(char *)"neighbors", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_neighbors, 0, (char *)"list of int: Indices of all neighboring leaves including this\n        leaf.", 0},
26843   {(char *)"id", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_id, 0, (char *)0, 0},
26844   {(char *)"npts", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_npts, 0, (char *)0, 0},
26845   {(char *)"ndim", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_ndim, 0, (char *)0, 0},
26846   {(char *)"num_leaves", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_num_leaves, 0, (char *)0, 0},
26847   {(char *)"start_idx", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_start_idx, 0, (char *)0, 0},
26848   {(char *)"stop_idx", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_stop_idx, 0, (char *)0, 0},
26849   {(char *)"left_neighbors", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_left_neighbors, 0, (char *)0, 0},
26850   {(char *)"right_neighbors", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_right_neighbors, 0, (char *)0, 0},
26851   {0, 0, 0, 0, 0}
26852 };
26853 
26854 static PyTypeObject __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode = {
26855   PyVarObject_HEAD_INIT(0, 0)
26856   "yt.utilities.lib.cykdtree.kdtree.PyNode", /*tp_name*/
26857   sizeof(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode), /*tp_basicsize*/
26858   0, /*tp_itemsize*/
26859   __pyx_tp_dealloc_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, /*tp_dealloc*/
26860   0, /*tp_print*/
26861   0, /*tp_getattr*/
26862   0, /*tp_setattr*/
26863   #if PY_MAJOR_VERSION < 3
26864   0, /*tp_compare*/
26865   #endif
26866   #if PY_MAJOR_VERSION >= 3
26867   0, /*tp_as_async*/
26868   #endif
26869   __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_5__repr__, /*tp_repr*/
26870   0, /*tp_as_number*/
26871   0, /*tp_as_sequence*/
26872   0, /*tp_as_mapping*/
26873   0, /*tp_hash*/
26874   0, /*tp_call*/
26875   0, /*tp_str*/
26876   0, /*tp_getattro*/
26877   0, /*tp_setattro*/
26878   0, /*tp_as_buffer*/
26879   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
26880   "A container for leaf info.\n\n    Attributes:\n        npts (np.uint64_t): Number of points in this node.\n        ndim (np.uint32_t): Number of dimensions in domain.\n        num_leaves (np.uint32_t): Number of leaves in the tree containing this\n            node.\n        start_idx (np.uint64_t): Index where indices for this node begin.\n        stop_idx (np.uint64_t): One passed the end of indices for this node.\n        left_edge (np.ndarray of float64): Minimum bounds of this node in each\n            dimension.\n        right_edge (np.ndarray of float64): Maximum bounds of this node in each\n            dimension.\n        periodic_left (np.ndarray of bool): Periodicity of minimum bounds.\n        periodic_right (np.ndarray of bool): Periodicity of maximum bounds.\n        domain_width (np.ndarray of float64): Width of the total domain in each\n            dimension.\n        left_neighbors (list of lists): Indices of neighbor leaves at the\n            minimum bounds in each dimension.\n        right_neighbors (list of lists): Indices of neighbor leaves at the\n            maximum bounds in each dimension.\n\n    ", /*tp_doc*/
26881   __pyx_tp_traverse_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, /*tp_traverse*/
26882   __pyx_tp_clear_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, /*tp_clear*/
26883   0, /*tp_richcompare*/
26884   0, /*tp_weaklistoffset*/
26885   0, /*tp_iter*/
26886   0, /*tp_iternext*/
26887   __pyx_methods_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, /*tp_methods*/
26888   0, /*tp_members*/
26889   __pyx_getsets_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, /*tp_getset*/
26890   0, /*tp_base*/
26891   0, /*tp_dict*/
26892   0, /*tp_descr_get*/
26893   0, /*tp_descr_set*/
26894   0, /*tp_dictoffset*/
26895   __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode_3__init__, /*tp_init*/
26896   0, /*tp_alloc*/
26897   __pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode, /*tp_new*/
26898   0, /*tp_free*/
26899   0, /*tp_is_gc*/
26900   0, /*tp_bases*/
26901   0, /*tp_mro*/
26902   0, /*tp_cache*/
26903   0, /*tp_subclasses*/
26904   0, /*tp_weaklist*/
26905   0, /*tp_del*/
26906   0, /*tp_version_tag*/
26907   #if PY_VERSION_HEX >= 0x030400a1
26908   0, /*tp_finalize*/
26909   #endif
26910   #if PY_VERSION_HEX >= 0x030800b1
26911   0, /*tp_vectorcall*/
26912   #endif
26913 };
26914 static struct __pyx_vtabstruct_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree;
26915 
__pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyTypeObject * t,CYTHON_UNUSED PyObject * a,CYTHON_UNUSED PyObject * k)26916 static PyObject *__pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
26917   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *p;
26918   PyObject *o;
26919   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
26920     o = (*t->tp_alloc)(t, 0);
26921   } else {
26922     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
26923   }
26924   if (unlikely(!o)) return 0;
26925   p = ((struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)o);
26926   p->__pyx_vtab = __pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree;
26927   p->leaves = Py_None; Py_INCREF(Py_None);
26928   p->_idx = Py_None; Py_INCREF(Py_None);
26929   if (unlikely(__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
26930   return o;
26931   bad:
26932   Py_DECREF(o); o = 0;
26933   return NULL;
26934 }
26935 
__pyx_tp_dealloc_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyObject * o)26936 static void __pyx_tp_dealloc_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyObject *o) {
26937   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *p = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)o;
26938   #if CYTHON_USE_TP_FINALIZE
26939   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
26940     if (PyObject_CallFinalizerFromDealloc(o)) return;
26941   }
26942   #endif
26943   PyObject_GC_UnTrack(o);
26944   {
26945     PyObject *etype, *eval, *etb;
26946     PyErr_Fetch(&etype, &eval, &etb);
26947     ++Py_REFCNT(o);
26948     __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_5__dealloc__(o);
26949     --Py_REFCNT(o);
26950     PyErr_Restore(etype, eval, etb);
26951   }
26952   Py_CLEAR(p->leaves);
26953   Py_CLEAR(p->_idx);
26954   (*Py_TYPE(o)->tp_free)(o);
26955 }
26956 
__pyx_tp_traverse_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyObject * o,visitproc v,void * a)26957 static int __pyx_tp_traverse_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyObject *o, visitproc v, void *a) {
26958   int e;
26959   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *p = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)o;
26960   if (p->leaves) {
26961     e = (*v)(p->leaves, a); if (e) return e;
26962   }
26963   if (p->_idx) {
26964     e = (*v)(p->_idx, a); if (e) return e;
26965   }
26966   return 0;
26967 }
26968 
__pyx_tp_clear_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyObject * o)26969 static int __pyx_tp_clear_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree(PyObject *o) {
26970   PyObject* tmp;
26971   struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *p = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *)o;
26972   tmp = ((PyObject*)p->leaves);
26973   p->leaves = Py_None; Py_INCREF(Py_None);
26974   Py_XDECREF(tmp);
26975   tmp = ((PyObject*)p->_idx);
26976   p->_idx = Py_None; Py_INCREF(Py_None);
26977   Py_XDECREF(tmp);
26978   return 0;
26979 }
26980 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_left_edge(PyObject * o,CYTHON_UNUSED void * x)26981 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_left_edge(PyObject *o, CYTHON_UNUSED void *x) {
26982   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9left_edge_1__get__(o);
26983 }
26984 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_right_edge(PyObject * o,CYTHON_UNUSED void * x)26985 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_right_edge(PyObject *o, CYTHON_UNUSED void *x) {
26986   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10right_edge_1__get__(o);
26987 }
26988 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_domain_width(PyObject * o,CYTHON_UNUSED void * x)26989 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_domain_width(PyObject *o, CYTHON_UNUSED void *x) {
26990   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12domain_width_1__get__(o);
26991 }
26992 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_periodic(PyObject * o,CYTHON_UNUSED void * x)26993 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_periodic(PyObject *o, CYTHON_UNUSED void *x) {
26994   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8periodic_1__get__(o);
26995 }
26996 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_idx(PyObject * o,CYTHON_UNUSED void * x)26997 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_idx(PyObject *o, CYTHON_UNUSED void *x) {
26998   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3idx_1__get__(o);
26999 }
27000 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_npts(PyObject * o,CYTHON_UNUSED void * x)27001 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_npts(PyObject *o, CYTHON_UNUSED void *x) {
27002   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4npts_1__get__(o);
27003 }
27004 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_ndim(PyObject * o,CYTHON_UNUSED void * x)27005 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_ndim(PyObject *o, CYTHON_UNUSED void *x) {
27006   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4ndim_1__get__(o);
27007 }
27008 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_num_leaves(PyObject * o,CYTHON_UNUSED void * x)27009 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_num_leaves(PyObject *o, CYTHON_UNUSED void *x) {
27010   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10num_leaves_1__get__(o);
27011 }
27012 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_leafsize(PyObject * o,CYTHON_UNUSED void * x)27013 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_leafsize(PyObject *o, CYTHON_UNUSED void *x) {
27014   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leafsize_1__get__(o);
27015 }
27016 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_data_version(PyObject * o,CYTHON_UNUSED void * x)27017 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_data_version(PyObject *o, CYTHON_UNUSED void *x) {
27018   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12data_version_1__get__(o);
27019 }
27020 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_leaves(PyObject * o,CYTHON_UNUSED void * x)27021 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_leaves(PyObject *o, CYTHON_UNUSED void *x) {
27022   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6leaves_1__get__(o);
27023 }
27024 
__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__idx(PyObject * o,CYTHON_UNUSED void * x)27025 static PyObject *__pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__idx(PyObject *o, CYTHON_UNUSED void *x) {
27026   return __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_4_idx_1__get__(o);
27027 }
27028 
27029 static PyMethodDef __pyx_methods_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree[] = {
27030   {"assert_equal", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_7assert_equal, METH_VARARGS|METH_KEYWORDS, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_6assert_equal},
27031   {"leaf_idx", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_9leaf_idx, METH_O, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_8leaf_idx},
27032   {"get_neighbor_ids", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_11get_neighbor_ids, METH_O, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_10get_neighbor_ids},
27033   {"get", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_13get, METH_O, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_12get},
27034   {"consolidate_edges", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_15consolidate_edges, METH_NOARGS, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_14consolidate_edges},
27035   {"save", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_17save, METH_O, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_16save},
27036   {"from_file", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_19from_file, METH_VARARGS|METH_KEYWORDS, __pyx_doc_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_18from_file},
27037   {"__reduce_cython__", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_21__reduce_cython__, METH_NOARGS, 0},
27038   {"__setstate_cython__", (PyCFunction)__pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_23__setstate_cython__, METH_O, 0},
27039   {0, 0, 0, 0}
27040 };
27041 
27042 static struct PyGetSetDef __pyx_getsets_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree[] = {
27043   {(char *)"left_edge", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_left_edge, 0, (char *)0, 0},
27044   {(char *)"right_edge", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_right_edge, 0, (char *)0, 0},
27045   {(char *)"domain_width", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_domain_width, 0, (char *)0, 0},
27046   {(char *)"periodic", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_periodic, 0, (char *)0, 0},
27047   {(char *)"idx", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_idx, 0, (char *)0, 0},
27048   {(char *)"npts", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_npts, 0, (char *)0, 0},
27049   {(char *)"ndim", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_ndim, 0, (char *)0, 0},
27050   {(char *)"num_leaves", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_num_leaves, 0, (char *)0, 0},
27051   {(char *)"leafsize", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_leafsize, 0, (char *)0, 0},
27052   {(char *)"data_version", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_data_version, 0, (char *)0, 0},
27053   {(char *)"leaves", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_leaves, 0, (char *)0, 0},
27054   {(char *)"_idx", __pyx_getprop_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__idx, 0, (char *)0, 0},
27055   {0, 0, 0, 0, 0}
27056 };
27057 
27058 static PyTypeObject __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree = {
27059   PyVarObject_HEAD_INIT(0, 0)
27060   "yt.utilities.lib.cykdtree.kdtree.PyKDTree", /*tp_name*/
27061   sizeof(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree), /*tp_basicsize*/
27062   0, /*tp_itemsize*/
27063   __pyx_tp_dealloc_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, /*tp_dealloc*/
27064   0, /*tp_print*/
27065   0, /*tp_getattr*/
27066   0, /*tp_setattr*/
27067   #if PY_MAJOR_VERSION < 3
27068   0, /*tp_compare*/
27069   #endif
27070   #if PY_MAJOR_VERSION >= 3
27071   0, /*tp_as_async*/
27072   #endif
27073   0, /*tp_repr*/
27074   0, /*tp_as_number*/
27075   0, /*tp_as_sequence*/
27076   0, /*tp_as_mapping*/
27077   0, /*tp_hash*/
27078   0, /*tp_call*/
27079   0, /*tp_str*/
27080   0, /*tp_getattro*/
27081   0, /*tp_setattro*/
27082   0, /*tp_as_buffer*/
27083   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
27084   "Construct a KDTree for a set of points.\n\n    Args:\n        pts (np.ndarray of double): (n,m) array of n coordinates in a\n            m-dimensional domain.\n        left_edge (np.ndarray of double): (m,) domain minimum in each dimension.\n        right_edge (np.ndarray of double): (m,) domain maximum in each dimension.\n        periodic (bool or np.ndarray of bool, optional): Truth of the domain\n            periodicity overall (if bool), or in each dimension (if np.ndarray).\n            Defaults to `False`.\n        leafsize (int, optional): The maximum number of points that should be in\n            a leaf. Defaults to 10000.\n        nleaves (int, optional): The number of leaves that should be in the\n            resulting tree. If greater than 0, leafsize is adjusted to produce a\n            tree with 2**(ceil(log2(nleaves))) leaves. The leafsize keyword\n            argument is ignored if nleaves is greater zero. Defaults to 0.\n        data_version (int, optional): An optional user-provided integer that\n            can be used to uniquely identify the data used to generate the\n            KDTree. This is useful if you save the kdtree to disk and restore\n            it later and need to verify that the underlying data is the same.\n        use_sliding_midpoint (bool, optional): If True, the sliding midpoint\n            rule is used to perform splits. Otherwise, the median is used.\n            Defaults to False.\n\n    Raises:\n        ValueError: If `leafsize < 2`. This currectly segfaults.\n\n    Attributes:\n        npts (uint64): Number of points in the tree.\n        ndim (uint32): Number of dimensions points occupy.\n        data_version (int64): User-provided version number (defaults to 0)\n        num_leaves (uint32): Number of leaves in the tree.\n        leafsize (uint32): Maximum number of points a leaf can have.\n        leaves (list of `cykdtree.PyNode`): Tree leaves.\n        idx (np.ndarray of uint64): Indices sorting the points by leaf.""\n        left_edge (np.ndarray of double): (m,) domain minimum in each dimension.\n        right_edge (np.ndarray of double): (m,) domain maximum in each dimension.\n        domain_width (np.ndarray of double): (m,) domain width in each dimension.\n        periodic (np.ndarray of bool): Truth of domain periodicity in each\n            dimension.\n\n    ", /*tp_doc*/
27085   __pyx_tp_traverse_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, /*tp_traverse*/
27086   __pyx_tp_clear_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, /*tp_clear*/
27087   0, /*tp_richcompare*/
27088   0, /*tp_weaklistoffset*/
27089   0, /*tp_iter*/
27090   0, /*tp_iternext*/
27091   __pyx_methods_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, /*tp_methods*/
27092   0, /*tp_members*/
27093   __pyx_getsets_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, /*tp_getset*/
27094   0, /*tp_base*/
27095   0, /*tp_dict*/
27096   0, /*tp_descr_get*/
27097   0, /*tp_descr_set*/
27098   0, /*tp_dictoffset*/
27099   __pyx_pw_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree_3__init__, /*tp_init*/
27100   0, /*tp_alloc*/
27101   __pyx_tp_new_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, /*tp_new*/
27102   0, /*tp_free*/
27103   0, /*tp_is_gc*/
27104   0, /*tp_bases*/
27105   0, /*tp_mro*/
27106   0, /*tp_cache*/
27107   0, /*tp_subclasses*/
27108   0, /*tp_weaklist*/
27109   0, /*tp_del*/
27110   0, /*tp_version_tag*/
27111   #if PY_VERSION_HEX >= 0x030400a1
27112   0, /*tp_finalize*/
27113   #endif
27114   #if PY_VERSION_HEX >= 0x030800b1
27115   0, /*tp_vectorcall*/
27116   #endif
27117 };
27118 static struct __pyx_vtabstruct_array __pyx_vtable_array;
27119 
__pyx_tp_new_array(PyTypeObject * t,PyObject * a,PyObject * k)27120 static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) {
27121   struct __pyx_array_obj *p;
27122   PyObject *o;
27123   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
27124     o = (*t->tp_alloc)(t, 0);
27125   } else {
27126     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
27127   }
27128   if (unlikely(!o)) return 0;
27129   p = ((struct __pyx_array_obj *)o);
27130   p->__pyx_vtab = __pyx_vtabptr_array;
27131   p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None);
27132   p->_format = ((PyObject*)Py_None); Py_INCREF(Py_None);
27133   if (unlikely(__pyx_array___cinit__(o, a, k) < 0)) goto bad;
27134   return o;
27135   bad:
27136   Py_DECREF(o); o = 0;
27137   return NULL;
27138 }
27139 
__pyx_tp_dealloc_array(PyObject * o)27140 static void __pyx_tp_dealloc_array(PyObject *o) {
27141   struct __pyx_array_obj *p = (struct __pyx_array_obj *)o;
27142   #if CYTHON_USE_TP_FINALIZE
27143   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
27144     if (PyObject_CallFinalizerFromDealloc(o)) return;
27145   }
27146   #endif
27147   {
27148     PyObject *etype, *eval, *etb;
27149     PyErr_Fetch(&etype, &eval, &etb);
27150     ++Py_REFCNT(o);
27151     __pyx_array___dealloc__(o);
27152     --Py_REFCNT(o);
27153     PyErr_Restore(etype, eval, etb);
27154   }
27155   Py_CLEAR(p->mode);
27156   Py_CLEAR(p->_format);
27157   (*Py_TYPE(o)->tp_free)(o);
27158 }
__pyx_sq_item_array(PyObject * o,Py_ssize_t i)27159 static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) {
27160   PyObject *r;
27161   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
27162   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
27163   Py_DECREF(x);
27164   return r;
27165 }
27166 
__pyx_mp_ass_subscript_array(PyObject * o,PyObject * i,PyObject * v)27167 static int __pyx_mp_ass_subscript_array(PyObject *o, PyObject *i, PyObject *v) {
27168   if (v) {
27169     return __pyx_array___setitem__(o, i, v);
27170   }
27171   else {
27172     PyErr_Format(PyExc_NotImplementedError,
27173       "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
27174     return -1;
27175   }
27176 }
27177 
__pyx_tp_getattro_array(PyObject * o,PyObject * n)27178 static PyObject *__pyx_tp_getattro_array(PyObject *o, PyObject *n) {
27179   PyObject *v = __Pyx_PyObject_GenericGetAttr(o, n);
27180   if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
27181     PyErr_Clear();
27182     v = __pyx_array___getattr__(o, n);
27183   }
27184   return v;
27185 }
27186 
__pyx_getprop___pyx_array_memview(PyObject * o,CYTHON_UNUSED void * x)27187 static PyObject *__pyx_getprop___pyx_array_memview(PyObject *o, CYTHON_UNUSED void *x) {
27188   return __pyx_pw_15View_dot_MemoryView_5array_7memview_1__get__(o);
27189 }
27190 
27191 static PyMethodDef __pyx_methods_array[] = {
27192   {"__getattr__", (PyCFunction)__pyx_array___getattr__, METH_O|METH_COEXIST, 0},
27193   {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_array_1__reduce_cython__, METH_NOARGS, 0},
27194   {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_array_3__setstate_cython__, METH_O, 0},
27195   {0, 0, 0, 0}
27196 };
27197 
27198 static struct PyGetSetDef __pyx_getsets_array[] = {
27199   {(char *)"memview", __pyx_getprop___pyx_array_memview, 0, (char *)0, 0},
27200   {0, 0, 0, 0, 0}
27201 };
27202 
27203 static PySequenceMethods __pyx_tp_as_sequence_array = {
27204   __pyx_array___len__, /*sq_length*/
27205   0, /*sq_concat*/
27206   0, /*sq_repeat*/
27207   __pyx_sq_item_array, /*sq_item*/
27208   0, /*sq_slice*/
27209   0, /*sq_ass_item*/
27210   0, /*sq_ass_slice*/
27211   0, /*sq_contains*/
27212   0, /*sq_inplace_concat*/
27213   0, /*sq_inplace_repeat*/
27214 };
27215 
27216 static PyMappingMethods __pyx_tp_as_mapping_array = {
27217   __pyx_array___len__, /*mp_length*/
27218   __pyx_array___getitem__, /*mp_subscript*/
27219   __pyx_mp_ass_subscript_array, /*mp_ass_subscript*/
27220 };
27221 
27222 static PyBufferProcs __pyx_tp_as_buffer_array = {
27223   #if PY_MAJOR_VERSION < 3
27224   0, /*bf_getreadbuffer*/
27225   #endif
27226   #if PY_MAJOR_VERSION < 3
27227   0, /*bf_getwritebuffer*/
27228   #endif
27229   #if PY_MAJOR_VERSION < 3
27230   0, /*bf_getsegcount*/
27231   #endif
27232   #if PY_MAJOR_VERSION < 3
27233   0, /*bf_getcharbuffer*/
27234   #endif
27235   __pyx_array_getbuffer, /*bf_getbuffer*/
27236   0, /*bf_releasebuffer*/
27237 };
27238 
27239 static PyTypeObject __pyx_type___pyx_array = {
27240   PyVarObject_HEAD_INIT(0, 0)
27241   "yt.utilities.lib.cykdtree.kdtree.array", /*tp_name*/
27242   sizeof(struct __pyx_array_obj), /*tp_basicsize*/
27243   0, /*tp_itemsize*/
27244   __pyx_tp_dealloc_array, /*tp_dealloc*/
27245   0, /*tp_print*/
27246   0, /*tp_getattr*/
27247   0, /*tp_setattr*/
27248   #if PY_MAJOR_VERSION < 3
27249   0, /*tp_compare*/
27250   #endif
27251   #if PY_MAJOR_VERSION >= 3
27252   0, /*tp_as_async*/
27253   #endif
27254   0, /*tp_repr*/
27255   0, /*tp_as_number*/
27256   &__pyx_tp_as_sequence_array, /*tp_as_sequence*/
27257   &__pyx_tp_as_mapping_array, /*tp_as_mapping*/
27258   0, /*tp_hash*/
27259   0, /*tp_call*/
27260   0, /*tp_str*/
27261   __pyx_tp_getattro_array, /*tp_getattro*/
27262   0, /*tp_setattro*/
27263   &__pyx_tp_as_buffer_array, /*tp_as_buffer*/
27264   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
27265   0, /*tp_doc*/
27266   0, /*tp_traverse*/
27267   0, /*tp_clear*/
27268   0, /*tp_richcompare*/
27269   0, /*tp_weaklistoffset*/
27270   0, /*tp_iter*/
27271   0, /*tp_iternext*/
27272   __pyx_methods_array, /*tp_methods*/
27273   0, /*tp_members*/
27274   __pyx_getsets_array, /*tp_getset*/
27275   0, /*tp_base*/
27276   0, /*tp_dict*/
27277   0, /*tp_descr_get*/
27278   0, /*tp_descr_set*/
27279   0, /*tp_dictoffset*/
27280   0, /*tp_init*/
27281   0, /*tp_alloc*/
27282   __pyx_tp_new_array, /*tp_new*/
27283   0, /*tp_free*/
27284   0, /*tp_is_gc*/
27285   0, /*tp_bases*/
27286   0, /*tp_mro*/
27287   0, /*tp_cache*/
27288   0, /*tp_subclasses*/
27289   0, /*tp_weaklist*/
27290   0, /*tp_del*/
27291   0, /*tp_version_tag*/
27292   #if PY_VERSION_HEX >= 0x030400a1
27293   0, /*tp_finalize*/
27294   #endif
27295   #if PY_VERSION_HEX >= 0x030800b1
27296   0, /*tp_vectorcall*/
27297   #endif
27298 };
27299 
__pyx_tp_new_Enum(PyTypeObject * t,CYTHON_UNUSED PyObject * a,CYTHON_UNUSED PyObject * k)27300 static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
27301   struct __pyx_MemviewEnum_obj *p;
27302   PyObject *o;
27303   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
27304     o = (*t->tp_alloc)(t, 0);
27305   } else {
27306     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
27307   }
27308   if (unlikely(!o)) return 0;
27309   p = ((struct __pyx_MemviewEnum_obj *)o);
27310   p->name = Py_None; Py_INCREF(Py_None);
27311   return o;
27312 }
27313 
__pyx_tp_dealloc_Enum(PyObject * o)27314 static void __pyx_tp_dealloc_Enum(PyObject *o) {
27315   struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
27316   #if CYTHON_USE_TP_FINALIZE
27317   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
27318     if (PyObject_CallFinalizerFromDealloc(o)) return;
27319   }
27320   #endif
27321   PyObject_GC_UnTrack(o);
27322   Py_CLEAR(p->name);
27323   (*Py_TYPE(o)->tp_free)(o);
27324 }
27325 
__pyx_tp_traverse_Enum(PyObject * o,visitproc v,void * a)27326 static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) {
27327   int e;
27328   struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
27329   if (p->name) {
27330     e = (*v)(p->name, a); if (e) return e;
27331   }
27332   return 0;
27333 }
27334 
__pyx_tp_clear_Enum(PyObject * o)27335 static int __pyx_tp_clear_Enum(PyObject *o) {
27336   PyObject* tmp;
27337   struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o;
27338   tmp = ((PyObject*)p->name);
27339   p->name = Py_None; Py_INCREF(Py_None);
27340   Py_XDECREF(tmp);
27341   return 0;
27342 }
27343 
27344 static PyMethodDef __pyx_methods_Enum[] = {
27345   {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_1__reduce_cython__, METH_NOARGS, 0},
27346   {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_MemviewEnum_3__setstate_cython__, METH_O, 0},
27347   {0, 0, 0, 0}
27348 };
27349 
27350 static PyTypeObject __pyx_type___pyx_MemviewEnum = {
27351   PyVarObject_HEAD_INIT(0, 0)
27352   "yt.utilities.lib.cykdtree.kdtree.Enum", /*tp_name*/
27353   sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/
27354   0, /*tp_itemsize*/
27355   __pyx_tp_dealloc_Enum, /*tp_dealloc*/
27356   0, /*tp_print*/
27357   0, /*tp_getattr*/
27358   0, /*tp_setattr*/
27359   #if PY_MAJOR_VERSION < 3
27360   0, /*tp_compare*/
27361   #endif
27362   #if PY_MAJOR_VERSION >= 3
27363   0, /*tp_as_async*/
27364   #endif
27365   __pyx_MemviewEnum___repr__, /*tp_repr*/
27366   0, /*tp_as_number*/
27367   0, /*tp_as_sequence*/
27368   0, /*tp_as_mapping*/
27369   0, /*tp_hash*/
27370   0, /*tp_call*/
27371   0, /*tp_str*/
27372   0, /*tp_getattro*/
27373   0, /*tp_setattro*/
27374   0, /*tp_as_buffer*/
27375   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
27376   0, /*tp_doc*/
27377   __pyx_tp_traverse_Enum, /*tp_traverse*/
27378   __pyx_tp_clear_Enum, /*tp_clear*/
27379   0, /*tp_richcompare*/
27380   0, /*tp_weaklistoffset*/
27381   0, /*tp_iter*/
27382   0, /*tp_iternext*/
27383   __pyx_methods_Enum, /*tp_methods*/
27384   0, /*tp_members*/
27385   0, /*tp_getset*/
27386   0, /*tp_base*/
27387   0, /*tp_dict*/
27388   0, /*tp_descr_get*/
27389   0, /*tp_descr_set*/
27390   0, /*tp_dictoffset*/
27391   __pyx_MemviewEnum___init__, /*tp_init*/
27392   0, /*tp_alloc*/
27393   __pyx_tp_new_Enum, /*tp_new*/
27394   0, /*tp_free*/
27395   0, /*tp_is_gc*/
27396   0, /*tp_bases*/
27397   0, /*tp_mro*/
27398   0, /*tp_cache*/
27399   0, /*tp_subclasses*/
27400   0, /*tp_weaklist*/
27401   0, /*tp_del*/
27402   0, /*tp_version_tag*/
27403   #if PY_VERSION_HEX >= 0x030400a1
27404   0, /*tp_finalize*/
27405   #endif
27406   #if PY_VERSION_HEX >= 0x030800b1
27407   0, /*tp_vectorcall*/
27408   #endif
27409 };
27410 static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview;
27411 
__pyx_tp_new_memoryview(PyTypeObject * t,PyObject * a,PyObject * k)27412 static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) {
27413   struct __pyx_memoryview_obj *p;
27414   PyObject *o;
27415   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
27416     o = (*t->tp_alloc)(t, 0);
27417   } else {
27418     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
27419   }
27420   if (unlikely(!o)) return 0;
27421   p = ((struct __pyx_memoryview_obj *)o);
27422   p->__pyx_vtab = __pyx_vtabptr_memoryview;
27423   p->obj = Py_None; Py_INCREF(Py_None);
27424   p->_size = Py_None; Py_INCREF(Py_None);
27425   p->_array_interface = Py_None; Py_INCREF(Py_None);
27426   p->view.obj = NULL;
27427   if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad;
27428   return o;
27429   bad:
27430   Py_DECREF(o); o = 0;
27431   return NULL;
27432 }
27433 
__pyx_tp_dealloc_memoryview(PyObject * o)27434 static void __pyx_tp_dealloc_memoryview(PyObject *o) {
27435   struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
27436   #if CYTHON_USE_TP_FINALIZE
27437   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
27438     if (PyObject_CallFinalizerFromDealloc(o)) return;
27439   }
27440   #endif
27441   PyObject_GC_UnTrack(o);
27442   {
27443     PyObject *etype, *eval, *etb;
27444     PyErr_Fetch(&etype, &eval, &etb);
27445     ++Py_REFCNT(o);
27446     __pyx_memoryview___dealloc__(o);
27447     --Py_REFCNT(o);
27448     PyErr_Restore(etype, eval, etb);
27449   }
27450   Py_CLEAR(p->obj);
27451   Py_CLEAR(p->_size);
27452   Py_CLEAR(p->_array_interface);
27453   (*Py_TYPE(o)->tp_free)(o);
27454 }
27455 
__pyx_tp_traverse_memoryview(PyObject * o,visitproc v,void * a)27456 static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) {
27457   int e;
27458   struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
27459   if (p->obj) {
27460     e = (*v)(p->obj, a); if (e) return e;
27461   }
27462   if (p->_size) {
27463     e = (*v)(p->_size, a); if (e) return e;
27464   }
27465   if (p->_array_interface) {
27466     e = (*v)(p->_array_interface, a); if (e) return e;
27467   }
27468   if (p->view.obj) {
27469     e = (*v)(p->view.obj, a); if (e) return e;
27470   }
27471   return 0;
27472 }
27473 
__pyx_tp_clear_memoryview(PyObject * o)27474 static int __pyx_tp_clear_memoryview(PyObject *o) {
27475   PyObject* tmp;
27476   struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o;
27477   tmp = ((PyObject*)p->obj);
27478   p->obj = Py_None; Py_INCREF(Py_None);
27479   Py_XDECREF(tmp);
27480   tmp = ((PyObject*)p->_size);
27481   p->_size = Py_None; Py_INCREF(Py_None);
27482   Py_XDECREF(tmp);
27483   tmp = ((PyObject*)p->_array_interface);
27484   p->_array_interface = Py_None; Py_INCREF(Py_None);
27485   Py_XDECREF(tmp);
27486   Py_CLEAR(p->view.obj);
27487   return 0;
27488 }
__pyx_sq_item_memoryview(PyObject * o,Py_ssize_t i)27489 static PyObject *__pyx_sq_item_memoryview(PyObject *o, Py_ssize_t i) {
27490   PyObject *r;
27491   PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
27492   r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
27493   Py_DECREF(x);
27494   return r;
27495 }
27496 
__pyx_mp_ass_subscript_memoryview(PyObject * o,PyObject * i,PyObject * v)27497 static int __pyx_mp_ass_subscript_memoryview(PyObject *o, PyObject *i, PyObject *v) {
27498   if (v) {
27499     return __pyx_memoryview___setitem__(o, i, v);
27500   }
27501   else {
27502     PyErr_Format(PyExc_NotImplementedError,
27503       "Subscript deletion not supported by %.200s", Py_TYPE(o)->tp_name);
27504     return -1;
27505   }
27506 }
27507 
__pyx_getprop___pyx_memoryview_T(PyObject * o,CYTHON_UNUSED void * x)27508 static PyObject *__pyx_getprop___pyx_memoryview_T(PyObject *o, CYTHON_UNUSED void *x) {
27509   return __pyx_pw_15View_dot_MemoryView_10memoryview_1T_1__get__(o);
27510 }
27511 
__pyx_getprop___pyx_memoryview_base(PyObject * o,CYTHON_UNUSED void * x)27512 static PyObject *__pyx_getprop___pyx_memoryview_base(PyObject *o, CYTHON_UNUSED void *x) {
27513   return __pyx_pw_15View_dot_MemoryView_10memoryview_4base_1__get__(o);
27514 }
27515 
__pyx_getprop___pyx_memoryview_shape(PyObject * o,CYTHON_UNUSED void * x)27516 static PyObject *__pyx_getprop___pyx_memoryview_shape(PyObject *o, CYTHON_UNUSED void *x) {
27517   return __pyx_pw_15View_dot_MemoryView_10memoryview_5shape_1__get__(o);
27518 }
27519 
__pyx_getprop___pyx_memoryview_strides(PyObject * o,CYTHON_UNUSED void * x)27520 static PyObject *__pyx_getprop___pyx_memoryview_strides(PyObject *o, CYTHON_UNUSED void *x) {
27521   return __pyx_pw_15View_dot_MemoryView_10memoryview_7strides_1__get__(o);
27522 }
27523 
__pyx_getprop___pyx_memoryview_suboffsets(PyObject * o,CYTHON_UNUSED void * x)27524 static PyObject *__pyx_getprop___pyx_memoryview_suboffsets(PyObject *o, CYTHON_UNUSED void *x) {
27525   return __pyx_pw_15View_dot_MemoryView_10memoryview_10suboffsets_1__get__(o);
27526 }
27527 
__pyx_getprop___pyx_memoryview_ndim(PyObject * o,CYTHON_UNUSED void * x)27528 static PyObject *__pyx_getprop___pyx_memoryview_ndim(PyObject *o, CYTHON_UNUSED void *x) {
27529   return __pyx_pw_15View_dot_MemoryView_10memoryview_4ndim_1__get__(o);
27530 }
27531 
__pyx_getprop___pyx_memoryview_itemsize(PyObject * o,CYTHON_UNUSED void * x)27532 static PyObject *__pyx_getprop___pyx_memoryview_itemsize(PyObject *o, CYTHON_UNUSED void *x) {
27533   return __pyx_pw_15View_dot_MemoryView_10memoryview_8itemsize_1__get__(o);
27534 }
27535 
__pyx_getprop___pyx_memoryview_nbytes(PyObject * o,CYTHON_UNUSED void * x)27536 static PyObject *__pyx_getprop___pyx_memoryview_nbytes(PyObject *o, CYTHON_UNUSED void *x) {
27537   return __pyx_pw_15View_dot_MemoryView_10memoryview_6nbytes_1__get__(o);
27538 }
27539 
__pyx_getprop___pyx_memoryview_size(PyObject * o,CYTHON_UNUSED void * x)27540 static PyObject *__pyx_getprop___pyx_memoryview_size(PyObject *o, CYTHON_UNUSED void *x) {
27541   return __pyx_pw_15View_dot_MemoryView_10memoryview_4size_1__get__(o);
27542 }
27543 
27544 static PyMethodDef __pyx_methods_memoryview[] = {
27545   {"is_c_contig", (PyCFunction)__pyx_memoryview_is_c_contig, METH_NOARGS, 0},
27546   {"is_f_contig", (PyCFunction)__pyx_memoryview_is_f_contig, METH_NOARGS, 0},
27547   {"copy", (PyCFunction)__pyx_memoryview_copy, METH_NOARGS, 0},
27548   {"copy_fortran", (PyCFunction)__pyx_memoryview_copy_fortran, METH_NOARGS, 0},
27549   {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_1__reduce_cython__, METH_NOARGS, 0},
27550   {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryview_3__setstate_cython__, METH_O, 0},
27551   {0, 0, 0, 0}
27552 };
27553 
27554 static struct PyGetSetDef __pyx_getsets_memoryview[] = {
27555   {(char *)"T", __pyx_getprop___pyx_memoryview_T, 0, (char *)0, 0},
27556   {(char *)"base", __pyx_getprop___pyx_memoryview_base, 0, (char *)0, 0},
27557   {(char *)"shape", __pyx_getprop___pyx_memoryview_shape, 0, (char *)0, 0},
27558   {(char *)"strides", __pyx_getprop___pyx_memoryview_strides, 0, (char *)0, 0},
27559   {(char *)"suboffsets", __pyx_getprop___pyx_memoryview_suboffsets, 0, (char *)0, 0},
27560   {(char *)"ndim", __pyx_getprop___pyx_memoryview_ndim, 0, (char *)0, 0},
27561   {(char *)"itemsize", __pyx_getprop___pyx_memoryview_itemsize, 0, (char *)0, 0},
27562   {(char *)"nbytes", __pyx_getprop___pyx_memoryview_nbytes, 0, (char *)0, 0},
27563   {(char *)"size", __pyx_getprop___pyx_memoryview_size, 0, (char *)0, 0},
27564   {0, 0, 0, 0, 0}
27565 };
27566 
27567 static PySequenceMethods __pyx_tp_as_sequence_memoryview = {
27568   __pyx_memoryview___len__, /*sq_length*/
27569   0, /*sq_concat*/
27570   0, /*sq_repeat*/
27571   __pyx_sq_item_memoryview, /*sq_item*/
27572   0, /*sq_slice*/
27573   0, /*sq_ass_item*/
27574   0, /*sq_ass_slice*/
27575   0, /*sq_contains*/
27576   0, /*sq_inplace_concat*/
27577   0, /*sq_inplace_repeat*/
27578 };
27579 
27580 static PyMappingMethods __pyx_tp_as_mapping_memoryview = {
27581   __pyx_memoryview___len__, /*mp_length*/
27582   __pyx_memoryview___getitem__, /*mp_subscript*/
27583   __pyx_mp_ass_subscript_memoryview, /*mp_ass_subscript*/
27584 };
27585 
27586 static PyBufferProcs __pyx_tp_as_buffer_memoryview = {
27587   #if PY_MAJOR_VERSION < 3
27588   0, /*bf_getreadbuffer*/
27589   #endif
27590   #if PY_MAJOR_VERSION < 3
27591   0, /*bf_getwritebuffer*/
27592   #endif
27593   #if PY_MAJOR_VERSION < 3
27594   0, /*bf_getsegcount*/
27595   #endif
27596   #if PY_MAJOR_VERSION < 3
27597   0, /*bf_getcharbuffer*/
27598   #endif
27599   __pyx_memoryview_getbuffer, /*bf_getbuffer*/
27600   0, /*bf_releasebuffer*/
27601 };
27602 
27603 static PyTypeObject __pyx_type___pyx_memoryview = {
27604   PyVarObject_HEAD_INIT(0, 0)
27605   "yt.utilities.lib.cykdtree.kdtree.memoryview", /*tp_name*/
27606   sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/
27607   0, /*tp_itemsize*/
27608   __pyx_tp_dealloc_memoryview, /*tp_dealloc*/
27609   0, /*tp_print*/
27610   0, /*tp_getattr*/
27611   0, /*tp_setattr*/
27612   #if PY_MAJOR_VERSION < 3
27613   0, /*tp_compare*/
27614   #endif
27615   #if PY_MAJOR_VERSION >= 3
27616   0, /*tp_as_async*/
27617   #endif
27618   __pyx_memoryview___repr__, /*tp_repr*/
27619   0, /*tp_as_number*/
27620   &__pyx_tp_as_sequence_memoryview, /*tp_as_sequence*/
27621   &__pyx_tp_as_mapping_memoryview, /*tp_as_mapping*/
27622   0, /*tp_hash*/
27623   0, /*tp_call*/
27624   __pyx_memoryview___str__, /*tp_str*/
27625   0, /*tp_getattro*/
27626   0, /*tp_setattro*/
27627   &__pyx_tp_as_buffer_memoryview, /*tp_as_buffer*/
27628   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
27629   0, /*tp_doc*/
27630   __pyx_tp_traverse_memoryview, /*tp_traverse*/
27631   __pyx_tp_clear_memoryview, /*tp_clear*/
27632   0, /*tp_richcompare*/
27633   0, /*tp_weaklistoffset*/
27634   0, /*tp_iter*/
27635   0, /*tp_iternext*/
27636   __pyx_methods_memoryview, /*tp_methods*/
27637   0, /*tp_members*/
27638   __pyx_getsets_memoryview, /*tp_getset*/
27639   0, /*tp_base*/
27640   0, /*tp_dict*/
27641   0, /*tp_descr_get*/
27642   0, /*tp_descr_set*/
27643   0, /*tp_dictoffset*/
27644   0, /*tp_init*/
27645   0, /*tp_alloc*/
27646   __pyx_tp_new_memoryview, /*tp_new*/
27647   0, /*tp_free*/
27648   0, /*tp_is_gc*/
27649   0, /*tp_bases*/
27650   0, /*tp_mro*/
27651   0, /*tp_cache*/
27652   0, /*tp_subclasses*/
27653   0, /*tp_weaklist*/
27654   0, /*tp_del*/
27655   0, /*tp_version_tag*/
27656   #if PY_VERSION_HEX >= 0x030400a1
27657   0, /*tp_finalize*/
27658   #endif
27659   #if PY_VERSION_HEX >= 0x030800b1
27660   0, /*tp_vectorcall*/
27661   #endif
27662 };
27663 static struct __pyx_vtabstruct__memoryviewslice __pyx_vtable__memoryviewslice;
27664 
__pyx_tp_new__memoryviewslice(PyTypeObject * t,PyObject * a,PyObject * k)27665 static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyObject *k) {
27666   struct __pyx_memoryviewslice_obj *p;
27667   PyObject *o = __pyx_tp_new_memoryview(t, a, k);
27668   if (unlikely(!o)) return 0;
27669   p = ((struct __pyx_memoryviewslice_obj *)o);
27670   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_memoryview*)__pyx_vtabptr__memoryviewslice;
27671   p->from_object = Py_None; Py_INCREF(Py_None);
27672   p->from_slice.memview = NULL;
27673   return o;
27674 }
27675 
__pyx_tp_dealloc__memoryviewslice(PyObject * o)27676 static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) {
27677   struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
27678   #if CYTHON_USE_TP_FINALIZE
27679   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
27680     if (PyObject_CallFinalizerFromDealloc(o)) return;
27681   }
27682   #endif
27683   PyObject_GC_UnTrack(o);
27684   {
27685     PyObject *etype, *eval, *etb;
27686     PyErr_Fetch(&etype, &eval, &etb);
27687     ++Py_REFCNT(o);
27688     __pyx_memoryviewslice___dealloc__(o);
27689     --Py_REFCNT(o);
27690     PyErr_Restore(etype, eval, etb);
27691   }
27692   Py_CLEAR(p->from_object);
27693   PyObject_GC_Track(o);
27694   __pyx_tp_dealloc_memoryview(o);
27695 }
27696 
__pyx_tp_traverse__memoryviewslice(PyObject * o,visitproc v,void * a)27697 static int __pyx_tp_traverse__memoryviewslice(PyObject *o, visitproc v, void *a) {
27698   int e;
27699   struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
27700   e = __pyx_tp_traverse_memoryview(o, v, a); if (e) return e;
27701   if (p->from_object) {
27702     e = (*v)(p->from_object, a); if (e) return e;
27703   }
27704   return 0;
27705 }
27706 
__pyx_tp_clear__memoryviewslice(PyObject * o)27707 static int __pyx_tp_clear__memoryviewslice(PyObject *o) {
27708   PyObject* tmp;
27709   struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o;
27710   __pyx_tp_clear_memoryview(o);
27711   tmp = ((PyObject*)p->from_object);
27712   p->from_object = Py_None; Py_INCREF(Py_None);
27713   Py_XDECREF(tmp);
27714   __PYX_XDEC_MEMVIEW(&p->from_slice, 1);
27715   return 0;
27716 }
27717 
__pyx_getprop___pyx_memoryviewslice_base(PyObject * o,CYTHON_UNUSED void * x)27718 static PyObject *__pyx_getprop___pyx_memoryviewslice_base(PyObject *o, CYTHON_UNUSED void *x) {
27719   return __pyx_pw_15View_dot_MemoryView_16_memoryviewslice_4base_1__get__(o);
27720 }
27721 
27722 static PyMethodDef __pyx_methods__memoryviewslice[] = {
27723   {"__reduce_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_1__reduce_cython__, METH_NOARGS, 0},
27724   {"__setstate_cython__", (PyCFunction)__pyx_pw___pyx_memoryviewslice_3__setstate_cython__, METH_O, 0},
27725   {0, 0, 0, 0}
27726 };
27727 
27728 static struct PyGetSetDef __pyx_getsets__memoryviewslice[] = {
27729   {(char *)"base", __pyx_getprop___pyx_memoryviewslice_base, 0, (char *)0, 0},
27730   {0, 0, 0, 0, 0}
27731 };
27732 
27733 static PyTypeObject __pyx_type___pyx_memoryviewslice = {
27734   PyVarObject_HEAD_INIT(0, 0)
27735   "yt.utilities.lib.cykdtree.kdtree._memoryviewslice", /*tp_name*/
27736   sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/
27737   0, /*tp_itemsize*/
27738   __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/
27739   0, /*tp_print*/
27740   0, /*tp_getattr*/
27741   0, /*tp_setattr*/
27742   #if PY_MAJOR_VERSION < 3
27743   0, /*tp_compare*/
27744   #endif
27745   #if PY_MAJOR_VERSION >= 3
27746   0, /*tp_as_async*/
27747   #endif
27748   #if CYTHON_COMPILING_IN_PYPY
27749   __pyx_memoryview___repr__, /*tp_repr*/
27750   #else
27751   0, /*tp_repr*/
27752   #endif
27753   0, /*tp_as_number*/
27754   0, /*tp_as_sequence*/
27755   0, /*tp_as_mapping*/
27756   0, /*tp_hash*/
27757   0, /*tp_call*/
27758   #if CYTHON_COMPILING_IN_PYPY
27759   __pyx_memoryview___str__, /*tp_str*/
27760   #else
27761   0, /*tp_str*/
27762   #endif
27763   0, /*tp_getattro*/
27764   0, /*tp_setattro*/
27765   0, /*tp_as_buffer*/
27766   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
27767   "Internal class for passing memoryview slices to Python", /*tp_doc*/
27768   __pyx_tp_traverse__memoryviewslice, /*tp_traverse*/
27769   __pyx_tp_clear__memoryviewslice, /*tp_clear*/
27770   0, /*tp_richcompare*/
27771   0, /*tp_weaklistoffset*/
27772   0, /*tp_iter*/
27773   0, /*tp_iternext*/
27774   __pyx_methods__memoryviewslice, /*tp_methods*/
27775   0, /*tp_members*/
27776   __pyx_getsets__memoryviewslice, /*tp_getset*/
27777   0, /*tp_base*/
27778   0, /*tp_dict*/
27779   0, /*tp_descr_get*/
27780   0, /*tp_descr_set*/
27781   0, /*tp_dictoffset*/
27782   0, /*tp_init*/
27783   0, /*tp_alloc*/
27784   __pyx_tp_new__memoryviewslice, /*tp_new*/
27785   0, /*tp_free*/
27786   0, /*tp_is_gc*/
27787   0, /*tp_bases*/
27788   0, /*tp_mro*/
27789   0, /*tp_cache*/
27790   0, /*tp_subclasses*/
27791   0, /*tp_weaklist*/
27792   0, /*tp_del*/
27793   0, /*tp_version_tag*/
27794   #if PY_VERSION_HEX >= 0x030400a1
27795   0, /*tp_finalize*/
27796   #endif
27797   #if PY_VERSION_HEX >= 0x030800b1
27798   0, /*tp_vectorcall*/
27799   #endif
27800 };
27801 
27802 static PyMethodDef __pyx_methods[] = {
27803   {0, 0, 0, 0}
27804 };
27805 
27806 #if PY_MAJOR_VERSION >= 3
27807 #if CYTHON_PEP489_MULTI_PHASE_INIT
27808 static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
27809 static int __pyx_pymod_exec_kdtree(PyObject* module); /*proto*/
27810 static PyModuleDef_Slot __pyx_moduledef_slots[] = {
27811   {Py_mod_create, (void*)__pyx_pymod_create},
27812   {Py_mod_exec, (void*)__pyx_pymod_exec_kdtree},
27813   {0, NULL}
27814 };
27815 #endif
27816 
27817 static struct PyModuleDef __pyx_moduledef = {
27818     PyModuleDef_HEAD_INIT,
27819     "kdtree",
27820     0, /* m_doc */
27821   #if CYTHON_PEP489_MULTI_PHASE_INIT
27822     0, /* m_size */
27823   #else
27824     -1, /* m_size */
27825   #endif
27826     __pyx_methods /* m_methods */,
27827   #if CYTHON_PEP489_MULTI_PHASE_INIT
27828     __pyx_moduledef_slots, /* m_slots */
27829   #else
27830     NULL, /* m_reload */
27831   #endif
27832     NULL, /* m_traverse */
27833     NULL, /* m_clear */
27834     NULL /* m_free */
27835 };
27836 #endif
27837 #ifndef CYTHON_SMALL_CODE
27838 #if defined(__clang__)
27839     #define CYTHON_SMALL_CODE
27840 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
27841     #define CYTHON_SMALL_CODE __attribute__((cold))
27842 #else
27843     #define CYTHON_SMALL_CODE
27844 #endif
27845 #endif
27846 
27847 static __Pyx_StringTabEntry __pyx_string_tab[] = {
27848   {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
27849   {&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1},
27850   {&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0},
27851   {&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0},
27852   {&__pyx_kp_s_Cannot_assign_to_read_only_memor, __pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 0, 1, 0},
27853   {&__pyx_kp_s_Cannot_create_writable_memory_vi, __pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 0, 1, 0},
27854   {&__pyx_kp_s_Cannot_index_with_type_s, __pyx_k_Cannot_index_with_type_s, sizeof(__pyx_k_Cannot_index_with_type_s), 0, 0, 1, 0},
27855   {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1},
27856   {&__pyx_kp_s_Empty_shape_tuple_for_cython_arr, __pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 0, 1, 0},
27857   {&__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},
27858   {&__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},
27859   {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
27860   {&__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},
27861   {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
27862   {&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0},
27863   {&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0},
27864   {&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0},
27865   {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
27866   {&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0},
27867   {&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0},
27868   {&__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},
27869   {&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1},
27870   {&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0},
27871   {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
27872   {&__pyx_kp_s_Position_is_not_within_the_kdtre, __pyx_k_Position_is_not_within_the_kdtre, sizeof(__pyx_k_Position_is_not_within_the_kdtre), 0, 0, 1, 0},
27873   {&__pyx_n_s_PyKDTree, __pyx_k_PyKDTree, sizeof(__pyx_k_PyKDTree), 0, 0, 1, 1},
27874   {&__pyx_n_s_PyNode, __pyx_k_PyNode, sizeof(__pyx_k_PyNode), 0, 0, 1, 1},
27875   {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
27876   {&__pyx_kp_b_T, __pyx_k_T, sizeof(__pyx_k_T), 0, 0, 0, 0},
27877   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
27878   {&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
27879   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
27880   {&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
27881   {&__pyx_kp_b__33, __pyx_k__33, sizeof(__pyx_k__33), 0, 0, 0, 0},
27882   {&__pyx_kp_b__34, __pyx_k__34, sizeof(__pyx_k__34), 0, 0, 0, 0},
27883   {&__pyx_kp_b__35, __pyx_k__35, sizeof(__pyx_k__35), 0, 0, 0, 0},
27884   {&__pyx_kp_b__36, __pyx_k__36, sizeof(__pyx_k__36), 0, 0, 0, 0},
27885   {&__pyx_kp_u__37, __pyx_k__37, sizeof(__pyx_k__37), 0, 1, 0, 0},
27886   {&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
27887   {&__pyx_n_s_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 0, 0, 1, 1},
27888   {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
27889   {&__pyx_n_s_asarray, __pyx_k_asarray, sizeof(__pyx_k_asarray), 0, 0, 1, 1},
27890   {&__pyx_n_s_assert_array_equal, __pyx_k_assert_array_equal, sizeof(__pyx_k_assert_array_equal), 0, 0, 1, 1},
27891   {&__pyx_n_s_assert_equal, __pyx_k_assert_equal, sizeof(__pyx_k_assert_equal), 0, 0, 1, 1},
27892   {&__pyx_n_s_astype, __pyx_k_astype, sizeof(__pyx_k_astype), 0, 0, 1, 1},
27893   {&__pyx_n_s_axis, __pyx_k_axis, sizeof(__pyx_k_axis), 0, 0, 1, 1},
27894   {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1},
27895   {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1},
27896   {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
27897   {&__pyx_n_u_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 1, 0, 1},
27898   {&__pyx_n_s_ceil, __pyx_k_ceil, sizeof(__pyx_k_ceil), 0, 0, 1, 1},
27899   {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
27900   {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
27901   {&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0},
27902   {&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0},
27903   {&__pyx_n_s_data_version, __pyx_k_data_version, sizeof(__pyx_k_data_version), 0, 0, 1, 1},
27904   {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
27905   {&__pyx_n_s_dtype_is_object, __pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 0, 1, 1},
27906   {&__pyx_n_s_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 0, 0, 1, 1},
27907   {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
27908   {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
27909   {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
27910   {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1},
27911   {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
27912   {&__pyx_n_s_float64, __pyx_k_float64, sizeof(__pyx_k_float64), 0, 0, 1, 1},
27913   {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
27914   {&__pyx_n_s_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 0, 1, 1},
27915   {&__pyx_n_u_fortran, __pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 0, 1},
27916   {&__pyx_n_s_from_file, __pyx_k_from_file, sizeof(__pyx_k_from_file), 0, 0, 1, 1},
27917   {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
27918   {&__pyx_kp_s_got_differing_extents_in_dimensi, __pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 0, 1, 0},
27919   {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
27920   {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
27921   {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
27922   {&__pyx_kp_s_itemsize_0_for_cython_array, __pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 0, 1, 0},
27923   {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
27924   {&__pyx_n_s_leafsize, __pyx_k_leafsize, sizeof(__pyx_k_leafsize), 0, 0, 1, 1},
27925   {&__pyx_kp_s_leafsize_cannot_be_smaller_than, __pyx_k_leafsize_cannot_be_smaller_than, sizeof(__pyx_k_leafsize_cannot_be_smaller_than), 0, 0, 1, 0},
27926   {&__pyx_n_s_left_edge, __pyx_k_left_edge, sizeof(__pyx_k_left_edge), 0, 0, 1, 1},
27927   {&__pyx_kp_s_left_edge_s, __pyx_k_left_edge_s, sizeof(__pyx_k_left_edge_s), 0, 0, 1, 0},
27928   {&__pyx_n_s_log2, __pyx_k_log2, sizeof(__pyx_k_log2), 0, 0, 1, 1},
27929   {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
27930   {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
27931   {&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1},
27932   {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
27933   {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
27934   {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
27935   {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
27936   {&__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},
27937   {&__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},
27938   {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1},
27939   {&__pyx_n_s_neighbors, __pyx_k_neighbors, sizeof(__pyx_k_neighbors), 0, 0, 1, 1},
27940   {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
27941   {&__pyx_n_s_nleaves, __pyx_k_nleaves, sizeof(__pyx_k_nleaves), 0, 0, 1, 1},
27942   {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
27943   {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
27944   {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
27945   {&__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},
27946   {&__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},
27947   {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
27948   {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1},
27949   {&__pyx_n_s_periodic, __pyx_k_periodic, sizeof(__pyx_k_periodic), 0, 0, 1, 1},
27950   {&__pyx_n_s_periodic_left, __pyx_k_periodic_left, sizeof(__pyx_k_periodic_left), 0, 0, 1, 1},
27951   {&__pyx_n_s_periodic_right, __pyx_k_periodic_right, sizeof(__pyx_k_periodic_right), 0, 0, 1, 1},
27952   {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
27953   {&__pyx_n_s_pts, __pyx_k_pts, sizeof(__pyx_k_pts), 0, 0, 1, 1},
27954   {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
27955   {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
27956   {&__pyx_n_s_pyx_getbuffer, __pyx_k_pyx_getbuffer, sizeof(__pyx_k_pyx_getbuffer), 0, 0, 1, 1},
27957   {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
27958   {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
27959   {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
27960   {&__pyx_n_s_pyx_unpickle_Enum, __pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 0, 1, 1},
27961   {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
27962   {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
27963   {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
27964   {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
27965   {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
27966   {&__pyx_n_s_right_edge, __pyx_k_right_edge, sizeof(__pyx_k_right_edge), 0, 0, 1, 1},
27967   {&__pyx_kp_s_right_edge_s, __pyx_k_right_edge_s, sizeof(__pyx_k_right_edge_s), 0, 0, 1, 0},
27968   {&__pyx_kp_u_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0, 0},
27969   {&__pyx_kp_s_s_id_i_npts_i_start_idx_i_stop, __pyx_k_s_id_i_npts_i_start_idx_i_stop, sizeof(__pyx_k_s_id_i_npts_i_start_idx_i_stop), 0, 0, 1, 0},
27970   {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
27971   {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
27972   {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
27973   {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
27974   {&__pyx_n_s_slice, __pyx_k_slice, sizeof(__pyx_k_slice), 0, 0, 1, 1},
27975   {&__pyx_n_s_solf, __pyx_k_solf, sizeof(__pyx_k_solf), 0, 0, 1, 1},
27976   {&__pyx_n_s_sort, __pyx_k_sort, sizeof(__pyx_k_sort), 0, 0, 1, 1},
27977   {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
27978   {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
27979   {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
27980   {&__pyx_n_s_strict_idx, __pyx_k_strict_idx, sizeof(__pyx_k_strict_idx), 0, 0, 1, 1},
27981   {&__pyx_kp_s_strided_and_direct, __pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 0, 1, 0},
27982   {&__pyx_kp_s_strided_and_direct_or_indirect, __pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 0, 1, 0},
27983   {&__pyx_kp_s_strided_and_indirect, __pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 0, 1, 0},
27984   {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
27985   {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1},
27986   {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
27987   {&__pyx_n_s_testing, __pyx_k_testing, sizeof(__pyx_k_testing), 0, 0, 1, 1},
27988   {&__pyx_n_s_uint32, __pyx_k_uint32, sizeof(__pyx_k_uint32), 0, 0, 1, 1},
27989   {&__pyx_n_s_uint64, __pyx_k_uint64, sizeof(__pyx_k_uint64), 0, 0, 1, 1},
27990   {&__pyx_kp_s_unable_to_allocate_array_data, __pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 0, 1, 0},
27991   {&__pyx_kp_s_unable_to_allocate_shape_and_str, __pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 0, 1, 0},
27992   {&__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},
27993   {&__pyx_n_s_unpack, __pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 0, 1, 1},
27994   {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
27995   {&__pyx_n_s_use_sliding_midpoint, __pyx_k_use_sliding_midpoint, sizeof(__pyx_k_use_sliding_midpoint), 0, 0, 1, 1},
27996   {&__pyx_n_s_utf8, __pyx_k_utf8, sizeof(__pyx_k_utf8), 0, 0, 1, 1},
27997   {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
27998   {0, 0, 0, 0, 0, 0, 0}
27999 };
__Pyx_InitCachedBuiltins(void)28000 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
28001   __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 54, __pyx_L1_error)
28002   __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
28003   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 234, __pyx_L1_error)
28004   #if PY_MAJOR_VERSION >= 3
28005   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) __PYX_ERR(0, 323, __pyx_L1_error)
28006   #else
28007   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) __PYX_ERR(0, 323, __pyx_L1_error)
28008   #endif
28009   __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(3, 856, __pyx_L1_error)
28010   __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(3, 1038, __pyx_L1_error)
28011   __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 148, __pyx_L1_error)
28012   __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 151, __pyx_L1_error)
28013   __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 400, __pyx_L1_error)
28014   __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(1, 609, __pyx_L1_error)
28015   __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 828, __pyx_L1_error)
28016   return 0;
28017   __pyx_L1_error:;
28018   return -1;
28019 }
28020 
__Pyx_InitCachedConstants(void)28021 static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
28022   __Pyx_RefNannyDeclarations
28023   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
28024 
28025   /* "(tree fragment)":2
28026  * def __reduce_cython__(self):
28027  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28028  * def __setstate_cython__(self, __pyx_state):
28029  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28030  */
28031   __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 2, __pyx_L1_error)
28032   __Pyx_GOTREF(__pyx_tuple__2);
28033   __Pyx_GIVEREF(__pyx_tuple__2);
28034 
28035   /* "(tree fragment)":4
28036  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28037  * def __setstate_cython__(self, __pyx_state):
28038  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28039  */
28040   __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 4, __pyx_L1_error)
28041   __Pyx_GOTREF(__pyx_tuple__3);
28042   __Pyx_GIVEREF(__pyx_tuple__3);
28043 
28044   /* "yt/utilities/lib/cykdtree/kdtree.pyx":234
28045  *             # This is here to prevent segfault. The cpp code needs modified to
28046  *             # support leafsize = 1
28047  *             raise ValueError("'leafsize' cannot be smaller than 2.")             # <<<<<<<<<<<<<<
28048  *         if left_edge is None:
28049  *             left_edge = np.min(pts, axis=0)
28050  */
28051   __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_leafsize_cannot_be_smaller_than); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 234, __pyx_L1_error)
28052   __Pyx_GOTREF(__pyx_tuple__4);
28053   __Pyx_GIVEREF(__pyx_tuple__4);
28054 
28055   /* "yt/utilities/lib/cykdtree/kdtree.pyx":408
28056  *         cdef Node* leafnode = self._tree.search(&pos[0])
28057  *         if leafnode == NULL:
28058  *             raise ValueError("Position is not within the kdtree root node.")             # <<<<<<<<<<<<<<
28059  *         cdef PyNode out = self.leaves[leafnode.leafid]
28060  *         return out
28061  */
28062   __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Position_is_not_within_the_kdtre); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 408, __pyx_L1_error)
28063   __Pyx_GOTREF(__pyx_tuple__5);
28064   __Pyx_GIVEREF(__pyx_tuple__5);
28065 
28066   /* "(tree fragment)":2
28067  * def __reduce_cython__(self):
28068  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28069  * def __setstate_cython__(self, __pyx_state):
28070  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28071  */
28072   __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 2, __pyx_L1_error)
28073   __Pyx_GOTREF(__pyx_tuple__6);
28074   __Pyx_GIVEREF(__pyx_tuple__6);
28075 
28076   /* "(tree fragment)":4
28077  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28078  * def __setstate_cython__(self, __pyx_state):
28079  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28080  */
28081   __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error)
28082   __Pyx_GOTREF(__pyx_tuple__7);
28083   __Pyx_GIVEREF(__pyx_tuple__7);
28084 
28085   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272
28086  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
28087  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
28088  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
28089  *
28090  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
28091  */
28092   __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(3, 272, __pyx_L1_error)
28093   __Pyx_GOTREF(__pyx_tuple__8);
28094   __Pyx_GIVEREF(__pyx_tuple__8);
28095 
28096   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276
28097  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
28098  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
28099  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
28100  *
28101  *             info.buf = PyArray_DATA(self)
28102  */
28103   __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(3, 276, __pyx_L1_error)
28104   __Pyx_GOTREF(__pyx_tuple__9);
28105   __Pyx_GIVEREF(__pyx_tuple__9);
28106 
28107   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306
28108  *                 if ((descr.byteorder == c'>' and little_endian) or
28109  *                     (descr.byteorder == c'<' and not little_endian)):
28110  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
28111  *                 if   t == NPY_BYTE:        f = "b"
28112  *                 elif t == NPY_UBYTE:       f = "B"
28113  */
28114   __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(3, 306, __pyx_L1_error)
28115   __Pyx_GOTREF(__pyx_tuple__10);
28116   __Pyx_GIVEREF(__pyx_tuple__10);
28117 
28118   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856
28119  *
28120  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
28121  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
28122  *
28123  *         if ((child.byteorder == c'>' and little_endian) or
28124  */
28125   __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(3, 856, __pyx_L1_error)
28126   __Pyx_GOTREF(__pyx_tuple__11);
28127   __Pyx_GIVEREF(__pyx_tuple__11);
28128 
28129   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880
28130  *             t = child.type_num
28131  *             if end - f < 5:
28132  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
28133  *
28134  *             # Until ticket #99 is fixed, use integers to avoid warnings
28135  */
28136   __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(3, 880, __pyx_L1_error)
28137   __Pyx_GOTREF(__pyx_tuple__12);
28138   __Pyx_GIVEREF(__pyx_tuple__12);
28139 
28140   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038
28141  *         _import_array()
28142  *     except Exception:
28143  *         raise ImportError("numpy.core.multiarray failed to import")             # <<<<<<<<<<<<<<
28144  *
28145  * cdef inline int import_umath() except -1:
28146  */
28147   __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(3, 1038, __pyx_L1_error)
28148   __Pyx_GOTREF(__pyx_tuple__13);
28149   __Pyx_GIVEREF(__pyx_tuple__13);
28150 
28151   /* "../../../.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044
28152  *         _import_umath()
28153  *     except Exception:
28154  *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
28155  *
28156  * cdef inline int import_ufunc() except -1:
28157  */
28158   __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(3, 1044, __pyx_L1_error)
28159   __Pyx_GOTREF(__pyx_tuple__14);
28160   __Pyx_GIVEREF(__pyx_tuple__14);
28161 
28162   /* "View.MemoryView":133
28163  *
28164  *         if not self.ndim:
28165  *             raise ValueError("Empty shape tuple for cython.array")             # <<<<<<<<<<<<<<
28166  *
28167  *         if itemsize <= 0:
28168  */
28169   __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 133, __pyx_L1_error)
28170   __Pyx_GOTREF(__pyx_tuple__15);
28171   __Pyx_GIVEREF(__pyx_tuple__15);
28172 
28173   /* "View.MemoryView":136
28174  *
28175  *         if itemsize <= 0:
28176  *             raise ValueError("itemsize <= 0 for cython.array")             # <<<<<<<<<<<<<<
28177  *
28178  *         if not isinstance(format, bytes):
28179  */
28180   __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 136, __pyx_L1_error)
28181   __Pyx_GOTREF(__pyx_tuple__16);
28182   __Pyx_GIVEREF(__pyx_tuple__16);
28183 
28184   /* "View.MemoryView":148
28185  *
28186  *         if not self._shape:
28187  *             raise MemoryError("unable to allocate shape and strides.")             # <<<<<<<<<<<<<<
28188  *
28189  *
28190  */
28191   __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 148, __pyx_L1_error)
28192   __Pyx_GOTREF(__pyx_tuple__17);
28193   __Pyx_GIVEREF(__pyx_tuple__17);
28194 
28195   /* "View.MemoryView":176
28196  *             self.data = <char *>malloc(self.len)
28197  *             if not self.data:
28198  *                 raise MemoryError("unable to allocate array data.")             # <<<<<<<<<<<<<<
28199  *
28200  *             if self.dtype_is_object:
28201  */
28202   __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 176, __pyx_L1_error)
28203   __Pyx_GOTREF(__pyx_tuple__18);
28204   __Pyx_GIVEREF(__pyx_tuple__18);
28205 
28206   /* "View.MemoryView":192
28207  *             bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
28208  *         if not (flags & bufmode):
28209  *             raise ValueError("Can only create a buffer that is contiguous in memory.")             # <<<<<<<<<<<<<<
28210  *         info.buf = self.data
28211  *         info.len = self.len
28212  */
28213   __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 192, __pyx_L1_error)
28214   __Pyx_GOTREF(__pyx_tuple__19);
28215   __Pyx_GIVEREF(__pyx_tuple__19);
28216 
28217   /* "(tree fragment)":2
28218  * def __reduce_cython__(self):
28219  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28220  * def __setstate_cython__(self, __pyx_state):
28221  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28222  */
28223   __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 2, __pyx_L1_error)
28224   __Pyx_GOTREF(__pyx_tuple__20);
28225   __Pyx_GIVEREF(__pyx_tuple__20);
28226 
28227   /* "(tree fragment)":4
28228  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28229  * def __setstate_cython__(self, __pyx_state):
28230  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28231  */
28232   __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error)
28233   __Pyx_GOTREF(__pyx_tuple__21);
28234   __Pyx_GIVEREF(__pyx_tuple__21);
28235 
28236   /* "View.MemoryView":414
28237  *     def __setitem__(memoryview self, object index, object value):
28238  *         if self.view.readonly:
28239  *             raise TypeError("Cannot assign to read-only memoryview")             # <<<<<<<<<<<<<<
28240  *
28241  *         have_slices, index = _unellipsify(index, self.view.ndim)
28242  */
28243   __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 414, __pyx_L1_error)
28244   __Pyx_GOTREF(__pyx_tuple__22);
28245   __Pyx_GIVEREF(__pyx_tuple__22);
28246 
28247   /* "View.MemoryView":491
28248  *             result = struct.unpack(self.view.format, bytesitem)
28249  *         except struct.error:
28250  *             raise ValueError("Unable to convert item to object")             # <<<<<<<<<<<<<<
28251  *         else:
28252  *             if len(self.view.format) == 1:
28253  */
28254   __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 491, __pyx_L1_error)
28255   __Pyx_GOTREF(__pyx_tuple__23);
28256   __Pyx_GIVEREF(__pyx_tuple__23);
28257 
28258   /* "View.MemoryView":516
28259  *     def __getbuffer__(self, Py_buffer *info, int flags):
28260  *         if flags & PyBUF_WRITABLE and self.view.readonly:
28261  *             raise ValueError("Cannot create writable memory view from read-only memoryview")             # <<<<<<<<<<<<<<
28262  *
28263  *         if flags & PyBUF_ND:
28264  */
28265   __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 516, __pyx_L1_error)
28266   __Pyx_GOTREF(__pyx_tuple__24);
28267   __Pyx_GIVEREF(__pyx_tuple__24);
28268 
28269   /* "View.MemoryView":566
28270  *         if self.view.strides == NULL:
28271  *
28272  *             raise ValueError("Buffer view does not expose strides")             # <<<<<<<<<<<<<<
28273  *
28274  *         return tuple([stride for stride in self.view.strides[:self.view.ndim]])
28275  */
28276   __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 566, __pyx_L1_error)
28277   __Pyx_GOTREF(__pyx_tuple__25);
28278   __Pyx_GIVEREF(__pyx_tuple__25);
28279 
28280   /* "View.MemoryView":573
28281  *     def suboffsets(self):
28282  *         if self.view.suboffsets == NULL:
28283  *             return (-1,) * self.view.ndim             # <<<<<<<<<<<<<<
28284  *
28285  *         return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
28286  */
28287   __pyx_tuple__26 = PyTuple_New(1); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 573, __pyx_L1_error)
28288   __Pyx_GOTREF(__pyx_tuple__26);
28289   __Pyx_INCREF(__pyx_int_neg_1);
28290   __Pyx_GIVEREF(__pyx_int_neg_1);
28291   PyTuple_SET_ITEM(__pyx_tuple__26, 0, __pyx_int_neg_1);
28292   __Pyx_GIVEREF(__pyx_tuple__26);
28293 
28294   /* "(tree fragment)":2
28295  * def __reduce_cython__(self):
28296  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28297  * def __setstate_cython__(self, __pyx_state):
28298  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28299  */
28300   __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 2, __pyx_L1_error)
28301   __Pyx_GOTREF(__pyx_tuple__27);
28302   __Pyx_GIVEREF(__pyx_tuple__27);
28303 
28304   /* "(tree fragment)":4
28305  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28306  * def __setstate_cython__(self, __pyx_state):
28307  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28308  */
28309   __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 4, __pyx_L1_error)
28310   __Pyx_GOTREF(__pyx_tuple__28);
28311   __Pyx_GIVEREF(__pyx_tuple__28);
28312 
28313   /* "View.MemoryView":678
28314  *         if item is Ellipsis:
28315  *             if not seen_ellipsis:
28316  *                 result.extend([slice(None)] * (ndim - len(tup) + 1))             # <<<<<<<<<<<<<<
28317  *                 seen_ellipsis = True
28318  *             else:
28319  */
28320   __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(1, 678, __pyx_L1_error)
28321   __Pyx_GOTREF(__pyx_slice__29);
28322   __Pyx_GIVEREF(__pyx_slice__29);
28323 
28324   /* "View.MemoryView":699
28325  *     for suboffset in suboffsets[:ndim]:
28326  *         if suboffset >= 0:
28327  *             raise ValueError("Indirect dimensions not supported")             # <<<<<<<<<<<<<<
28328  *
28329  *
28330  */
28331   __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 699, __pyx_L1_error)
28332   __Pyx_GOTREF(__pyx_tuple__30);
28333   __Pyx_GIVEREF(__pyx_tuple__30);
28334 
28335   /* "(tree fragment)":2
28336  * def __reduce_cython__(self):
28337  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28338  * def __setstate_cython__(self, __pyx_state):
28339  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28340  */
28341   __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 2, __pyx_L1_error)
28342   __Pyx_GOTREF(__pyx_tuple__31);
28343   __Pyx_GIVEREF(__pyx_tuple__31);
28344 
28345   /* "(tree fragment)":4
28346  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
28347  * def __setstate_cython__(self, __pyx_state):
28348  *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
28349  */
28350   __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 4, __pyx_L1_error)
28351   __Pyx_GOTREF(__pyx_tuple__32);
28352   __Pyx_GIVEREF(__pyx_tuple__32);
28353 
28354   /* "View.MemoryView":286
28355  *         return self.name
28356  *
28357  * cdef generic = Enum("<strided and direct or indirect>")             # <<<<<<<<<<<<<<
28358  * cdef strided = Enum("<strided and direct>") # default
28359  * cdef indirect = Enum("<strided and indirect>")
28360  */
28361   __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 286, __pyx_L1_error)
28362   __Pyx_GOTREF(__pyx_tuple__38);
28363   __Pyx_GIVEREF(__pyx_tuple__38);
28364 
28365   /* "View.MemoryView":287
28366  *
28367  * cdef generic = Enum("<strided and direct or indirect>")
28368  * cdef strided = Enum("<strided and direct>") # default             # <<<<<<<<<<<<<<
28369  * cdef indirect = Enum("<strided and indirect>")
28370  *
28371  */
28372   __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 287, __pyx_L1_error)
28373   __Pyx_GOTREF(__pyx_tuple__39);
28374   __Pyx_GIVEREF(__pyx_tuple__39);
28375 
28376   /* "View.MemoryView":288
28377  * cdef generic = Enum("<strided and direct or indirect>")
28378  * cdef strided = Enum("<strided and direct>") # default
28379  * cdef indirect = Enum("<strided and indirect>")             # <<<<<<<<<<<<<<
28380  *
28381  *
28382  */
28383   __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 288, __pyx_L1_error)
28384   __Pyx_GOTREF(__pyx_tuple__40);
28385   __Pyx_GIVEREF(__pyx_tuple__40);
28386 
28387   /* "View.MemoryView":291
28388  *
28389  *
28390  * cdef contiguous = Enum("<contiguous and direct>")             # <<<<<<<<<<<<<<
28391  * cdef indirect_contiguous = Enum("<contiguous and indirect>")
28392  *
28393  */
28394   __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 291, __pyx_L1_error)
28395   __Pyx_GOTREF(__pyx_tuple__41);
28396   __Pyx_GIVEREF(__pyx_tuple__41);
28397 
28398   /* "View.MemoryView":292
28399  *
28400  * cdef contiguous = Enum("<contiguous and direct>")
28401  * cdef indirect_contiguous = Enum("<contiguous and indirect>")             # <<<<<<<<<<<<<<
28402  *
28403  *
28404  */
28405   __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 292, __pyx_L1_error)
28406   __Pyx_GOTREF(__pyx_tuple__42);
28407   __Pyx_GIVEREF(__pyx_tuple__42);
28408 
28409   /* "(tree fragment)":1
28410  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
28411  *     cdef object __pyx_PickleError
28412  *     cdef object __pyx_result
28413  */
28414   __pyx_tuple__43 = 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__43)) __PYX_ERR(1, 1, __pyx_L1_error)
28415   __Pyx_GOTREF(__pyx_tuple__43);
28416   __Pyx_GIVEREF(__pyx_tuple__43);
28417   __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 1, __pyx_L1_error)
28418   __Pyx_RefNannyFinishContext();
28419   return 0;
28420   __pyx_L1_error:;
28421   __Pyx_RefNannyFinishContext();
28422   return -1;
28423 }
28424 
__Pyx_InitGlobals(void)28425 static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
28426   __pyx_umethod_PyString_Type_encode.type = (PyObject*)&PyString_Type;
28427   if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
28428   __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
28429   __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
28430   __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
28431   __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error)
28432   __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
28433   return 0;
28434   __pyx_L1_error:;
28435   return -1;
28436 }
28437 
28438 static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
28439 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
28440 static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
28441 static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
28442 static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
28443 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
28444 static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
28445 
__Pyx_modinit_global_init_code(void)28446 static int __Pyx_modinit_global_init_code(void) {
28447   __Pyx_RefNannyDeclarations
28448   __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
28449   /*--- Global init code ---*/
28450   generic = Py_None; Py_INCREF(Py_None);
28451   strided = Py_None; Py_INCREF(Py_None);
28452   indirect = Py_None; Py_INCREF(Py_None);
28453   contiguous = Py_None; Py_INCREF(Py_None);
28454   indirect_contiguous = Py_None; Py_INCREF(Py_None);
28455   __Pyx_RefNannyFinishContext();
28456   return 0;
28457 }
28458 
__Pyx_modinit_variable_export_code(void)28459 static int __Pyx_modinit_variable_export_code(void) {
28460   __Pyx_RefNannyDeclarations
28461   __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
28462   /*--- Variable export code ---*/
28463   __Pyx_RefNannyFinishContext();
28464   return 0;
28465 }
28466 
__Pyx_modinit_function_export_code(void)28467 static int __Pyx_modinit_function_export_code(void) {
28468   __Pyx_RefNannyDeclarations
28469   __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
28470   /*--- Function export code ---*/
28471   __Pyx_RefNannyFinishContext();
28472   return 0;
28473 }
28474 
__Pyx_modinit_type_init_code(void)28475 static int __Pyx_modinit_type_init_code(void) {
28476   __Pyx_RefNannyDeclarations
28477   __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
28478   /*--- Type init code ---*/
28479   __pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode = &__pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode;
28480   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode._init_node = (void (*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *, Node *, uint32_t, double *))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_6PyNode__init_node;
28481   if (PyType_Ready(&__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
28482   #if PY_VERSION_HEX < 0x030800B1
28483   __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode.tp_print = 0;
28484   #endif
28485   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode.tp_dictoffset && __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode.tp_getattro == PyObject_GenericGetAttr)) {
28486     __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode.tp_getattro = __Pyx_PyObject_GenericGetAttr;
28487   }
28488   if (__Pyx_SetVtable(__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode.tp_dict, __pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
28489   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyNode, (PyObject *)&__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
28490   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
28491   __pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode = &__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode;
28492   __pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree = &__pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree;
28493   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree._init_tree = (void (*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, KDTree *))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__init_tree;
28494   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree._make_tree = (void (*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, double *, bool))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_tree;
28495   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree._make_leaves = (void (*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__make_leaves;
28496   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree._get_neighbor_ids = (PyArrayObject *(*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, PyArrayObject *))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids;
28497   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree._get_neighbor_ids_3 = (PyArrayObject *(*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, __pyx_t_5numpy_float64_t *))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get_neighbor_ids_3;
28498   __pyx_vtable_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree._get = (struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyNode *(*)(struct __pyx_obj_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree *, PyArrayObject *))__pyx_f_2yt_9utilities_3lib_8cykdtree_6kdtree_8PyKDTree__get;
28499   if (PyType_Ready(&__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree) < 0) __PYX_ERR(0, 146, __pyx_L1_error)
28500   #if PY_VERSION_HEX < 0x030800B1
28501   __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree.tp_print = 0;
28502   #endif
28503   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree.tp_dictoffset && __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree.tp_getattro == PyObject_GenericGetAttr)) {
28504     __pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree.tp_getattro = __Pyx_PyObject_GenericGetAttr;
28505   }
28506   if (__Pyx_SetVtable(__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree.tp_dict, __pyx_vtabptr_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree) < 0) __PYX_ERR(0, 146, __pyx_L1_error)
28507   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyKDTree, (PyObject *)&__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree) < 0) __PYX_ERR(0, 146, __pyx_L1_error)
28508   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree) < 0) __PYX_ERR(0, 146, __pyx_L1_error)
28509   __pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree = &__pyx_type_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree;
28510   __pyx_vtabptr_array = &__pyx_vtable_array;
28511   __pyx_vtable_array.get_memview = (PyObject *(*)(struct __pyx_array_obj *))__pyx_array_get_memview;
28512   if (PyType_Ready(&__pyx_type___pyx_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error)
28513   #if PY_VERSION_HEX < 0x030800B1
28514   __pyx_type___pyx_array.tp_print = 0;
28515   #endif
28516   if (__Pyx_SetVtable(__pyx_type___pyx_array.tp_dict, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error)
28517   if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_array) < 0) __PYX_ERR(1, 105, __pyx_L1_error)
28518   __pyx_array_type = &__pyx_type___pyx_array;
28519   if (PyType_Ready(&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(1, 279, __pyx_L1_error)
28520   #if PY_VERSION_HEX < 0x030800B1
28521   __pyx_type___pyx_MemviewEnum.tp_print = 0;
28522   #endif
28523   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_MemviewEnum.tp_dictoffset && __pyx_type___pyx_MemviewEnum.tp_getattro == PyObject_GenericGetAttr)) {
28524     __pyx_type___pyx_MemviewEnum.tp_getattro = __Pyx_PyObject_GenericGetAttr;
28525   }
28526   if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_MemviewEnum) < 0) __PYX_ERR(1, 279, __pyx_L1_error)
28527   __pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum;
28528   __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview;
28529   __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer;
28530   __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice;
28531   __pyx_vtable_memoryview.setitem_slice_assignment = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_slice_assignment;
28532   __pyx_vtable_memoryview.setitem_slice_assign_scalar = (PyObject *(*)(struct __pyx_memoryview_obj *, struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_setitem_slice_assign_scalar;
28533   __pyx_vtable_memoryview.setitem_indexed = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *, PyObject *))__pyx_memoryview_setitem_indexed;
28534   __pyx_vtable_memoryview.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryview_convert_item_to_object;
28535   __pyx_vtable_memoryview.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryview_assign_item_from_object;
28536   if (PyType_Ready(&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error)
28537   #if PY_VERSION_HEX < 0x030800B1
28538   __pyx_type___pyx_memoryview.tp_print = 0;
28539   #endif
28540   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryview.tp_dictoffset && __pyx_type___pyx_memoryview.tp_getattro == PyObject_GenericGetAttr)) {
28541     __pyx_type___pyx_memoryview.tp_getattro = __Pyx_PyObject_GenericGetAttr;
28542   }
28543   if (__Pyx_SetVtable(__pyx_type___pyx_memoryview.tp_dict, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error)
28544   if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryview) < 0) __PYX_ERR(1, 330, __pyx_L1_error)
28545   __pyx_memoryview_type = &__pyx_type___pyx_memoryview;
28546   __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice;
28547   __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview;
28548   __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object;
28549   __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object;
28550   __pyx_type___pyx_memoryviewslice.tp_base = __pyx_memoryview_type;
28551   if (PyType_Ready(&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 961, __pyx_L1_error)
28552   #if PY_VERSION_HEX < 0x030800B1
28553   __pyx_type___pyx_memoryviewslice.tp_print = 0;
28554   #endif
28555   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type___pyx_memoryviewslice.tp_dictoffset && __pyx_type___pyx_memoryviewslice.tp_getattro == PyObject_GenericGetAttr)) {
28556     __pyx_type___pyx_memoryviewslice.tp_getattro = __Pyx_PyObject_GenericGetAttr;
28557   }
28558   if (__Pyx_SetVtable(__pyx_type___pyx_memoryviewslice.tp_dict, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 961, __pyx_L1_error)
28559   if (__Pyx_setup_reduce((PyObject*)&__pyx_type___pyx_memoryviewslice) < 0) __PYX_ERR(1, 961, __pyx_L1_error)
28560   __pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice;
28561   __Pyx_RefNannyFinishContext();
28562   return 0;
28563   __pyx_L1_error:;
28564   __Pyx_RefNannyFinishContext();
28565   return -1;
28566 }
28567 
__Pyx_modinit_type_import_code(void)28568 static int __Pyx_modinit_type_import_code(void) {
28569   __Pyx_RefNannyDeclarations
28570   PyObject *__pyx_t_1 = NULL;
28571   __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
28572   /*--- Type import code ---*/
28573   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 9, __pyx_L1_error)
28574   __Pyx_GOTREF(__pyx_t_1);
28575   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
28576   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
28577   sizeof(PyTypeObject),
28578   #else
28579   sizeof(PyHeapTypeObject),
28580   #endif
28581   __Pyx_ImportType_CheckSize_Warn);
28582    if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(4, 9, __pyx_L1_error)
28583   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28584   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 8, __pyx_L1_error)
28585   __Pyx_GOTREF(__pyx_t_1);
28586   __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), __Pyx_ImportType_CheckSize_Warn);
28587    if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(5, 8, __pyx_L1_error)
28588   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28589   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 15, __pyx_L1_error)
28590   __Pyx_GOTREF(__pyx_t_1);
28591   __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), __Pyx_ImportType_CheckSize_Warn);
28592    if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(6, 15, __pyx_L1_error)
28593   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28594   __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 206, __pyx_L1_error)
28595   __Pyx_GOTREF(__pyx_t_1);
28596   __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
28597    if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(3, 206, __pyx_L1_error)
28598   __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
28599    if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(3, 229, __pyx_L1_error)
28600   __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
28601    if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(3, 233, __pyx_L1_error)
28602   __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
28603    if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(3, 242, __pyx_L1_error)
28604   __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
28605    if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(3, 918, __pyx_L1_error)
28606   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28607   __Pyx_RefNannyFinishContext();
28608   return 0;
28609   __pyx_L1_error:;
28610   __Pyx_XDECREF(__pyx_t_1);
28611   __Pyx_RefNannyFinishContext();
28612   return -1;
28613 }
28614 
__Pyx_modinit_variable_import_code(void)28615 static int __Pyx_modinit_variable_import_code(void) {
28616   __Pyx_RefNannyDeclarations
28617   __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
28618   /*--- Variable import code ---*/
28619   __Pyx_RefNannyFinishContext();
28620   return 0;
28621 }
28622 
__Pyx_modinit_function_import_code(void)28623 static int __Pyx_modinit_function_import_code(void) {
28624   __Pyx_RefNannyDeclarations
28625   __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
28626   /*--- Function import code ---*/
28627   __Pyx_RefNannyFinishContext();
28628   return 0;
28629 }
28630 
28631 
28632 #if PY_MAJOR_VERSION < 3
28633 #ifdef CYTHON_NO_PYINIT_EXPORT
28634 #define __Pyx_PyMODINIT_FUNC void
28635 #else
28636 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
28637 #endif
28638 #else
28639 #ifdef CYTHON_NO_PYINIT_EXPORT
28640 #define __Pyx_PyMODINIT_FUNC PyObject *
28641 #else
28642 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
28643 #endif
28644 #endif
28645 
28646 
28647 #if PY_MAJOR_VERSION < 3
28648 __Pyx_PyMODINIT_FUNC initkdtree(void) CYTHON_SMALL_CODE; /*proto*/
initkdtree(void)28649 __Pyx_PyMODINIT_FUNC initkdtree(void)
28650 #else
28651 __Pyx_PyMODINIT_FUNC PyInit_kdtree(void) CYTHON_SMALL_CODE; /*proto*/
28652 __Pyx_PyMODINIT_FUNC PyInit_kdtree(void)
28653 #if CYTHON_PEP489_MULTI_PHASE_INIT
28654 {
28655   return PyModuleDef_Init(&__pyx_moduledef);
28656 }
28657 static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
28658     #if PY_VERSION_HEX >= 0x030700A1
28659     static PY_INT64_T main_interpreter_id = -1;
28660     PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
28661     if (main_interpreter_id == -1) {
28662         main_interpreter_id = current_id;
28663         return (unlikely(current_id == -1)) ? -1 : 0;
28664     } else if (unlikely(main_interpreter_id != current_id))
28665     #else
28666     static PyInterpreterState *main_interpreter = NULL;
28667     PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
28668     if (!main_interpreter) {
28669         main_interpreter = current_interpreter;
28670     } else if (unlikely(main_interpreter != current_interpreter))
28671     #endif
28672     {
28673         PyErr_SetString(
28674             PyExc_ImportError,
28675             "Interpreter change detected - this module can only be loaded into one interpreter per process.");
28676         return -1;
28677     }
28678     return 0;
28679 }
28680 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) {
28681     PyObject *value = PyObject_GetAttrString(spec, from_name);
28682     int result = 0;
28683     if (likely(value)) {
28684         if (allow_none || value != Py_None) {
28685             result = PyDict_SetItemString(moddict, to_name, value);
28686         }
28687         Py_DECREF(value);
28688     } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
28689         PyErr_Clear();
28690     } else {
28691         result = -1;
28692     }
28693     return result;
28694 }
28695 static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
28696     PyObject *module = NULL, *moddict, *modname;
28697     if (__Pyx_check_single_interpreter())
28698         return NULL;
28699     if (__pyx_m)
28700         return __Pyx_NewRef(__pyx_m);
28701     modname = PyObject_GetAttrString(spec, "name");
28702     if (unlikely(!modname)) goto bad;
28703     module = PyModule_NewObject(modname);
28704     Py_DECREF(modname);
28705     if (unlikely(!module)) goto bad;
28706     moddict = PyModule_GetDict(module);
28707     if (unlikely(!moddict)) goto bad;
28708     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
28709     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
28710     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
28711     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
28712     return module;
28713 bad:
28714     Py_XDECREF(module);
28715     return NULL;
28716 }
28717 
28718 
28719 static CYTHON_SMALL_CODE int __pyx_pymod_exec_kdtree(PyObject *__pyx_pyinit_module)
28720 #endif
28721 #endif
28722 {
28723   PyObject *__pyx_t_1 = NULL;
28724   PyObject *__pyx_t_2 = NULL;
28725   static PyThread_type_lock __pyx_t_3[8];
28726   __Pyx_RefNannyDeclarations
28727   #if CYTHON_PEP489_MULTI_PHASE_INIT
28728   if (__pyx_m) {
28729     if (__pyx_m == __pyx_pyinit_module) return 0;
28730     PyErr_SetString(PyExc_RuntimeError, "Module 'kdtree' has already been imported. Re-initialisation is not supported.");
28731     return -1;
28732   }
28733   #elif PY_MAJOR_VERSION >= 3
28734   if (__pyx_m) return __Pyx_NewRef(__pyx_m);
28735   #endif
28736   #if CYTHON_REFNANNY
28737 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
28738 if (!__Pyx_RefNanny) {
28739   PyErr_Clear();
28740   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
28741   if (!__Pyx_RefNanny)
28742       Py_FatalError("failed to import 'refnanny' module");
28743 }
28744 #endif
28745   __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_kdtree(void)", 0);
28746   if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28747   #ifdef __Pxy_PyFrame_Initialize_Offsets
28748   __Pxy_PyFrame_Initialize_Offsets();
28749   #endif
28750   __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
28751   __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
28752   __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
28753   #ifdef __Pyx_CyFunction_USED
28754   if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28755   #endif
28756   #ifdef __Pyx_FusedFunction_USED
28757   if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28758   #endif
28759   #ifdef __Pyx_Coroutine_USED
28760   if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28761   #endif
28762   #ifdef __Pyx_Generator_USED
28763   if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28764   #endif
28765   #ifdef __Pyx_AsyncGen_USED
28766   if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28767   #endif
28768   #ifdef __Pyx_StopAsyncIteration_USED
28769   if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28770   #endif
28771   /*--- Library function declarations ---*/
28772   /*--- Threads initialization code ---*/
28773   #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
28774   #ifdef WITH_THREAD /* Python build with threading support? */
28775   PyEval_InitThreads();
28776   #endif
28777   #endif
28778   /*--- Module creation code ---*/
28779   #if CYTHON_PEP489_MULTI_PHASE_INIT
28780   __pyx_m = __pyx_pyinit_module;
28781   Py_INCREF(__pyx_m);
28782   #else
28783   #if PY_MAJOR_VERSION < 3
28784   __pyx_m = Py_InitModule4("kdtree", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
28785   #else
28786   __pyx_m = PyModule_Create(&__pyx_moduledef);
28787   #endif
28788   if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
28789   #endif
28790   __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
28791   Py_INCREF(__pyx_d);
28792   __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
28793   Py_INCREF(__pyx_b);
28794   __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
28795   Py_INCREF(__pyx_cython_runtime);
28796   if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
28797   /*--- Initialize various global constants etc. ---*/
28798   if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28799   #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
28800   if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28801   #endif
28802   if (__pyx_module_is_main_yt__utilities__lib__cykdtree__kdtree) {
28803     if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28804   }
28805   #if PY_MAJOR_VERSION >= 3
28806   {
28807     PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
28808     if (!PyDict_GetItemString(modules, "yt.utilities.lib.cykdtree.kdtree")) {
28809       if (unlikely(PyDict_SetItemString(modules, "yt.utilities.lib.cykdtree.kdtree", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
28810     }
28811   }
28812   #endif
28813   /*--- Builtin init code ---*/
28814   if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error;
28815   /*--- Constants init code ---*/
28816   if (__Pyx_InitCachedConstants() < 0) goto __pyx_L1_error;
28817   /*--- Global type/function init code ---*/
28818   (void)__Pyx_modinit_global_init_code();
28819   (void)__Pyx_modinit_variable_export_code();
28820   (void)__Pyx_modinit_function_export_code();
28821   if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error;
28822   if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error;
28823   (void)__Pyx_modinit_variable_import_code();
28824   (void)__Pyx_modinit_function_import_code();
28825   /*--- Execution code ---*/
28826   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
28827   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28828   #endif
28829 
28830   /* "yt/utilities/lib/cykdtree/kdtree.pyx":8
28831  * # distutils: extra_compile_args = CPP03_FLAG
28832  * import cython
28833  * import numpy as np             # <<<<<<<<<<<<<<
28834  *
28835  * cimport numpy as np
28836  */
28837   __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
28838   __Pyx_GOTREF(__pyx_t_1);
28839   if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
28840   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28841 
28842   /* "yt/utilities/lib/cykdtree/kdtree.pyx":461
28843  *
28844  *     @classmethod
28845  *     def from_file(cls, str filename, data_version=None):             # <<<<<<<<<<<<<<
28846  *         r"""Create a PyKDTree from a binary file created by ``PyKDTree.save()``
28847  *
28848  */
28849   __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree, __pyx_n_s_from_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error)
28850   __Pyx_GOTREF(__pyx_t_1);
28851 
28852   /* "yt/utilities/lib/cykdtree/kdtree.pyx":460
28853  *             del outputter
28854  *
28855  *     @classmethod             # <<<<<<<<<<<<<<
28856  *     def from_file(cls, str filename, data_version=None):
28857  *         r"""Create a PyKDTree from a binary file created by ``PyKDTree.save()``
28858  */
28859   __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
28860   __Pyx_GOTREF(__pyx_t_2);
28861   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28862   if (PyDict_SetItem((PyObject *)__pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree->tp_dict, __pyx_n_s_from_file, __pyx_t_2) < 0) __PYX_ERR(0, 461, __pyx_L1_error)
28863   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28864   PyType_Modified(__pyx_ptype_2yt_9utilities_3lib_8cykdtree_6kdtree_PyKDTree);
28865 
28866   /* "yt/utilities/lib/cykdtree/kdtree.pyx":1
28867  * # distutils: libraries = STD_LIBS             # <<<<<<<<<<<<<<
28868  * # Note that we used to include the empty c_kdtree.cpp file, but that seems to break cythonize.
28869  * # distutils: sources = yt/utilities/lib/cykdtree/c_utils.cpp
28870  */
28871   __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
28872   __Pyx_GOTREF(__pyx_t_2);
28873   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
28874   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28875 
28876   /* "View.MemoryView":209
28877  *         info.obj = self
28878  *
28879  *     __pyx_getbuffer = capsule(<void *> &__pyx_array_getbuffer, "getbuffer(obj, view, flags)")             # <<<<<<<<<<<<<<
28880  *
28881  *     def __dealloc__(array self):
28882  */
28883   __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_array_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 209, __pyx_L1_error)
28884   __Pyx_GOTREF(__pyx_t_2);
28885   if (PyDict_SetItem((PyObject *)__pyx_array_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(1, 209, __pyx_L1_error)
28886   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28887   PyType_Modified(__pyx_array_type);
28888 
28889   /* "View.MemoryView":286
28890  *         return self.name
28891  *
28892  * cdef generic = Enum("<strided and direct or indirect>")             # <<<<<<<<<<<<<<
28893  * cdef strided = Enum("<strided and direct>") # default
28894  * cdef indirect = Enum("<strided and indirect>")
28895  */
28896   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 286, __pyx_L1_error)
28897   __Pyx_GOTREF(__pyx_t_2);
28898   __Pyx_XGOTREF(generic);
28899   __Pyx_DECREF_SET(generic, __pyx_t_2);
28900   __Pyx_GIVEREF(__pyx_t_2);
28901   __pyx_t_2 = 0;
28902 
28903   /* "View.MemoryView":287
28904  *
28905  * cdef generic = Enum("<strided and direct or indirect>")
28906  * cdef strided = Enum("<strided and direct>") # default             # <<<<<<<<<<<<<<
28907  * cdef indirect = Enum("<strided and indirect>")
28908  *
28909  */
28910   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __pyx_L1_error)
28911   __Pyx_GOTREF(__pyx_t_2);
28912   __Pyx_XGOTREF(strided);
28913   __Pyx_DECREF_SET(strided, __pyx_t_2);
28914   __Pyx_GIVEREF(__pyx_t_2);
28915   __pyx_t_2 = 0;
28916 
28917   /* "View.MemoryView":288
28918  * cdef generic = Enum("<strided and direct or indirect>")
28919  * cdef strided = Enum("<strided and direct>") # default
28920  * cdef indirect = Enum("<strided and indirect>")             # <<<<<<<<<<<<<<
28921  *
28922  *
28923  */
28924   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 288, __pyx_L1_error)
28925   __Pyx_GOTREF(__pyx_t_2);
28926   __Pyx_XGOTREF(indirect);
28927   __Pyx_DECREF_SET(indirect, __pyx_t_2);
28928   __Pyx_GIVEREF(__pyx_t_2);
28929   __pyx_t_2 = 0;
28930 
28931   /* "View.MemoryView":291
28932  *
28933  *
28934  * cdef contiguous = Enum("<contiguous and direct>")             # <<<<<<<<<<<<<<
28935  * cdef indirect_contiguous = Enum("<contiguous and indirect>")
28936  *
28937  */
28938   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 291, __pyx_L1_error)
28939   __Pyx_GOTREF(__pyx_t_2);
28940   __Pyx_XGOTREF(contiguous);
28941   __Pyx_DECREF_SET(contiguous, __pyx_t_2);
28942   __Pyx_GIVEREF(__pyx_t_2);
28943   __pyx_t_2 = 0;
28944 
28945   /* "View.MemoryView":292
28946  *
28947  * cdef contiguous = Enum("<contiguous and direct>")
28948  * cdef indirect_contiguous = Enum("<contiguous and indirect>")             # <<<<<<<<<<<<<<
28949  *
28950  *
28951  */
28952   __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 292, __pyx_L1_error)
28953   __Pyx_GOTREF(__pyx_t_2);
28954   __Pyx_XGOTREF(indirect_contiguous);
28955   __Pyx_DECREF_SET(indirect_contiguous, __pyx_t_2);
28956   __Pyx_GIVEREF(__pyx_t_2);
28957   __pyx_t_2 = 0;
28958 
28959   /* "View.MemoryView":316
28960  *
28961  * DEF THREAD_LOCKS_PREALLOCATED = 8
28962  * cdef int __pyx_memoryview_thread_locks_used = 0             # <<<<<<<<<<<<<<
28963  * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [
28964  *     PyThread_allocate_lock(),
28965  */
28966   __pyx_memoryview_thread_locks_used = 0;
28967 
28968   /* "View.MemoryView":317
28969  * DEF THREAD_LOCKS_PREALLOCATED = 8
28970  * cdef int __pyx_memoryview_thread_locks_used = 0
28971  * cdef PyThread_type_lock[THREAD_LOCKS_PREALLOCATED] __pyx_memoryview_thread_locks = [             # <<<<<<<<<<<<<<
28972  *     PyThread_allocate_lock(),
28973  *     PyThread_allocate_lock(),
28974  */
28975   __pyx_t_3[0] = PyThread_allocate_lock();
28976   __pyx_t_3[1] = PyThread_allocate_lock();
28977   __pyx_t_3[2] = PyThread_allocate_lock();
28978   __pyx_t_3[3] = PyThread_allocate_lock();
28979   __pyx_t_3[4] = PyThread_allocate_lock();
28980   __pyx_t_3[5] = PyThread_allocate_lock();
28981   __pyx_t_3[6] = PyThread_allocate_lock();
28982   __pyx_t_3[7] = PyThread_allocate_lock();
28983   memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_3, sizeof(__pyx_memoryview_thread_locks[0]) * (8));
28984 
28985   /* "View.MemoryView":545
28986  *         info.obj = self
28987  *
28988  *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")             # <<<<<<<<<<<<<<
28989  *
28990  *
28991  */
28992   __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 545, __pyx_L1_error)
28993   __Pyx_GOTREF(__pyx_t_2);
28994   if (PyDict_SetItem((PyObject *)__pyx_memoryview_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(1, 545, __pyx_L1_error)
28995   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28996   PyType_Modified(__pyx_memoryview_type);
28997 
28998   /* "View.MemoryView":991
28999  *         return self.from_object
29000  *
29001  *     __pyx_getbuffer = capsule(<void *> &__pyx_memoryview_getbuffer, "getbuffer(obj, view, flags)")             # <<<<<<<<<<<<<<
29002  *
29003  *
29004  */
29005   __pyx_t_2 = __pyx_capsule_create(((void *)(&__pyx_memoryview_getbuffer)), ((char *)"getbuffer(obj, view, flags)")); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 991, __pyx_L1_error)
29006   __Pyx_GOTREF(__pyx_t_2);
29007   if (PyDict_SetItem((PyObject *)__pyx_memoryviewslice_type->tp_dict, __pyx_n_s_pyx_getbuffer, __pyx_t_2) < 0) __PYX_ERR(1, 991, __pyx_L1_error)
29008   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29009   PyType_Modified(__pyx_memoryviewslice_type);
29010 
29011   /* "(tree fragment)":1
29012  * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
29013  *     cdef object __pyx_PickleError
29014  *     cdef object __pyx_result
29015  */
29016   __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_n_s_View_MemoryView); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
29017   __Pyx_GOTREF(__pyx_t_2);
29018   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Enum, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
29019   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
29020 
29021   /* "BufferFormatFromTypeInfo":1460
29022  *
29023  * @cname('__pyx_format_from_typeinfo')
29024  * cdef bytes format_from_typeinfo(__Pyx_TypeInfo *type):             # <<<<<<<<<<<<<<
29025  *     cdef __Pyx_StructField *field
29026  *     cdef __pyx_typeinfo_string fmt
29027  */
29028 
29029   /*--- Wrapped vars code ---*/
29030 
29031   goto __pyx_L0;
29032   __pyx_L1_error:;
29033   __Pyx_XDECREF(__pyx_t_1);
29034   __Pyx_XDECREF(__pyx_t_2);
29035   if (__pyx_m) {
29036     if (__pyx_d) {
29037       __Pyx_AddTraceback("init yt.utilities.lib.cykdtree.kdtree", __pyx_clineno, __pyx_lineno, __pyx_filename);
29038     }
29039     Py_CLEAR(__pyx_m);
29040   } else if (!PyErr_Occurred()) {
29041     PyErr_SetString(PyExc_ImportError, "init yt.utilities.lib.cykdtree.kdtree");
29042   }
29043   __pyx_L0:;
29044   __Pyx_RefNannyFinishContext();
29045   #if CYTHON_PEP489_MULTI_PHASE_INIT
29046   return (__pyx_m != NULL) ? 0 : -1;
29047   #elif PY_MAJOR_VERSION >= 3
29048   return __pyx_m;
29049   #else
29050   return;
29051   #endif
29052 }
29053 
29054 /* --- Runtime support code --- */
29055 /* Refnanny */
29056 #if CYTHON_REFNANNY
__Pyx_RefNannyImportAPI(const char * modname)29057 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
29058     PyObject *m = NULL, *p = NULL;
29059     void *r = NULL;
29060     m = PyImport_ImportModule(modname);
29061     if (!m) goto end;
29062     p = PyObject_GetAttrString(m, "RefNannyAPI");
29063     if (!p) goto end;
29064     r = PyLong_AsVoidPtr(p);
29065 end:
29066     Py_XDECREF(p);
29067     Py_XDECREF(m);
29068     return (__Pyx_RefNannyAPIStruct *)r;
29069 }
29070 #endif
29071 
29072 /* PyObjectGetAttrStr */
29073 #if CYTHON_USE_TYPE_SLOTS
__Pyx_PyObject_GetAttrStr(PyObject * obj,PyObject * attr_name)29074 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
29075     PyTypeObject* tp = Py_TYPE(obj);
29076     if (likely(tp->tp_getattro))
29077         return tp->tp_getattro(obj, attr_name);
29078 #if PY_MAJOR_VERSION < 3
29079     if (likely(tp->tp_getattr))
29080         return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
29081 #endif
29082     return PyObject_GetAttr(obj, attr_name);
29083 }
29084 #endif
29085 
29086 /* GetBuiltinName */
__Pyx_GetBuiltinName(PyObject * name)29087 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
29088     PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
29089     if (unlikely(!result)) {
29090         PyErr_Format(PyExc_NameError,
29091 #if PY_MAJOR_VERSION >= 3
29092             "name '%U' is not defined", name);
29093 #else
29094             "name '%.200s' is not defined", PyString_AS_STRING(name));
29095 #endif
29096     }
29097     return result;
29098 }
29099 
29100 /* SetItemInt */
__Pyx_SetItemInt_Generic(PyObject * o,PyObject * j,PyObject * v)29101 static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
29102     int r;
29103     if (!j) return -1;
29104     r = PyObject_SetItem(o, j, v);
29105     Py_DECREF(j);
29106     return r;
29107 }
__Pyx_SetItemInt_Fast(PyObject * o,Py_ssize_t i,PyObject * v,int is_list,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)29108 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
29109                                                CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
29110 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
29111     if (is_list || PyList_CheckExact(o)) {
29112         Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
29113         if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
29114             PyObject* old = PyList_GET_ITEM(o, n);
29115             Py_INCREF(v);
29116             PyList_SET_ITEM(o, n, v);
29117             Py_DECREF(old);
29118             return 1;
29119         }
29120     } else {
29121         PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
29122         if (likely(m && m->sq_ass_item)) {
29123             if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
29124                 Py_ssize_t l = m->sq_length(o);
29125                 if (likely(l >= 0)) {
29126                     i += l;
29127                 } else {
29128                     if (!PyErr_ExceptionMatches(PyExc_OverflowError))
29129                         return -1;
29130                     PyErr_Clear();
29131                 }
29132             }
29133             return m->sq_ass_item(o, i, v);
29134         }
29135     }
29136 #else
29137 #if CYTHON_COMPILING_IN_PYPY
29138     if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
29139 #else
29140     if (is_list || PySequence_Check(o))
29141 #endif
29142     {
29143         return PySequence_SetItem(o, i, v);
29144     }
29145 #endif
29146     return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
29147 }
29148 
29149 /* PyErrFetchRestore */
29150 #if CYTHON_FAST_THREAD_STATE
__Pyx_ErrRestoreInState(PyThreadState * tstate,PyObject * type,PyObject * value,PyObject * tb)29151 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
29152     PyObject *tmp_type, *tmp_value, *tmp_tb;
29153     tmp_type = tstate->curexc_type;
29154     tmp_value = tstate->curexc_value;
29155     tmp_tb = tstate->curexc_traceback;
29156     tstate->curexc_type = type;
29157     tstate->curexc_value = value;
29158     tstate->curexc_traceback = tb;
29159     Py_XDECREF(tmp_type);
29160     Py_XDECREF(tmp_value);
29161     Py_XDECREF(tmp_tb);
29162 }
__Pyx_ErrFetchInState(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)29163 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
29164     *type = tstate->curexc_type;
29165     *value = tstate->curexc_value;
29166     *tb = tstate->curexc_traceback;
29167     tstate->curexc_type = 0;
29168     tstate->curexc_value = 0;
29169     tstate->curexc_traceback = 0;
29170 }
29171 #endif
29172 
29173 /* 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)29174 static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
29175                                   CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
29176                                   int full_traceback, CYTHON_UNUSED int nogil) {
29177     PyObject *old_exc, *old_val, *old_tb;
29178     PyObject *ctx;
29179     __Pyx_PyThreadState_declare
29180 #ifdef WITH_THREAD
29181     PyGILState_STATE state;
29182     if (nogil)
29183         state = PyGILState_Ensure();
29184 #ifdef _MSC_VER
29185     else state = (PyGILState_STATE)-1;
29186 #endif
29187 #endif
29188     __Pyx_PyThreadState_assign
29189     __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
29190     if (full_traceback) {
29191         Py_XINCREF(old_exc);
29192         Py_XINCREF(old_val);
29193         Py_XINCREF(old_tb);
29194         __Pyx_ErrRestore(old_exc, old_val, old_tb);
29195         PyErr_PrintEx(1);
29196     }
29197     #if PY_MAJOR_VERSION < 3
29198     ctx = PyString_FromString(name);
29199     #else
29200     ctx = PyUnicode_FromString(name);
29201     #endif
29202     __Pyx_ErrRestore(old_exc, old_val, old_tb);
29203     if (!ctx) {
29204         PyErr_WriteUnraisable(Py_None);
29205     } else {
29206         PyErr_WriteUnraisable(ctx);
29207         Py_DECREF(ctx);
29208     }
29209 #ifdef WITH_THREAD
29210     if (nogil)
29211         PyGILState_Release(state);
29212 #endif
29213 }
29214 
29215 /* RaiseArgTupleInvalid */
__Pyx_RaiseArgtupleInvalid(const char * func_name,int exact,Py_ssize_t num_min,Py_ssize_t num_max,Py_ssize_t num_found)29216 static void __Pyx_RaiseArgtupleInvalid(
29217     const char* func_name,
29218     int exact,
29219     Py_ssize_t num_min,
29220     Py_ssize_t num_max,
29221     Py_ssize_t num_found)
29222 {
29223     Py_ssize_t num_expected;
29224     const char *more_or_less;
29225     if (num_found < num_min) {
29226         num_expected = num_min;
29227         more_or_less = "at least";
29228     } else {
29229         num_expected = num_max;
29230         more_or_less = "at most";
29231     }
29232     if (exact) {
29233         more_or_less = "exactly";
29234     }
29235     PyErr_Format(PyExc_TypeError,
29236                  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
29237                  func_name, more_or_less, num_expected,
29238                  (num_expected == 1) ? "" : "s", num_found);
29239 }
29240 
29241 /* KeywordStringCheck */
__Pyx_CheckKeywordStrings(PyObject * kwdict,const char * function_name,int kw_allowed)29242 static int __Pyx_CheckKeywordStrings(
29243     PyObject *kwdict,
29244     const char* function_name,
29245     int kw_allowed)
29246 {
29247     PyObject* key = 0;
29248     Py_ssize_t pos = 0;
29249 #if CYTHON_COMPILING_IN_PYPY
29250     if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
29251         goto invalid_keyword;
29252     return 1;
29253 #else
29254     while (PyDict_Next(kwdict, &pos, &key, 0)) {
29255         #if PY_MAJOR_VERSION < 3
29256         if (unlikely(!PyString_Check(key)))
29257         #endif
29258             if (unlikely(!PyUnicode_Check(key)))
29259                 goto invalid_keyword_type;
29260     }
29261     if ((!kw_allowed) && unlikely(key))
29262         goto invalid_keyword;
29263     return 1;
29264 invalid_keyword_type:
29265     PyErr_Format(PyExc_TypeError,
29266         "%.200s() keywords must be strings", function_name);
29267     return 0;
29268 #endif
29269 invalid_keyword:
29270     PyErr_Format(PyExc_TypeError,
29271     #if PY_MAJOR_VERSION < 3
29272         "%.200s() got an unexpected keyword argument '%.200s'",
29273         function_name, PyString_AsString(key));
29274     #else
29275         "%s() got an unexpected keyword argument '%U'",
29276         function_name, key);
29277     #endif
29278     return 0;
29279 }
29280 
29281 /* PyCFunctionFastCall */
29282 #if CYTHON_FAST_PYCCALL
__Pyx_PyCFunction_FastCall(PyObject * func_obj,PyObject ** args,Py_ssize_t nargs)29283 static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
29284     PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
29285     PyCFunction meth = PyCFunction_GET_FUNCTION(func);
29286     PyObject *self = PyCFunction_GET_SELF(func);
29287     int flags = PyCFunction_GET_FLAGS(func);
29288     assert(PyCFunction_Check(func));
29289     assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
29290     assert(nargs >= 0);
29291     assert(nargs == 0 || args != NULL);
29292     /* _PyCFunction_FastCallDict() must not be called with an exception set,
29293        because it may clear it (directly or indirectly) and so the
29294        caller loses its exception */
29295     assert(!PyErr_Occurred());
29296     if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
29297         return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
29298     } else {
29299         return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
29300     }
29301 }
29302 #endif
29303 
29304 /* PyFunctionFastCall */
29305 #if CYTHON_FAST_PYCALL
__Pyx_PyFunction_FastCallNoKw(PyCodeObject * co,PyObject ** args,Py_ssize_t na,PyObject * globals)29306 static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
29307                                                PyObject *globals) {
29308     PyFrameObject *f;
29309     PyThreadState *tstate = __Pyx_PyThreadState_Current;
29310     PyObject **fastlocals;
29311     Py_ssize_t i;
29312     PyObject *result;
29313     assert(globals != NULL);
29314     /* XXX Perhaps we should create a specialized
29315        PyFrame_New() that doesn't take locals, but does
29316        take builtins without sanity checking them.
29317        */
29318     assert(tstate != NULL);
29319     f = PyFrame_New(tstate, co, globals, NULL);
29320     if (f == NULL) {
29321         return NULL;
29322     }
29323     fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
29324     for (i = 0; i < na; i++) {
29325         Py_INCREF(*args);
29326         fastlocals[i] = *args++;
29327     }
29328     result = PyEval_EvalFrameEx(f,0);
29329     ++tstate->recursion_depth;
29330     Py_DECREF(f);
29331     --tstate->recursion_depth;
29332     return result;
29333 }
29334 #if 1 || PY_VERSION_HEX < 0x030600B1
__Pyx_PyFunction_FastCallDict(PyObject * func,PyObject ** args,Py_ssize_t nargs,PyObject * kwargs)29335 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
29336     PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
29337     PyObject *globals = PyFunction_GET_GLOBALS(func);
29338     PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
29339     PyObject *closure;
29340 #if PY_MAJOR_VERSION >= 3
29341     PyObject *kwdefs;
29342 #endif
29343     PyObject *kwtuple, **k;
29344     PyObject **d;
29345     Py_ssize_t nd;
29346     Py_ssize_t nk;
29347     PyObject *result;
29348     assert(kwargs == NULL || PyDict_Check(kwargs));
29349     nk = kwargs ? PyDict_Size(kwargs) : 0;
29350     if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
29351         return NULL;
29352     }
29353     if (
29354 #if PY_MAJOR_VERSION >= 3
29355             co->co_kwonlyargcount == 0 &&
29356 #endif
29357             likely(kwargs == NULL || nk == 0) &&
29358             co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
29359         if (argdefs == NULL && co->co_argcount == nargs) {
29360             result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
29361             goto done;
29362         }
29363         else if (nargs == 0 && argdefs != NULL
29364                  && co->co_argcount == Py_SIZE(argdefs)) {
29365             /* function called with no arguments, but all parameters have
29366                a default value: use default values as arguments .*/
29367             args = &PyTuple_GET_ITEM(argdefs, 0);
29368             result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
29369             goto done;
29370         }
29371     }
29372     if (kwargs != NULL) {
29373         Py_ssize_t pos, i;
29374         kwtuple = PyTuple_New(2 * nk);
29375         if (kwtuple == NULL) {
29376             result = NULL;
29377             goto done;
29378         }
29379         k = &PyTuple_GET_ITEM(kwtuple, 0);
29380         pos = i = 0;
29381         while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
29382             Py_INCREF(k[i]);
29383             Py_INCREF(k[i+1]);
29384             i += 2;
29385         }
29386         nk = i / 2;
29387     }
29388     else {
29389         kwtuple = NULL;
29390         k = NULL;
29391     }
29392     closure = PyFunction_GET_CLOSURE(func);
29393 #if PY_MAJOR_VERSION >= 3
29394     kwdefs = PyFunction_GET_KW_DEFAULTS(func);
29395 #endif
29396     if (argdefs != NULL) {
29397         d = &PyTuple_GET_ITEM(argdefs, 0);
29398         nd = Py_SIZE(argdefs);
29399     }
29400     else {
29401         d = NULL;
29402         nd = 0;
29403     }
29404 #if PY_MAJOR_VERSION >= 3
29405     result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
29406                                args, (int)nargs,
29407                                k, (int)nk,
29408                                d, (int)nd, kwdefs, closure);
29409 #else
29410     result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
29411                                args, (int)nargs,
29412                                k, (int)nk,
29413                                d, (int)nd, closure);
29414 #endif
29415     Py_XDECREF(kwtuple);
29416 done:
29417     Py_LeaveRecursiveCall();
29418     return result;
29419 }
29420 #endif
29421 #endif
29422 
29423 /* PyObjectCall */
29424 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyObject_Call(PyObject * func,PyObject * arg,PyObject * kw)29425 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
29426     PyObject *result;
29427     ternaryfunc call = func->ob_type->tp_call;
29428     if (unlikely(!call))
29429         return PyObject_Call(func, arg, kw);
29430     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
29431         return NULL;
29432     result = (*call)(func, arg, kw);
29433     Py_LeaveRecursiveCall();
29434     if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
29435         PyErr_SetString(
29436             PyExc_SystemError,
29437             "NULL result without error in PyObject_Call");
29438     }
29439     return result;
29440 }
29441 #endif
29442 
29443 /* PyObjectCallMethO */
29444 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyObject_CallMethO(PyObject * func,PyObject * arg)29445 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
29446     PyObject *self, *result;
29447     PyCFunction cfunc;
29448     cfunc = PyCFunction_GET_FUNCTION(func);
29449     self = PyCFunction_GET_SELF(func);
29450     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
29451         return NULL;
29452     result = cfunc(self, arg);
29453     Py_LeaveRecursiveCall();
29454     if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
29455         PyErr_SetString(
29456             PyExc_SystemError,
29457             "NULL result without error in PyObject_Call");
29458     }
29459     return result;
29460 }
29461 #endif
29462 
29463 /* PyObjectCallOneArg */
29464 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx__PyObject_CallOneArg(PyObject * func,PyObject * arg)29465 static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
29466     PyObject *result;
29467     PyObject *args = PyTuple_New(1);
29468     if (unlikely(!args)) return NULL;
29469     Py_INCREF(arg);
29470     PyTuple_SET_ITEM(args, 0, arg);
29471     result = __Pyx_PyObject_Call(func, args, NULL);
29472     Py_DECREF(args);
29473     return result;
29474 }
__Pyx_PyObject_CallOneArg(PyObject * func,PyObject * arg)29475 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
29476 #if CYTHON_FAST_PYCALL
29477     if (PyFunction_Check(func)) {
29478         return __Pyx_PyFunction_FastCall(func, &arg, 1);
29479     }
29480 #endif
29481     if (likely(PyCFunction_Check(func))) {
29482         if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
29483             return __Pyx_PyObject_CallMethO(func, arg);
29484 #if CYTHON_FAST_PYCCALL
29485         } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
29486             return __Pyx_PyCFunction_FastCall(func, &arg, 1);
29487 #endif
29488         }
29489     }
29490     return __Pyx__PyObject_CallOneArg(func, arg);
29491 }
29492 #else
__Pyx_PyObject_CallOneArg(PyObject * func,PyObject * arg)29493 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
29494     PyObject *result;
29495     PyObject *args = PyTuple_Pack(1, arg);
29496     if (unlikely(!args)) return NULL;
29497     result = __Pyx_PyObject_Call(func, args, NULL);
29498     Py_DECREF(args);
29499     return result;
29500 }
29501 #endif
29502 
29503 /* PyDictVersioning */
29504 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
__Pyx_get_tp_dict_version(PyObject * obj)29505 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
29506     PyObject *dict = Py_TYPE(obj)->tp_dict;
29507     return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
29508 }
__Pyx_get_object_dict_version(PyObject * obj)29509 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
29510     PyObject **dictptr = NULL;
29511     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
29512     if (offset) {
29513 #if CYTHON_COMPILING_IN_CPYTHON
29514         dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
29515 #else
29516         dictptr = _PyObject_GetDictPtr(obj);
29517 #endif
29518     }
29519     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
29520 }
__Pyx_object_dict_version_matches(PyObject * obj,PY_UINT64_T tp_dict_version,PY_UINT64_T obj_dict_version)29521 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
29522     PyObject *dict = Py_TYPE(obj)->tp_dict;
29523     if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
29524         return 0;
29525     return obj_dict_version == __Pyx_get_object_dict_version(obj);
29526 }
29527 #endif
29528 
29529 /* GetModuleGlobalName */
29530 #if CYTHON_USE_DICT_VERSIONS
__Pyx__GetModuleGlobalName(PyObject * name,PY_UINT64_T * dict_version,PyObject ** dict_cached_value)29531 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
29532 #else
29533 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
29534 #endif
29535 {
29536     PyObject *result;
29537 #if !CYTHON_AVOID_BORROWED_REFS
29538 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
29539     result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
29540     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
29541     if (likely(result)) {
29542         return __Pyx_NewRef(result);
29543     } else if (unlikely(PyErr_Occurred())) {
29544         return NULL;
29545     }
29546 #else
29547     result = PyDict_GetItem(__pyx_d, name);
29548     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
29549     if (likely(result)) {
29550         return __Pyx_NewRef(result);
29551     }
29552 #endif
29553 #else
29554     result = PyObject_GetItem(__pyx_d, name);
29555     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
29556     if (likely(result)) {
29557         return __Pyx_NewRef(result);
29558     }
29559     PyErr_Clear();
29560 #endif
29561     return __Pyx_GetBuiltinName(name);
29562 }
29563 
29564 /* PyObjectCall2Args */
__Pyx_PyObject_Call2Args(PyObject * function,PyObject * arg1,PyObject * arg2)29565 static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
29566     PyObject *args, *result = NULL;
29567     #if CYTHON_FAST_PYCALL
29568     if (PyFunction_Check(function)) {
29569         PyObject *args[2] = {arg1, arg2};
29570         return __Pyx_PyFunction_FastCall(function, args, 2);
29571     }
29572     #endif
29573     #if CYTHON_FAST_PYCCALL
29574     if (__Pyx_PyFastCFunction_Check(function)) {
29575         PyObject *args[2] = {arg1, arg2};
29576         return __Pyx_PyCFunction_FastCall(function, args, 2);
29577     }
29578     #endif
29579     args = PyTuple_New(2);
29580     if (unlikely(!args)) goto done;
29581     Py_INCREF(arg1);
29582     PyTuple_SET_ITEM(args, 0, arg1);
29583     Py_INCREF(arg2);
29584     PyTuple_SET_ITEM(args, 1, arg2);
29585     Py_INCREF(function);
29586     result = __Pyx_PyObject_Call(function, args, NULL);
29587     Py_DECREF(args);
29588     Py_DECREF(function);
29589 done:
29590     return result;
29591 }
29592 
29593 /* MemviewSliceInit */
29594 static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj * memview,int ndim,__Pyx_memviewslice * memviewslice,int memview_is_new_reference)29595 __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
29596                         int ndim,
29597                         __Pyx_memviewslice *memviewslice,
29598                         int memview_is_new_reference)
29599 {
29600     __Pyx_RefNannyDeclarations
29601     int i, retval=-1;
29602     Py_buffer *buf = &memview->view;
29603     __Pyx_RefNannySetupContext("init_memviewslice", 0);
29604     if (memviewslice->memview || memviewslice->data) {
29605         PyErr_SetString(PyExc_ValueError,
29606             "memviewslice is already initialized!");
29607         goto fail;
29608     }
29609     if (buf->strides) {
29610         for (i = 0; i < ndim; i++) {
29611             memviewslice->strides[i] = buf->strides[i];
29612         }
29613     } else {
29614         Py_ssize_t stride = buf->itemsize;
29615         for (i = ndim - 1; i >= 0; i--) {
29616             memviewslice->strides[i] = stride;
29617             stride *= buf->shape[i];
29618         }
29619     }
29620     for (i = 0; i < ndim; i++) {
29621         memviewslice->shape[i]   = buf->shape[i];
29622         if (buf->suboffsets) {
29623             memviewslice->suboffsets[i] = buf->suboffsets[i];
29624         } else {
29625             memviewslice->suboffsets[i] = -1;
29626         }
29627     }
29628     memviewslice->memview = memview;
29629     memviewslice->data = (char *)buf->buf;
29630     if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) {
29631         Py_INCREF(memview);
29632     }
29633     retval = 0;
29634     goto no_fail;
29635 fail:
29636     memviewslice->memview = 0;
29637     memviewslice->data = 0;
29638     retval = -1;
29639 no_fail:
29640     __Pyx_RefNannyFinishContext();
29641     return retval;
29642 }
29643 #ifndef Py_NO_RETURN
29644 #define Py_NO_RETURN
29645 #endif
__pyx_fatalerror(const char * fmt,...)29646 static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN {
29647     va_list vargs;
29648     char msg[200];
29649 #ifdef HAVE_STDARG_PROTOTYPES
29650     va_start(vargs, fmt);
29651 #else
29652     va_start(vargs);
29653 #endif
29654     vsnprintf(msg, 200, fmt, vargs);
29655     va_end(vargs);
29656     Py_FatalError(msg);
29657 }
29658 static CYTHON_INLINE int
__pyx_add_acquisition_count_locked(__pyx_atomic_int * acquisition_count,PyThread_type_lock lock)29659 __pyx_add_acquisition_count_locked(__pyx_atomic_int *acquisition_count,
29660                                    PyThread_type_lock lock)
29661 {
29662     int result;
29663     PyThread_acquire_lock(lock, 1);
29664     result = (*acquisition_count)++;
29665     PyThread_release_lock(lock);
29666     return result;
29667 }
29668 static CYTHON_INLINE int
__pyx_sub_acquisition_count_locked(__pyx_atomic_int * acquisition_count,PyThread_type_lock lock)29669 __pyx_sub_acquisition_count_locked(__pyx_atomic_int *acquisition_count,
29670                                    PyThread_type_lock lock)
29671 {
29672     int result;
29673     PyThread_acquire_lock(lock, 1);
29674     result = (*acquisition_count)--;
29675     PyThread_release_lock(lock);
29676     return result;
29677 }
29678 static CYTHON_INLINE void
__Pyx_INC_MEMVIEW(__Pyx_memviewslice * memslice,int have_gil,int lineno)29679 __Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno)
29680 {
29681     int first_time;
29682     struct __pyx_memoryview_obj *memview = memslice->memview;
29683     if (!memview || (PyObject *) memview == Py_None)
29684         return;
29685     if (__pyx_get_slice_count(memview) < 0)
29686         __pyx_fatalerror("Acquisition count is %d (line %d)",
29687                          __pyx_get_slice_count(memview), lineno);
29688     first_time = __pyx_add_acquisition_count(memview) == 0;
29689     if (first_time) {
29690         if (have_gil) {
29691             Py_INCREF((PyObject *) memview);
29692         } else {
29693             PyGILState_STATE _gilstate = PyGILState_Ensure();
29694             Py_INCREF((PyObject *) memview);
29695             PyGILState_Release(_gilstate);
29696         }
29697     }
29698 }
__Pyx_XDEC_MEMVIEW(__Pyx_memviewslice * memslice,int have_gil,int lineno)29699 static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
29700                                              int have_gil, int lineno) {
29701     int last_time;
29702     struct __pyx_memoryview_obj *memview = memslice->memview;
29703     if (!memview ) {
29704         return;
29705     } else if ((PyObject *) memview == Py_None) {
29706         memslice->memview = NULL;
29707         return;
29708     }
29709     if (__pyx_get_slice_count(memview) <= 0)
29710         __pyx_fatalerror("Acquisition count is %d (line %d)",
29711                          __pyx_get_slice_count(memview), lineno);
29712     last_time = __pyx_sub_acquisition_count(memview) == 1;
29713     memslice->data = NULL;
29714     if (last_time) {
29715         if (have_gil) {
29716             Py_CLEAR(memslice->memview);
29717         } else {
29718             PyGILState_STATE _gilstate = PyGILState_Ensure();
29719             Py_CLEAR(memslice->memview);
29720             PyGILState_Release(_gilstate);
29721         }
29722     } else {
29723         memslice->memview = NULL;
29724     }
29725 }
29726 
29727 /* ArgTypeTest */
__Pyx__ArgTypeTest(PyObject * obj,PyTypeObject * type,const char * name,int exact)29728 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
29729 {
29730     if (unlikely(!type)) {
29731         PyErr_SetString(PyExc_SystemError, "Missing type object");
29732         return 0;
29733     }
29734     else if (exact) {
29735         #if PY_MAJOR_VERSION == 2
29736         if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
29737         #endif
29738     }
29739     else {
29740         if (likely(__Pyx_TypeCheck(obj, type))) return 1;
29741     }
29742     PyErr_Format(PyExc_TypeError,
29743         "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
29744         name, type->tp_name, Py_TYPE(obj)->tp_name);
29745     return 0;
29746 }
29747 
29748 /* GetItemInt */
__Pyx_GetItemInt_Generic(PyObject * o,PyObject * j)29749 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
29750     PyObject *r;
29751     if (!j) return NULL;
29752     r = PyObject_GetItem(o, j);
29753     Py_DECREF(j);
29754     return r;
29755 }
__Pyx_GetItemInt_List_Fast(PyObject * o,Py_ssize_t i,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)29756 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
29757                                                               CYTHON_NCP_UNUSED int wraparound,
29758                                                               CYTHON_NCP_UNUSED int boundscheck) {
29759 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29760     Py_ssize_t wrapped_i = i;
29761     if (wraparound & unlikely(i < 0)) {
29762         wrapped_i += PyList_GET_SIZE(o);
29763     }
29764     if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
29765         PyObject *r = PyList_GET_ITEM(o, wrapped_i);
29766         Py_INCREF(r);
29767         return r;
29768     }
29769     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
29770 #else
29771     return PySequence_GetItem(o, i);
29772 #endif
29773 }
__Pyx_GetItemInt_Tuple_Fast(PyObject * o,Py_ssize_t i,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)29774 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
29775                                                               CYTHON_NCP_UNUSED int wraparound,
29776                                                               CYTHON_NCP_UNUSED int boundscheck) {
29777 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
29778     Py_ssize_t wrapped_i = i;
29779     if (wraparound & unlikely(i < 0)) {
29780         wrapped_i += PyTuple_GET_SIZE(o);
29781     }
29782     if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
29783         PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
29784         Py_INCREF(r);
29785         return r;
29786     }
29787     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
29788 #else
29789     return PySequence_GetItem(o, i);
29790 #endif
29791 }
__Pyx_GetItemInt_Fast(PyObject * o,Py_ssize_t i,int is_list,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)29792 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
29793                                                      CYTHON_NCP_UNUSED int wraparound,
29794                                                      CYTHON_NCP_UNUSED int boundscheck) {
29795 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
29796     if (is_list || PyList_CheckExact(o)) {
29797         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
29798         if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
29799             PyObject *r = PyList_GET_ITEM(o, n);
29800             Py_INCREF(r);
29801             return r;
29802         }
29803     }
29804     else if (PyTuple_CheckExact(o)) {
29805         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
29806         if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
29807             PyObject *r = PyTuple_GET_ITEM(o, n);
29808             Py_INCREF(r);
29809             return r;
29810         }
29811     } else {
29812         PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
29813         if (likely(m && m->sq_item)) {
29814             if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
29815                 Py_ssize_t l = m->sq_length(o);
29816                 if (likely(l >= 0)) {
29817                     i += l;
29818                 } else {
29819                     if (!PyErr_ExceptionMatches(PyExc_OverflowError))
29820                         return NULL;
29821                     PyErr_Clear();
29822                 }
29823             }
29824             return m->sq_item(o, i);
29825         }
29826     }
29827 #else
29828     if (is_list || PySequence_Check(o)) {
29829         return PySequence_GetItem(o, i);
29830     }
29831 #endif
29832     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
29833 }
29834 
29835 /* RaiseException */
29836 #if PY_MAJOR_VERSION < 3
__Pyx_Raise(PyObject * type,PyObject * value,PyObject * tb,CYTHON_UNUSED PyObject * cause)29837 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
29838                         CYTHON_UNUSED PyObject *cause) {
29839     __Pyx_PyThreadState_declare
29840     Py_XINCREF(type);
29841     if (!value || value == Py_None)
29842         value = NULL;
29843     else
29844         Py_INCREF(value);
29845     if (!tb || tb == Py_None)
29846         tb = NULL;
29847     else {
29848         Py_INCREF(tb);
29849         if (!PyTraceBack_Check(tb)) {
29850             PyErr_SetString(PyExc_TypeError,
29851                 "raise: arg 3 must be a traceback or None");
29852             goto raise_error;
29853         }
29854     }
29855     if (PyType_Check(type)) {
29856 #if CYTHON_COMPILING_IN_PYPY
29857         if (!value) {
29858             Py_INCREF(Py_None);
29859             value = Py_None;
29860         }
29861 #endif
29862         PyErr_NormalizeException(&type, &value, &tb);
29863     } else {
29864         if (value) {
29865             PyErr_SetString(PyExc_TypeError,
29866                 "instance exception may not have a separate value");
29867             goto raise_error;
29868         }
29869         value = type;
29870         type = (PyObject*) Py_TYPE(type);
29871         Py_INCREF(type);
29872         if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
29873             PyErr_SetString(PyExc_TypeError,
29874                 "raise: exception class must be a subclass of BaseException");
29875             goto raise_error;
29876         }
29877     }
29878     __Pyx_PyThreadState_assign
29879     __Pyx_ErrRestore(type, value, tb);
29880     return;
29881 raise_error:
29882     Py_XDECREF(value);
29883     Py_XDECREF(type);
29884     Py_XDECREF(tb);
29885     return;
29886 }
29887 #else
__Pyx_Raise(PyObject * type,PyObject * value,PyObject * tb,PyObject * cause)29888 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
29889     PyObject* owned_instance = NULL;
29890     if (tb == Py_None) {
29891         tb = 0;
29892     } else if (tb && !PyTraceBack_Check(tb)) {
29893         PyErr_SetString(PyExc_TypeError,
29894             "raise: arg 3 must be a traceback or None");
29895         goto bad;
29896     }
29897     if (value == Py_None)
29898         value = 0;
29899     if (PyExceptionInstance_Check(type)) {
29900         if (value) {
29901             PyErr_SetString(PyExc_TypeError,
29902                 "instance exception may not have a separate value");
29903             goto bad;
29904         }
29905         value = type;
29906         type = (PyObject*) Py_TYPE(value);
29907     } else if (PyExceptionClass_Check(type)) {
29908         PyObject *instance_class = NULL;
29909         if (value && PyExceptionInstance_Check(value)) {
29910             instance_class = (PyObject*) Py_TYPE(value);
29911             if (instance_class != type) {
29912                 int is_subclass = PyObject_IsSubclass(instance_class, type);
29913                 if (!is_subclass) {
29914                     instance_class = NULL;
29915                 } else if (unlikely(is_subclass == -1)) {
29916                     goto bad;
29917                 } else {
29918                     type = instance_class;
29919                 }
29920             }
29921         }
29922         if (!instance_class) {
29923             PyObject *args;
29924             if (!value)
29925                 args = PyTuple_New(0);
29926             else if (PyTuple_Check(value)) {
29927                 Py_INCREF(value);
29928                 args = value;
29929             } else
29930                 args = PyTuple_Pack(1, value);
29931             if (!args)
29932                 goto bad;
29933             owned_instance = PyObject_Call(type, args, NULL);
29934             Py_DECREF(args);
29935             if (!owned_instance)
29936                 goto bad;
29937             value = owned_instance;
29938             if (!PyExceptionInstance_Check(value)) {
29939                 PyErr_Format(PyExc_TypeError,
29940                              "calling %R should have returned an instance of "
29941                              "BaseException, not %R",
29942                              type, Py_TYPE(value));
29943                 goto bad;
29944             }
29945         }
29946     } else {
29947         PyErr_SetString(PyExc_TypeError,
29948             "raise: exception class must be a subclass of BaseException");
29949         goto bad;
29950     }
29951     if (cause) {
29952         PyObject *fixed_cause;
29953         if (cause == Py_None) {
29954             fixed_cause = NULL;
29955         } else if (PyExceptionClass_Check(cause)) {
29956             fixed_cause = PyObject_CallObject(cause, NULL);
29957             if (fixed_cause == NULL)
29958                 goto bad;
29959         } else if (PyExceptionInstance_Check(cause)) {
29960             fixed_cause = cause;
29961             Py_INCREF(fixed_cause);
29962         } else {
29963             PyErr_SetString(PyExc_TypeError,
29964                             "exception causes must derive from "
29965                             "BaseException");
29966             goto bad;
29967         }
29968         PyException_SetCause(value, fixed_cause);
29969     }
29970     PyErr_SetObject(type, value);
29971     if (tb) {
29972 #if CYTHON_COMPILING_IN_PYPY
29973         PyObject *tmp_type, *tmp_value, *tmp_tb;
29974         PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
29975         Py_INCREF(tb);
29976         PyErr_Restore(tmp_type, tmp_value, tb);
29977         Py_XDECREF(tmp_tb);
29978 #else
29979         PyThreadState *tstate = __Pyx_PyThreadState_Current;
29980         PyObject* tmp_tb = tstate->curexc_traceback;
29981         if (tb != tmp_tb) {
29982             Py_INCREF(tb);
29983             tstate->curexc_traceback = tb;
29984             Py_XDECREF(tmp_tb);
29985         }
29986 #endif
29987     }
29988 bad:
29989     Py_XDECREF(owned_instance);
29990     return;
29991 }
29992 #endif
29993 
29994 /* RaiseDoubleKeywords */
__Pyx_RaiseDoubleKeywordsError(const char * func_name,PyObject * kw_name)29995 static void __Pyx_RaiseDoubleKeywordsError(
29996     const char* func_name,
29997     PyObject* kw_name)
29998 {
29999     PyErr_Format(PyExc_TypeError,
30000         #if PY_MAJOR_VERSION >= 3
30001         "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
30002         #else
30003         "%s() got multiple values for keyword argument '%s'", func_name,
30004         PyString_AsString(kw_name));
30005         #endif
30006 }
30007 
30008 /* ParseKeywords */
__Pyx_ParseOptionalKeywords(PyObject * kwds,PyObject ** argnames[],PyObject * kwds2,PyObject * values[],Py_ssize_t num_pos_args,const char * function_name)30009 static int __Pyx_ParseOptionalKeywords(
30010     PyObject *kwds,
30011     PyObject **argnames[],
30012     PyObject *kwds2,
30013     PyObject *values[],
30014     Py_ssize_t num_pos_args,
30015     const char* function_name)
30016 {
30017     PyObject *key = 0, *value = 0;
30018     Py_ssize_t pos = 0;
30019     PyObject*** name;
30020     PyObject*** first_kw_arg = argnames + num_pos_args;
30021     while (PyDict_Next(kwds, &pos, &key, &value)) {
30022         name = first_kw_arg;
30023         while (*name && (**name != key)) name++;
30024         if (*name) {
30025             values[name-argnames] = value;
30026             continue;
30027         }
30028         name = first_kw_arg;
30029         #if PY_MAJOR_VERSION < 3
30030         if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
30031             while (*name) {
30032                 if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
30033                         && _PyString_Eq(**name, key)) {
30034                     values[name-argnames] = value;
30035                     break;
30036                 }
30037                 name++;
30038             }
30039             if (*name) continue;
30040             else {
30041                 PyObject*** argname = argnames;
30042                 while (argname != first_kw_arg) {
30043                     if ((**argname == key) || (
30044                             (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
30045                              && _PyString_Eq(**argname, key))) {
30046                         goto arg_passed_twice;
30047                     }
30048                     argname++;
30049                 }
30050             }
30051         } else
30052         #endif
30053         if (likely(PyUnicode_Check(key))) {
30054             while (*name) {
30055                 int cmp = (**name == key) ? 0 :
30056                 #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
30057                     (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
30058                 #endif
30059                     PyUnicode_Compare(**name, key);
30060                 if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
30061                 if (cmp == 0) {
30062                     values[name-argnames] = value;
30063                     break;
30064                 }
30065                 name++;
30066             }
30067             if (*name) continue;
30068             else {
30069                 PyObject*** argname = argnames;
30070                 while (argname != first_kw_arg) {
30071                     int cmp = (**argname == key) ? 0 :
30072                     #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
30073                         (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
30074                     #endif
30075                         PyUnicode_Compare(**argname, key);
30076                     if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
30077                     if (cmp == 0) goto arg_passed_twice;
30078                     argname++;
30079                 }
30080             }
30081         } else
30082             goto invalid_keyword_type;
30083         if (kwds2) {
30084             if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
30085         } else {
30086             goto invalid_keyword;
30087         }
30088     }
30089     return 0;
30090 arg_passed_twice:
30091     __Pyx_RaiseDoubleKeywordsError(function_name, key);
30092     goto bad;
30093 invalid_keyword_type:
30094     PyErr_Format(PyExc_TypeError,
30095         "%.200s() keywords must be strings", function_name);
30096     goto bad;
30097 invalid_keyword:
30098     PyErr_Format(PyExc_TypeError,
30099     #if PY_MAJOR_VERSION < 3
30100         "%.200s() got an unexpected keyword argument '%.200s'",
30101         function_name, PyString_AsString(key));
30102     #else
30103         "%s() got an unexpected keyword argument '%U'",
30104         function_name, key);
30105     #endif
30106 bad:
30107     return -1;
30108 }
30109 
30110 /* IsLittleEndian */
__Pyx_Is_Little_Endian(void)30111 static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
30112 {
30113   union {
30114     uint32_t u32;
30115     uint8_t u8[4];
30116   } S;
30117   S.u32 = 0x01020304;
30118   return S.u8[0] == 4;
30119 }
30120 
30121 /* BufferFormatCheck */
__Pyx_BufFmt_Init(__Pyx_BufFmt_Context * ctx,__Pyx_BufFmt_StackElem * stack,__Pyx_TypeInfo * type)30122 static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
30123                               __Pyx_BufFmt_StackElem* stack,
30124                               __Pyx_TypeInfo* type) {
30125   stack[0].field = &ctx->root;
30126   stack[0].parent_offset = 0;
30127   ctx->root.type = type;
30128   ctx->root.name = "buffer dtype";
30129   ctx->root.offset = 0;
30130   ctx->head = stack;
30131   ctx->head->field = &ctx->root;
30132   ctx->fmt_offset = 0;
30133   ctx->head->parent_offset = 0;
30134   ctx->new_packmode = '@';
30135   ctx->enc_packmode = '@';
30136   ctx->new_count = 1;
30137   ctx->enc_count = 0;
30138   ctx->enc_type = 0;
30139   ctx->is_complex = 0;
30140   ctx->is_valid_array = 0;
30141   ctx->struct_alignment = 0;
30142   while (type->typegroup == 'S') {
30143     ++ctx->head;
30144     ctx->head->field = type->fields;
30145     ctx->head->parent_offset = 0;
30146     type = type->fields->type;
30147   }
30148 }
__Pyx_BufFmt_ParseNumber(const char ** ts)30149 static int __Pyx_BufFmt_ParseNumber(const char** ts) {
30150     int count;
30151     const char* t = *ts;
30152     if (*t < '0' || *t > '9') {
30153       return -1;
30154     } else {
30155         count = *t++ - '0';
30156         while (*t >= '0' && *t <= '9') {
30157             count *= 10;
30158             count += *t++ - '0';
30159         }
30160     }
30161     *ts = t;
30162     return count;
30163 }
__Pyx_BufFmt_ExpectNumber(const char ** ts)30164 static int __Pyx_BufFmt_ExpectNumber(const char **ts) {
30165     int number = __Pyx_BufFmt_ParseNumber(ts);
30166     if (number == -1)
30167         PyErr_Format(PyExc_ValueError,\
30168                      "Does not understand character buffer dtype format string ('%c')", **ts);
30169     return number;
30170 }
__Pyx_BufFmt_RaiseUnexpectedChar(char ch)30171 static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
30172   PyErr_Format(PyExc_ValueError,
30173                "Unexpected format string character: '%c'", ch);
30174 }
__Pyx_BufFmt_DescribeTypeChar(char ch,int is_complex)30175 static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) {
30176   switch (ch) {
30177     case 'c': return "'char'";
30178     case 'b': return "'signed char'";
30179     case 'B': return "'unsigned char'";
30180     case 'h': return "'short'";
30181     case 'H': return "'unsigned short'";
30182     case 'i': return "'int'";
30183     case 'I': return "'unsigned int'";
30184     case 'l': return "'long'";
30185     case 'L': return "'unsigned long'";
30186     case 'q': return "'long long'";
30187     case 'Q': return "'unsigned long long'";
30188     case 'f': return (is_complex ? "'complex float'" : "'float'");
30189     case 'd': return (is_complex ? "'complex double'" : "'double'");
30190     case 'g': return (is_complex ? "'complex long double'" : "'long double'");
30191     case 'T': return "a struct";
30192     case 'O': return "Python object";
30193     case 'P': return "a pointer";
30194     case 's': case 'p': return "a string";
30195     case 0: return "end";
30196     default: return "unparseable format string";
30197   }
30198 }
__Pyx_BufFmt_TypeCharToStandardSize(char ch,int is_complex)30199 static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) {
30200   switch (ch) {
30201     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
30202     case 'h': case 'H': return 2;
30203     case 'i': case 'I': case 'l': case 'L': return 4;
30204     case 'q': case 'Q': return 8;
30205     case 'f': return (is_complex ? 8 : 4);
30206     case 'd': return (is_complex ? 16 : 8);
30207     case 'g': {
30208       PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g')..");
30209       return 0;
30210     }
30211     case 'O': case 'P': return sizeof(void*);
30212     default:
30213       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
30214       return 0;
30215     }
30216 }
__Pyx_BufFmt_TypeCharToNativeSize(char ch,int is_complex)30217 static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
30218   switch (ch) {
30219     case 'c': case 'b': case 'B': case 's': case 'p': return 1;
30220     case 'h': case 'H': return sizeof(short);
30221     case 'i': case 'I': return sizeof(int);
30222     case 'l': case 'L': return sizeof(long);
30223     #ifdef HAVE_LONG_LONG
30224     case 'q': case 'Q': return sizeof(PY_LONG_LONG);
30225     #endif
30226     case 'f': return sizeof(float) * (is_complex ? 2 : 1);
30227     case 'd': return sizeof(double) * (is_complex ? 2 : 1);
30228     case 'g': return sizeof(long double) * (is_complex ? 2 : 1);
30229     case 'O': case 'P': return sizeof(void*);
30230     default: {
30231       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
30232       return 0;
30233     }
30234   }
30235 }
30236 typedef struct { char c; short x; } __Pyx_st_short;
30237 typedef struct { char c; int x; } __Pyx_st_int;
30238 typedef struct { char c; long x; } __Pyx_st_long;
30239 typedef struct { char c; float x; } __Pyx_st_float;
30240 typedef struct { char c; double x; } __Pyx_st_double;
30241 typedef struct { char c; long double x; } __Pyx_st_longdouble;
30242 typedef struct { char c; void *x; } __Pyx_st_void_p;
30243 #ifdef HAVE_LONG_LONG
30244 typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
30245 #endif
__Pyx_BufFmt_TypeCharToAlignment(char ch,CYTHON_UNUSED int is_complex)30246 static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) {
30247   switch (ch) {
30248     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
30249     case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short);
30250     case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int);
30251     case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long);
30252 #ifdef HAVE_LONG_LONG
30253     case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG);
30254 #endif
30255     case 'f': return sizeof(__Pyx_st_float) - sizeof(float);
30256     case 'd': return sizeof(__Pyx_st_double) - sizeof(double);
30257     case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double);
30258     case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*);
30259     default:
30260       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
30261       return 0;
30262     }
30263 }
30264 /* These are for computing the padding at the end of the struct to align
30265    on the first member of the struct. This will probably the same as above,
30266    but we don't have any guarantees.
30267  */
30268 typedef struct { short x; char c; } __Pyx_pad_short;
30269 typedef struct { int x; char c; } __Pyx_pad_int;
30270 typedef struct { long x; char c; } __Pyx_pad_long;
30271 typedef struct { float x; char c; } __Pyx_pad_float;
30272 typedef struct { double x; char c; } __Pyx_pad_double;
30273 typedef struct { long double x; char c; } __Pyx_pad_longdouble;
30274 typedef struct { void *x; char c; } __Pyx_pad_void_p;
30275 #ifdef HAVE_LONG_LONG
30276 typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong;
30277 #endif
__Pyx_BufFmt_TypeCharToPadding(char ch,CYTHON_UNUSED int is_complex)30278 static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) {
30279   switch (ch) {
30280     case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1;
30281     case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short);
30282     case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int);
30283     case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long);
30284 #ifdef HAVE_LONG_LONG
30285     case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG);
30286 #endif
30287     case 'f': return sizeof(__Pyx_pad_float) - sizeof(float);
30288     case 'd': return sizeof(__Pyx_pad_double) - sizeof(double);
30289     case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double);
30290     case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*);
30291     default:
30292       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
30293       return 0;
30294     }
30295 }
__Pyx_BufFmt_TypeCharToGroup(char ch,int is_complex)30296 static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
30297   switch (ch) {
30298     case 'c':
30299         return 'H';
30300     case 'b': case 'h': case 'i':
30301     case 'l': case 'q': case 's': case 'p':
30302         return 'I';
30303     case 'B': case 'H': case 'I': case 'L': case 'Q':
30304         return 'U';
30305     case 'f': case 'd': case 'g':
30306         return (is_complex ? 'C' : 'R');
30307     case 'O':
30308         return 'O';
30309     case 'P':
30310         return 'P';
30311     default: {
30312       __Pyx_BufFmt_RaiseUnexpectedChar(ch);
30313       return 0;
30314     }
30315   }
30316 }
__Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context * ctx)30317 static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
30318   if (ctx->head == NULL || ctx->head->field == &ctx->root) {
30319     const char* expected;
30320     const char* quote;
30321     if (ctx->head == NULL) {
30322       expected = "end";
30323       quote = "";
30324     } else {
30325       expected = ctx->head->field->type->name;
30326       quote = "'";
30327     }
30328     PyErr_Format(PyExc_ValueError,
30329                  "Buffer dtype mismatch, expected %s%s%s but got %s",
30330                  quote, expected, quote,
30331                  __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex));
30332   } else {
30333     __Pyx_StructField* field = ctx->head->field;
30334     __Pyx_StructField* parent = (ctx->head - 1)->field;
30335     PyErr_Format(PyExc_ValueError,
30336                  "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'",
30337                  field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex),
30338                  parent->type->name, field->name);
30339   }
30340 }
__Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context * ctx)30341 static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
30342   char group;
30343   size_t size, offset, arraysize = 1;
30344   if (ctx->enc_type == 0) return 0;
30345   if (ctx->head->field->type->arraysize[0]) {
30346     int i, ndim = 0;
30347     if (ctx->enc_type == 's' || ctx->enc_type == 'p') {
30348         ctx->is_valid_array = ctx->head->field->type->ndim == 1;
30349         ndim = 1;
30350         if (ctx->enc_count != ctx->head->field->type->arraysize[0]) {
30351             PyErr_Format(PyExc_ValueError,
30352                          "Expected a dimension of size %zu, got %zu",
30353                          ctx->head->field->type->arraysize[0], ctx->enc_count);
30354             return -1;
30355         }
30356     }
30357     if (!ctx->is_valid_array) {
30358       PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d",
30359                    ctx->head->field->type->ndim, ndim);
30360       return -1;
30361     }
30362     for (i = 0; i < ctx->head->field->type->ndim; i++) {
30363       arraysize *= ctx->head->field->type->arraysize[i];
30364     }
30365     ctx->is_valid_array = 0;
30366     ctx->enc_count = 1;
30367   }
30368   group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex);
30369   do {
30370     __Pyx_StructField* field = ctx->head->field;
30371     __Pyx_TypeInfo* type = field->type;
30372     if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') {
30373       size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex);
30374     } else {
30375       size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex);
30376     }
30377     if (ctx->enc_packmode == '@') {
30378       size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex);
30379       size_t align_mod_offset;
30380       if (align_at == 0) return -1;
30381       align_mod_offset = ctx->fmt_offset % align_at;
30382       if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset;
30383       if (ctx->struct_alignment == 0)
30384           ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type,
30385                                                                  ctx->is_complex);
30386     }
30387     if (type->size != size || type->typegroup != group) {
30388       if (type->typegroup == 'C' && type->fields != NULL) {
30389         size_t parent_offset = ctx->head->parent_offset + field->offset;
30390         ++ctx->head;
30391         ctx->head->field = type->fields;
30392         ctx->head->parent_offset = parent_offset;
30393         continue;
30394       }
30395       if ((type->typegroup == 'H' || group == 'H') && type->size == size) {
30396       } else {
30397           __Pyx_BufFmt_RaiseExpected(ctx);
30398           return -1;
30399       }
30400     }
30401     offset = ctx->head->parent_offset + field->offset;
30402     if (ctx->fmt_offset != offset) {
30403       PyErr_Format(PyExc_ValueError,
30404                    "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected",
30405                    (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset);
30406       return -1;
30407     }
30408     ctx->fmt_offset += size;
30409     if (arraysize)
30410       ctx->fmt_offset += (arraysize - 1) * size;
30411     --ctx->enc_count;
30412     while (1) {
30413       if (field == &ctx->root) {
30414         ctx->head = NULL;
30415         if (ctx->enc_count != 0) {
30416           __Pyx_BufFmt_RaiseExpected(ctx);
30417           return -1;
30418         }
30419         break;
30420       }
30421       ctx->head->field = ++field;
30422       if (field->type == NULL) {
30423         --ctx->head;
30424         field = ctx->head->field;
30425         continue;
30426       } else if (field->type->typegroup == 'S') {
30427         size_t parent_offset = ctx->head->parent_offset + field->offset;
30428         if (field->type->fields->type == NULL) continue;
30429         field = field->type->fields;
30430         ++ctx->head;
30431         ctx->head->field = field;
30432         ctx->head->parent_offset = parent_offset;
30433         break;
30434       } else {
30435         break;
30436       }
30437     }
30438   } while (ctx->enc_count);
30439   ctx->enc_type = 0;
30440   ctx->is_complex = 0;
30441   return 0;
30442 }
30443 static PyObject *
__pyx_buffmt_parse_array(__Pyx_BufFmt_Context * ctx,const char ** tsp)30444 __pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp)
30445 {
30446     const char *ts = *tsp;
30447     int i = 0, number;
30448     int ndim = ctx->head->field->type->ndim;
30449 ;
30450     ++ts;
30451     if (ctx->new_count != 1) {
30452         PyErr_SetString(PyExc_ValueError,
30453                         "Cannot handle repeated arrays in format string");
30454         return NULL;
30455     }
30456     if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
30457     while (*ts && *ts != ')') {
30458         switch (*ts) {
30459             case ' ': case '\f': case '\r': case '\n': case '\t': case '\v':  continue;
30460             default:  break;
30461         }
30462         number = __Pyx_BufFmt_ExpectNumber(&ts);
30463         if (number == -1) return NULL;
30464         if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i])
30465             return PyErr_Format(PyExc_ValueError,
30466                         "Expected a dimension of size %zu, got %d",
30467                         ctx->head->field->type->arraysize[i], number);
30468         if (*ts != ',' && *ts != ')')
30469             return PyErr_Format(PyExc_ValueError,
30470                                 "Expected a comma in format string, got '%c'", *ts);
30471         if (*ts == ',') ts++;
30472         i++;
30473     }
30474     if (i != ndim)
30475         return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d",
30476                             ctx->head->field->type->ndim, i);
30477     if (!*ts) {
30478         PyErr_SetString(PyExc_ValueError,
30479                         "Unexpected end of format string, expected ')'");
30480         return NULL;
30481     }
30482     ctx->is_valid_array = 1;
30483     ctx->new_count = 1;
30484     *tsp = ++ts;
30485     return Py_None;
30486 }
__Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context * ctx,const char * ts)30487 static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) {
30488   int got_Z = 0;
30489   while (1) {
30490     switch(*ts) {
30491       case 0:
30492         if (ctx->enc_type != 0 && ctx->head == NULL) {
30493           __Pyx_BufFmt_RaiseExpected(ctx);
30494           return NULL;
30495         }
30496         if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
30497         if (ctx->head != NULL) {
30498           __Pyx_BufFmt_RaiseExpected(ctx);
30499           return NULL;
30500         }
30501         return ts;
30502       case ' ':
30503       case '\r':
30504       case '\n':
30505         ++ts;
30506         break;
30507       case '<':
30508         if (!__Pyx_Is_Little_Endian()) {
30509           PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler");
30510           return NULL;
30511         }
30512         ctx->new_packmode = '=';
30513         ++ts;
30514         break;
30515       case '>':
30516       case '!':
30517         if (__Pyx_Is_Little_Endian()) {
30518           PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler");
30519           return NULL;
30520         }
30521         ctx->new_packmode = '=';
30522         ++ts;
30523         break;
30524       case '=':
30525       case '@':
30526       case '^':
30527         ctx->new_packmode = *ts++;
30528         break;
30529       case 'T':
30530         {
30531           const char* ts_after_sub;
30532           size_t i, struct_count = ctx->new_count;
30533           size_t struct_alignment = ctx->struct_alignment;
30534           ctx->new_count = 1;
30535           ++ts;
30536           if (*ts != '{') {
30537             PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'");
30538             return NULL;
30539           }
30540           if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
30541           ctx->enc_type = 0;
30542           ctx->enc_count = 0;
30543           ctx->struct_alignment = 0;
30544           ++ts;
30545           ts_after_sub = ts;
30546           for (i = 0; i != struct_count; ++i) {
30547             ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts);
30548             if (!ts_after_sub) return NULL;
30549           }
30550           ts = ts_after_sub;
30551           if (struct_alignment) ctx->struct_alignment = struct_alignment;
30552         }
30553         break;
30554       case '}':
30555         {
30556           size_t alignment = ctx->struct_alignment;
30557           ++ts;
30558           if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
30559           ctx->enc_type = 0;
30560           if (alignment && ctx->fmt_offset % alignment) {
30561             ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment);
30562           }
30563         }
30564         return ts;
30565       case 'x':
30566         if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
30567         ctx->fmt_offset += ctx->new_count;
30568         ctx->new_count = 1;
30569         ctx->enc_count = 0;
30570         ctx->enc_type = 0;
30571         ctx->enc_packmode = ctx->new_packmode;
30572         ++ts;
30573         break;
30574       case 'Z':
30575         got_Z = 1;
30576         ++ts;
30577         if (*ts != 'f' && *ts != 'd' && *ts != 'g') {
30578           __Pyx_BufFmt_RaiseUnexpectedChar('Z');
30579           return NULL;
30580         }
30581         CYTHON_FALLTHROUGH;
30582       case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I':
30583       case 'l': case 'L': case 'q': case 'Q':
30584       case 'f': case 'd': case 'g':
30585       case 'O': case 'p':
30586         if (ctx->enc_type == *ts && got_Z == ctx->is_complex &&
30587             ctx->enc_packmode == ctx->new_packmode) {
30588           ctx->enc_count += ctx->new_count;
30589           ctx->new_count = 1;
30590           got_Z = 0;
30591           ++ts;
30592           break;
30593         }
30594         CYTHON_FALLTHROUGH;
30595       case 's':
30596         if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
30597         ctx->enc_count = ctx->new_count;
30598         ctx->enc_packmode = ctx->new_packmode;
30599         ctx->enc_type = *ts;
30600         ctx->is_complex = got_Z;
30601         ++ts;
30602         ctx->new_count = 1;
30603         got_Z = 0;
30604         break;
30605       case ':':
30606         ++ts;
30607         while(*ts != ':') ++ts;
30608         ++ts;
30609         break;
30610       case '(':
30611         if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL;
30612         break;
30613       default:
30614         {
30615           int number = __Pyx_BufFmt_ExpectNumber(&ts);
30616           if (number == -1) return NULL;
30617           ctx->new_count = (size_t)number;
30618         }
30619     }
30620   }
30621 }
30622 
30623 /* BufferGetAndValidate */
__Pyx_SafeReleaseBuffer(Py_buffer * info)30624   static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
30625   if (unlikely(info->buf == NULL)) return;
30626   if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL;
30627   __Pyx_ReleaseBuffer(info);
30628 }
__Pyx_ZeroBuffer(Py_buffer * buf)30629 static void __Pyx_ZeroBuffer(Py_buffer* buf) {
30630   buf->buf = NULL;
30631   buf->obj = NULL;
30632   buf->strides = __Pyx_zeros;
30633   buf->shape = __Pyx_zeros;
30634   buf->suboffsets = __Pyx_minusones;
30635 }
__Pyx__GetBufferAndValidate(Py_buffer * buf,PyObject * obj,__Pyx_TypeInfo * dtype,int flags,int nd,int cast,__Pyx_BufFmt_StackElem * stack)30636 static int __Pyx__GetBufferAndValidate(
30637         Py_buffer* buf, PyObject* obj,  __Pyx_TypeInfo* dtype, int flags,
30638         int nd, int cast, __Pyx_BufFmt_StackElem* stack)
30639 {
30640   buf->buf = NULL;
30641   if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) {
30642     __Pyx_ZeroBuffer(buf);
30643     return -1;
30644   }
30645   if (unlikely(buf->ndim != nd)) {
30646     PyErr_Format(PyExc_ValueError,
30647                  "Buffer has wrong number of dimensions (expected %d, got %d)",
30648                  nd, buf->ndim);
30649     goto fail;
30650   }
30651   if (!cast) {
30652     __Pyx_BufFmt_Context ctx;
30653     __Pyx_BufFmt_Init(&ctx, stack, dtype);
30654     if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail;
30655   }
30656   if (unlikely((size_t)buf->itemsize != dtype->size)) {
30657     PyErr_Format(PyExc_ValueError,
30658       "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)",
30659       buf->itemsize, (buf->itemsize > 1) ? "s" : "",
30660       dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : "");
30661     goto fail;
30662   }
30663   if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
30664   return 0;
30665 fail:;
30666   __Pyx_SafeReleaseBuffer(buf);
30667   return -1;
30668 }
30669 
30670 /* PyNumberPow2 */
__Pyx__PyNumber_PowerOf2(PyObject * two,PyObject * exp,PyObject * none,int inplace)30671   static PyObject* __Pyx__PyNumber_PowerOf2(PyObject *two, PyObject *exp, PyObject *none, int inplace) {
30672 #if !CYTHON_COMPILING_IN_PYPY
30673     Py_ssize_t shiftby;
30674 #if PY_MAJOR_VERSION < 3
30675     if (likely(PyInt_CheckExact(exp))) {
30676         shiftby = PyInt_AS_LONG(exp);
30677     } else
30678 #endif
30679     if (likely(PyLong_CheckExact(exp))) {
30680         #if CYTHON_USE_PYLONG_INTERNALS
30681         const Py_ssize_t size = Py_SIZE(exp);
30682         if (likely(size == 1)) {
30683             shiftby = ((PyLongObject*)exp)->ob_digit[0];
30684         } else if (size == 0) {
30685             return PyInt_FromLong(1L);
30686         } else if (unlikely(size < 0)) {
30687             goto fallback;
30688         } else {
30689             shiftby = PyLong_AsSsize_t(exp);
30690         }
30691         #else
30692         shiftby = PyLong_AsSsize_t(exp);
30693         #endif
30694     } else {
30695         goto fallback;
30696     }
30697     if (likely(shiftby >= 0)) {
30698         if ((size_t)shiftby <= sizeof(long) * 8 - 2) {
30699             long value = 1L << shiftby;
30700             return PyInt_FromLong(value);
30701 #ifdef HAVE_LONG_LONG
30702         } else if ((size_t)shiftby <= sizeof(unsigned PY_LONG_LONG) * 8 - 1) {
30703             unsigned PY_LONG_LONG value = ((unsigned PY_LONG_LONG)1) << shiftby;
30704             return PyLong_FromUnsignedLongLong(value);
30705 #endif
30706         } else {
30707             PyObject *result, *one = PyInt_FromLong(1L);
30708             if (unlikely(!one)) return NULL;
30709             result = PyNumber_Lshift(one, exp);
30710             Py_DECREF(one);
30711             return result;
30712         }
30713     } else if (shiftby == -1 && PyErr_Occurred()) {
30714         PyErr_Clear();
30715     }
30716 fallback:
30717 #endif
30718     return (inplace ? PyNumber_InPlacePower : PyNumber_Power)(two, exp, none);
30719 }
30720 
30721 /* None */
__Pyx_div_npy_intp(npy_intp a,npy_intp b)30722   static CYTHON_INLINE npy_intp __Pyx_div_npy_intp(npy_intp a, npy_intp b) {
30723     npy_intp q = a / b;
30724     npy_intp r = a - q*b;
30725     q -= ((r != 0) & ((r ^ b) < 0));
30726     return q;
30727 }
30728 
30729 /* BufferIndexError */
__Pyx_RaiseBufferIndexError(int axis)30730   static void __Pyx_RaiseBufferIndexError(int axis) {
30731   PyErr_Format(PyExc_IndexError,
30732      "Out of bounds on buffer access (axis %d)", axis);
30733 }
30734 
30735 /* ObjectGetItem */
30736   #if CYTHON_USE_TYPE_SLOTS
__Pyx_PyObject_GetIndex(PyObject * obj,PyObject * index)30737 static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
30738     PyObject *runerr;
30739     Py_ssize_t key_value;
30740     PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
30741     if (unlikely(!(m && m->sq_item))) {
30742         PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
30743         return NULL;
30744     }
30745     key_value = __Pyx_PyIndex_AsSsize_t(index);
30746     if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
30747         return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
30748     }
30749     if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
30750         PyErr_Clear();
30751         PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
30752     }
30753     return NULL;
30754 }
__Pyx_PyObject_GetItem(PyObject * obj,PyObject * key)30755 static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
30756     PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
30757     if (likely(m && m->mp_subscript)) {
30758         return m->mp_subscript(obj, key);
30759     }
30760     return __Pyx_PyObject_GetIndex(obj, key);
30761 }
30762 #endif
30763 
30764 /* PyObjectCallNoArg */
30765   #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyObject_CallNoArg(PyObject * func)30766 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
30767 #if CYTHON_FAST_PYCALL
30768     if (PyFunction_Check(func)) {
30769         return __Pyx_PyFunction_FastCall(func, NULL, 0);
30770     }
30771 #endif
30772 #ifdef __Pyx_CyFunction_USED
30773     if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
30774 #else
30775     if (likely(PyCFunction_Check(func)))
30776 #endif
30777     {
30778         if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
30779             return __Pyx_PyObject_CallMethO(func, NULL);
30780         }
30781     }
30782     return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
30783 }
30784 #endif
30785 
30786 /* ExtTypeTest */
__Pyx_TypeTest(PyObject * obj,PyTypeObject * type)30787   static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
30788     if (unlikely(!type)) {
30789         PyErr_SetString(PyExc_SystemError, "Missing type object");
30790         return 0;
30791     }
30792     if (likely(__Pyx_TypeCheck(obj, type)))
30793         return 1;
30794     PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
30795                  Py_TYPE(obj)->tp_name, type->tp_name);
30796     return 0;
30797 }
30798 
30799 /* BufferFallbackError */
__Pyx_RaiseBufferFallbackError(void)30800   static void __Pyx_RaiseBufferFallbackError(void) {
30801   PyErr_SetString(PyExc_ValueError,
30802      "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!");
30803 }
30804 
30805 /* UnpackUnboundCMethod */
__Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction * target)30806   static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
30807     PyObject *method;
30808     method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
30809     if (unlikely(!method))
30810         return -1;
30811     target->method = method;
30812 #if CYTHON_COMPILING_IN_CPYTHON
30813     #if PY_MAJOR_VERSION >= 3
30814     if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
30815     #endif
30816     {
30817         PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
30818         target->func = descr->d_method->ml_meth;
30819         target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
30820     }
30821 #endif
30822     return 0;
30823 }
30824 
30825 /* CallUnboundCMethod1 */
30826   #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction * cfunc,PyObject * self,PyObject * arg)30827 static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
30828     if (likely(cfunc->func)) {
30829         int flag = cfunc->flag;
30830         if (flag == METH_O) {
30831             return (*(cfunc->func))(self, arg);
30832         } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) {
30833             if (PY_VERSION_HEX >= 0x030700A0) {
30834                 return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
30835             } else {
30836                 return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
30837             }
30838         } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) {
30839             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
30840         }
30841     }
30842     return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
30843 }
30844 #endif
__Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction * cfunc,PyObject * self,PyObject * arg)30845 static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
30846     PyObject *args, *result = NULL;
30847     if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
30848 #if CYTHON_COMPILING_IN_CPYTHON
30849     if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
30850         args = PyTuple_New(1);
30851         if (unlikely(!args)) goto bad;
30852         Py_INCREF(arg);
30853         PyTuple_SET_ITEM(args, 0, arg);
30854         if (cfunc->flag & METH_KEYWORDS)
30855             result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
30856         else
30857             result = (*cfunc->func)(self, args);
30858     } else {
30859         args = PyTuple_New(2);
30860         if (unlikely(!args)) goto bad;
30861         Py_INCREF(self);
30862         PyTuple_SET_ITEM(args, 0, self);
30863         Py_INCREF(arg);
30864         PyTuple_SET_ITEM(args, 1, arg);
30865         result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
30866     }
30867 #else
30868     args = PyTuple_Pack(2, self, arg);
30869     if (unlikely(!args)) goto bad;
30870     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
30871 #endif
30872 bad:
30873     Py_XDECREF(args);
30874     return result;
30875 }
30876 
30877 /* CallUnboundCMethod0 */
__Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction * cfunc,PyObject * self)30878   static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
30879     PyObject *args, *result = NULL;
30880     if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
30881 #if CYTHON_ASSUME_SAFE_MACROS
30882     args = PyTuple_New(1);
30883     if (unlikely(!args)) goto bad;
30884     Py_INCREF(self);
30885     PyTuple_SET_ITEM(args, 0, self);
30886 #else
30887     args = PyTuple_Pack(1, self);
30888     if (unlikely(!args)) goto bad;
30889 #endif
30890     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
30891     Py_DECREF(args);
30892 bad:
30893     return result;
30894 }
30895 
30896 /* DictGetItem */
30897   #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
__Pyx_PyDict_GetItem(PyObject * d,PyObject * key)30898 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
30899     PyObject *value;
30900     value = PyDict_GetItemWithError(d, key);
30901     if (unlikely(!value)) {
30902         if (!PyErr_Occurred()) {
30903             if (unlikely(PyTuple_Check(key))) {
30904                 PyObject* args = PyTuple_Pack(1, key);
30905                 if (likely(args)) {
30906                     PyErr_SetObject(PyExc_KeyError, args);
30907                     Py_DECREF(args);
30908                 }
30909             } else {
30910                 PyErr_SetObject(PyExc_KeyError, key);
30911             }
30912         }
30913         return NULL;
30914     }
30915     Py_INCREF(value);
30916     return value;
30917 }
30918 #endif
30919 
30920 /* RaiseTooManyValuesToUnpack */
__Pyx_RaiseTooManyValuesError(Py_ssize_t expected)30921   static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
30922     PyErr_Format(PyExc_ValueError,
30923                  "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
30924 }
30925 
30926 /* RaiseNeedMoreValuesToUnpack */
__Pyx_RaiseNeedMoreValuesError(Py_ssize_t index)30927   static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
30928     PyErr_Format(PyExc_ValueError,
30929                  "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
30930                  index, (index == 1) ? "" : "s");
30931 }
30932 
30933 /* RaiseNoneIterError */
__Pyx_RaiseNoneNotIterableError(void)30934   static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
30935     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
30936 }
30937 
30938 /* GetTopmostException */
30939   #if CYTHON_USE_EXC_INFO_STACK
30940 static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState * tstate)30941 __Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
30942 {
30943     _PyErr_StackItem *exc_info = tstate->exc_info;
30944     while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
30945            exc_info->previous_item != NULL)
30946     {
30947         exc_info = exc_info->previous_item;
30948     }
30949     return exc_info;
30950 }
30951 #endif
30952 
30953 /* SaveResetException */
30954   #if CYTHON_FAST_THREAD_STATE
__Pyx__ExceptionSave(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)30955 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
30956     #if CYTHON_USE_EXC_INFO_STACK
30957     _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
30958     *type = exc_info->exc_type;
30959     *value = exc_info->exc_value;
30960     *tb = exc_info->exc_traceback;
30961     #else
30962     *type = tstate->exc_type;
30963     *value = tstate->exc_value;
30964     *tb = tstate->exc_traceback;
30965     #endif
30966     Py_XINCREF(*type);
30967     Py_XINCREF(*value);
30968     Py_XINCREF(*tb);
30969 }
__Pyx__ExceptionReset(PyThreadState * tstate,PyObject * type,PyObject * value,PyObject * tb)30970 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
30971     PyObject *tmp_type, *tmp_value, *tmp_tb;
30972     #if CYTHON_USE_EXC_INFO_STACK
30973     _PyErr_StackItem *exc_info = tstate->exc_info;
30974     tmp_type = exc_info->exc_type;
30975     tmp_value = exc_info->exc_value;
30976     tmp_tb = exc_info->exc_traceback;
30977     exc_info->exc_type = type;
30978     exc_info->exc_value = value;
30979     exc_info->exc_traceback = tb;
30980     #else
30981     tmp_type = tstate->exc_type;
30982     tmp_value = tstate->exc_value;
30983     tmp_tb = tstate->exc_traceback;
30984     tstate->exc_type = type;
30985     tstate->exc_value = value;
30986     tstate->exc_traceback = tb;
30987     #endif
30988     Py_XDECREF(tmp_type);
30989     Py_XDECREF(tmp_value);
30990     Py_XDECREF(tmp_tb);
30991 }
30992 #endif
30993 
30994 /* PyErrExceptionMatches */
30995   #if CYTHON_FAST_THREAD_STATE
__Pyx_PyErr_ExceptionMatchesTuple(PyObject * exc_type,PyObject * tuple)30996 static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
30997     Py_ssize_t i, n;
30998     n = PyTuple_GET_SIZE(tuple);
30999 #if PY_MAJOR_VERSION >= 3
31000     for (i=0; i<n; i++) {
31001         if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
31002     }
31003 #endif
31004     for (i=0; i<n; i++) {
31005         if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
31006     }
31007     return 0;
31008 }
__Pyx_PyErr_ExceptionMatchesInState(PyThreadState * tstate,PyObject * err)31009 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
31010     PyObject *exc_type = tstate->curexc_type;
31011     if (exc_type == err) return 1;
31012     if (unlikely(!exc_type)) return 0;
31013     if (unlikely(PyTuple_Check(err)))
31014         return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
31015     return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
31016 }
31017 #endif
31018 
31019 /* GetException */
31020   #if CYTHON_FAST_THREAD_STATE
__Pyx__GetException(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)31021 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
31022 #else
31023 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
31024 #endif
31025 {
31026     PyObject *local_type, *local_value, *local_tb;
31027 #if CYTHON_FAST_THREAD_STATE
31028     PyObject *tmp_type, *tmp_value, *tmp_tb;
31029     local_type = tstate->curexc_type;
31030     local_value = tstate->curexc_value;
31031     local_tb = tstate->curexc_traceback;
31032     tstate->curexc_type = 0;
31033     tstate->curexc_value = 0;
31034     tstate->curexc_traceback = 0;
31035 #else
31036     PyErr_Fetch(&local_type, &local_value, &local_tb);
31037 #endif
31038     PyErr_NormalizeException(&local_type, &local_value, &local_tb);
31039 #if CYTHON_FAST_THREAD_STATE
31040     if (unlikely(tstate->curexc_type))
31041 #else
31042     if (unlikely(PyErr_Occurred()))
31043 #endif
31044         goto bad;
31045     #if PY_MAJOR_VERSION >= 3
31046     if (local_tb) {
31047         if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
31048             goto bad;
31049     }
31050     #endif
31051     Py_XINCREF(local_tb);
31052     Py_XINCREF(local_type);
31053     Py_XINCREF(local_value);
31054     *type = local_type;
31055     *value = local_value;
31056     *tb = local_tb;
31057 #if CYTHON_FAST_THREAD_STATE
31058     #if CYTHON_USE_EXC_INFO_STACK
31059     {
31060         _PyErr_StackItem *exc_info = tstate->exc_info;
31061         tmp_type = exc_info->exc_type;
31062         tmp_value = exc_info->exc_value;
31063         tmp_tb = exc_info->exc_traceback;
31064         exc_info->exc_type = local_type;
31065         exc_info->exc_value = local_value;
31066         exc_info->exc_traceback = local_tb;
31067     }
31068     #else
31069     tmp_type = tstate->exc_type;
31070     tmp_value = tstate->exc_value;
31071     tmp_tb = tstate->exc_traceback;
31072     tstate->exc_type = local_type;
31073     tstate->exc_value = local_value;
31074     tstate->exc_traceback = local_tb;
31075     #endif
31076     Py_XDECREF(tmp_type);
31077     Py_XDECREF(tmp_value);
31078     Py_XDECREF(tmp_tb);
31079 #else
31080     PyErr_SetExcInfo(local_type, local_value, local_tb);
31081 #endif
31082     return 0;
31083 bad:
31084     *type = 0;
31085     *value = 0;
31086     *tb = 0;
31087     Py_XDECREF(local_type);
31088     Py_XDECREF(local_value);
31089     Py_XDECREF(local_tb);
31090     return -1;
31091 }
31092 
31093 /* BytesEquals */
__Pyx_PyBytes_Equals(PyObject * s1,PyObject * s2,int equals)31094   static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
31095 #if CYTHON_COMPILING_IN_PYPY
31096     return PyObject_RichCompareBool(s1, s2, equals);
31097 #else
31098     if (s1 == s2) {
31099         return (equals == Py_EQ);
31100     } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
31101         const char *ps1, *ps2;
31102         Py_ssize_t length = PyBytes_GET_SIZE(s1);
31103         if (length != PyBytes_GET_SIZE(s2))
31104             return (equals == Py_NE);
31105         ps1 = PyBytes_AS_STRING(s1);
31106         ps2 = PyBytes_AS_STRING(s2);
31107         if (ps1[0] != ps2[0]) {
31108             return (equals == Py_NE);
31109         } else if (length == 1) {
31110             return (equals == Py_EQ);
31111         } else {
31112             int result;
31113 #if CYTHON_USE_UNICODE_INTERNALS
31114             Py_hash_t hash1, hash2;
31115             hash1 = ((PyBytesObject*)s1)->ob_shash;
31116             hash2 = ((PyBytesObject*)s2)->ob_shash;
31117             if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
31118                 return (equals == Py_NE);
31119             }
31120 #endif
31121             result = memcmp(ps1, ps2, (size_t)length);
31122             return (equals == Py_EQ) ? (result == 0) : (result != 0);
31123         }
31124     } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
31125         return (equals == Py_NE);
31126     } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
31127         return (equals == Py_NE);
31128     } else {
31129         int result;
31130         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
31131         if (!py_result)
31132             return -1;
31133         result = __Pyx_PyObject_IsTrue(py_result);
31134         Py_DECREF(py_result);
31135         return result;
31136     }
31137 #endif
31138 }
31139 
31140 /* UnicodeEquals */
__Pyx_PyUnicode_Equals(PyObject * s1,PyObject * s2,int equals)31141   static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
31142 #if CYTHON_COMPILING_IN_PYPY
31143     return PyObject_RichCompareBool(s1, s2, equals);
31144 #else
31145 #if PY_MAJOR_VERSION < 3
31146     PyObject* owned_ref = NULL;
31147 #endif
31148     int s1_is_unicode, s2_is_unicode;
31149     if (s1 == s2) {
31150         goto return_eq;
31151     }
31152     s1_is_unicode = PyUnicode_CheckExact(s1);
31153     s2_is_unicode = PyUnicode_CheckExact(s2);
31154 #if PY_MAJOR_VERSION < 3
31155     if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
31156         owned_ref = PyUnicode_FromObject(s2);
31157         if (unlikely(!owned_ref))
31158             return -1;
31159         s2 = owned_ref;
31160         s2_is_unicode = 1;
31161     } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
31162         owned_ref = PyUnicode_FromObject(s1);
31163         if (unlikely(!owned_ref))
31164             return -1;
31165         s1 = owned_ref;
31166         s1_is_unicode = 1;
31167     } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
31168         return __Pyx_PyBytes_Equals(s1, s2, equals);
31169     }
31170 #endif
31171     if (s1_is_unicode & s2_is_unicode) {
31172         Py_ssize_t length;
31173         int kind;
31174         void *data1, *data2;
31175         if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
31176             return -1;
31177         length = __Pyx_PyUnicode_GET_LENGTH(s1);
31178         if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
31179             goto return_ne;
31180         }
31181 #if CYTHON_USE_UNICODE_INTERNALS
31182         {
31183             Py_hash_t hash1, hash2;
31184         #if CYTHON_PEP393_ENABLED
31185             hash1 = ((PyASCIIObject*)s1)->hash;
31186             hash2 = ((PyASCIIObject*)s2)->hash;
31187         #else
31188             hash1 = ((PyUnicodeObject*)s1)->hash;
31189             hash2 = ((PyUnicodeObject*)s2)->hash;
31190         #endif
31191             if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
31192                 goto return_ne;
31193             }
31194         }
31195 #endif
31196         kind = __Pyx_PyUnicode_KIND(s1);
31197         if (kind != __Pyx_PyUnicode_KIND(s2)) {
31198             goto return_ne;
31199         }
31200         data1 = __Pyx_PyUnicode_DATA(s1);
31201         data2 = __Pyx_PyUnicode_DATA(s2);
31202         if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
31203             goto return_ne;
31204         } else if (length == 1) {
31205             goto return_eq;
31206         } else {
31207             int result = memcmp(data1, data2, (size_t)(length * kind));
31208             #if PY_MAJOR_VERSION < 3
31209             Py_XDECREF(owned_ref);
31210             #endif
31211             return (equals == Py_EQ) ? (result == 0) : (result != 0);
31212         }
31213     } else if ((s1 == Py_None) & s2_is_unicode) {
31214         goto return_ne;
31215     } else if ((s2 == Py_None) & s1_is_unicode) {
31216         goto return_ne;
31217     } else {
31218         int result;
31219         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
31220         #if PY_MAJOR_VERSION < 3
31221         Py_XDECREF(owned_ref);
31222         #endif
31223         if (!py_result)
31224             return -1;
31225         result = __Pyx_PyObject_IsTrue(py_result);
31226         Py_DECREF(py_result);
31227         return result;
31228     }
31229 return_eq:
31230     #if PY_MAJOR_VERSION < 3
31231     Py_XDECREF(owned_ref);
31232     #endif
31233     return (equals == Py_EQ);
31234 return_ne:
31235     #if PY_MAJOR_VERSION < 3
31236     Py_XDECREF(owned_ref);
31237     #endif
31238     return (equals == Py_NE);
31239 #endif
31240 }
31241 
31242 /* None */
__Pyx_div_Py_ssize_t(Py_ssize_t a,Py_ssize_t b)31243   static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
31244     Py_ssize_t q = a / b;
31245     Py_ssize_t r = a - q*b;
31246     q -= ((r != 0) & ((r ^ b) < 0));
31247     return q;
31248 }
31249 
31250 /* GetAttr */
__Pyx_GetAttr(PyObject * o,PyObject * n)31251   static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
31252 #if CYTHON_USE_TYPE_SLOTS
31253 #if PY_MAJOR_VERSION >= 3
31254     if (likely(PyUnicode_Check(n)))
31255 #else
31256     if (likely(PyString_Check(n)))
31257 #endif
31258         return __Pyx_PyObject_GetAttrStr(o, n);
31259 #endif
31260     return PyObject_GetAttr(o, n);
31261 }
31262 
31263 /* decode_c_string */
__Pyx_decode_c_string(const char * cstring,Py_ssize_t start,Py_ssize_t stop,const char * encoding,const char * errors,PyObject * (* decode_func)(const char * s,Py_ssize_t size,const char * errors))31264   static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
31265          const char* cstring, Py_ssize_t start, Py_ssize_t stop,
31266          const char* encoding, const char* errors,
31267          PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
31268     Py_ssize_t length;
31269     if (unlikely((start < 0) | (stop < 0))) {
31270         size_t slen = strlen(cstring);
31271         if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
31272             PyErr_SetString(PyExc_OverflowError,
31273                             "c-string too long to convert to Python");
31274             return NULL;
31275         }
31276         length = (Py_ssize_t) slen;
31277         if (start < 0) {
31278             start += length;
31279             if (start < 0)
31280                 start = 0;
31281         }
31282         if (stop < 0)
31283             stop += length;
31284     }
31285     length = stop - start;
31286     if (unlikely(length <= 0))
31287         return PyUnicode_FromUnicode(NULL, 0);
31288     cstring += start;
31289     if (decode_func) {
31290         return decode_func(cstring, length, errors);
31291     } else {
31292         return PyUnicode_Decode(cstring, length, encoding, errors);
31293     }
31294 }
31295 
31296 /* GetAttr3 */
__Pyx_GetAttr3Default(PyObject * d)31297   static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
31298     __Pyx_PyThreadState_declare
31299     __Pyx_PyThreadState_assign
31300     if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
31301         return NULL;
31302     __Pyx_PyErr_Clear();
31303     Py_INCREF(d);
31304     return d;
31305 }
__Pyx_GetAttr3(PyObject * o,PyObject * n,PyObject * d)31306 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
31307     PyObject *r = __Pyx_GetAttr(o, n);
31308     return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
31309 }
31310 
31311 /* SwapException */
31312   #if CYTHON_FAST_THREAD_STATE
__Pyx__ExceptionSwap(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)31313 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
31314     PyObject *tmp_type, *tmp_value, *tmp_tb;
31315     #if CYTHON_USE_EXC_INFO_STACK
31316     _PyErr_StackItem *exc_info = tstate->exc_info;
31317     tmp_type = exc_info->exc_type;
31318     tmp_value = exc_info->exc_value;
31319     tmp_tb = exc_info->exc_traceback;
31320     exc_info->exc_type = *type;
31321     exc_info->exc_value = *value;
31322     exc_info->exc_traceback = *tb;
31323     #else
31324     tmp_type = tstate->exc_type;
31325     tmp_value = tstate->exc_value;
31326     tmp_tb = tstate->exc_traceback;
31327     tstate->exc_type = *type;
31328     tstate->exc_value = *value;
31329     tstate->exc_traceback = *tb;
31330     #endif
31331     *type = tmp_type;
31332     *value = tmp_value;
31333     *tb = tmp_tb;
31334 }
31335 #else
__Pyx_ExceptionSwap(PyObject ** type,PyObject ** value,PyObject ** tb)31336 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
31337     PyObject *tmp_type, *tmp_value, *tmp_tb;
31338     PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
31339     PyErr_SetExcInfo(*type, *value, *tb);
31340     *type = tmp_type;
31341     *value = tmp_value;
31342     *tb = tmp_tb;
31343 }
31344 #endif
31345 
31346 /* Import */
__Pyx_Import(PyObject * name,PyObject * from_list,int level)31347   static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
31348     PyObject *empty_list = 0;
31349     PyObject *module = 0;
31350     PyObject *global_dict = 0;
31351     PyObject *empty_dict = 0;
31352     PyObject *list;
31353     #if PY_MAJOR_VERSION < 3
31354     PyObject *py_import;
31355     py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
31356     if (!py_import)
31357         goto bad;
31358     #endif
31359     if (from_list)
31360         list = from_list;
31361     else {
31362         empty_list = PyList_New(0);
31363         if (!empty_list)
31364             goto bad;
31365         list = empty_list;
31366     }
31367     global_dict = PyModule_GetDict(__pyx_m);
31368     if (!global_dict)
31369         goto bad;
31370     empty_dict = PyDict_New();
31371     if (!empty_dict)
31372         goto bad;
31373     {
31374         #if PY_MAJOR_VERSION >= 3
31375         if (level == -1) {
31376             if (strchr(__Pyx_MODULE_NAME, '.')) {
31377                 module = PyImport_ImportModuleLevelObject(
31378                     name, global_dict, empty_dict, list, 1);
31379                 if (!module) {
31380                     if (!PyErr_ExceptionMatches(PyExc_ImportError))
31381                         goto bad;
31382                     PyErr_Clear();
31383                 }
31384             }
31385             level = 0;
31386         }
31387         #endif
31388         if (!module) {
31389             #if PY_MAJOR_VERSION < 3
31390             PyObject *py_level = PyInt_FromLong(level);
31391             if (!py_level)
31392                 goto bad;
31393             module = PyObject_CallFunctionObjArgs(py_import,
31394                 name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
31395             Py_DECREF(py_level);
31396             #else
31397             module = PyImport_ImportModuleLevelObject(
31398                 name, global_dict, empty_dict, list, level);
31399             #endif
31400         }
31401     }
31402 bad:
31403     #if PY_MAJOR_VERSION < 3
31404     Py_XDECREF(py_import);
31405     #endif
31406     Py_XDECREF(empty_list);
31407     Py_XDECREF(empty_dict);
31408     return module;
31409 }
31410 
31411 /* FastTypeChecks */
31412   #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_InBases(PyTypeObject * a,PyTypeObject * b)31413 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
31414     while (a) {
31415         a = a->tp_base;
31416         if (a == b)
31417             return 1;
31418     }
31419     return b == &PyBaseObject_Type;
31420 }
__Pyx_IsSubtype(PyTypeObject * a,PyTypeObject * b)31421 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
31422     PyObject *mro;
31423     if (a == b) return 1;
31424     mro = a->tp_mro;
31425     if (likely(mro)) {
31426         Py_ssize_t i, n;
31427         n = PyTuple_GET_SIZE(mro);
31428         for (i = 0; i < n; i++) {
31429             if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
31430                 return 1;
31431         }
31432         return 0;
31433     }
31434     return __Pyx_InBases(a, b);
31435 }
31436 #if PY_MAJOR_VERSION == 2
__Pyx_inner_PyErr_GivenExceptionMatches2(PyObject * err,PyObject * exc_type1,PyObject * exc_type2)31437 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
31438     PyObject *exception, *value, *tb;
31439     int res;
31440     __Pyx_PyThreadState_declare
31441     __Pyx_PyThreadState_assign
31442     __Pyx_ErrFetch(&exception, &value, &tb);
31443     res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
31444     if (unlikely(res == -1)) {
31445         PyErr_WriteUnraisable(err);
31446         res = 0;
31447     }
31448     if (!res) {
31449         res = PyObject_IsSubclass(err, exc_type2);
31450         if (unlikely(res == -1)) {
31451             PyErr_WriteUnraisable(err);
31452             res = 0;
31453         }
31454     }
31455     __Pyx_ErrRestore(exception, value, tb);
31456     return res;
31457 }
31458 #else
__Pyx_inner_PyErr_GivenExceptionMatches2(PyObject * err,PyObject * exc_type1,PyObject * exc_type2)31459 static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
31460     int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
31461     if (!res) {
31462         res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
31463     }
31464     return res;
31465 }
31466 #endif
__Pyx_PyErr_GivenExceptionMatchesTuple(PyObject * exc_type,PyObject * tuple)31467 static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
31468     Py_ssize_t i, n;
31469     assert(PyExceptionClass_Check(exc_type));
31470     n = PyTuple_GET_SIZE(tuple);
31471 #if PY_MAJOR_VERSION >= 3
31472     for (i=0; i<n; i++) {
31473         if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
31474     }
31475 #endif
31476     for (i=0; i<n; i++) {
31477         PyObject *t = PyTuple_GET_ITEM(tuple, i);
31478         #if PY_MAJOR_VERSION < 3
31479         if (likely(exc_type == t)) return 1;
31480         #endif
31481         if (likely(PyExceptionClass_Check(t))) {
31482             if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
31483         } else {
31484         }
31485     }
31486     return 0;
31487 }
__Pyx_PyErr_GivenExceptionMatches(PyObject * err,PyObject * exc_type)31488 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
31489     if (likely(err == exc_type)) return 1;
31490     if (likely(PyExceptionClass_Check(err))) {
31491         if (likely(PyExceptionClass_Check(exc_type))) {
31492             return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
31493         } else if (likely(PyTuple_Check(exc_type))) {
31494             return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
31495         } else {
31496         }
31497     }
31498     return PyErr_GivenExceptionMatches(err, exc_type);
31499 }
__Pyx_PyErr_GivenExceptionMatches2(PyObject * err,PyObject * exc_type1,PyObject * exc_type2)31500 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
31501     assert(PyExceptionClass_Check(exc_type1));
31502     assert(PyExceptionClass_Check(exc_type2));
31503     if (likely(err == exc_type1 || err == exc_type2)) return 1;
31504     if (likely(PyExceptionClass_Check(err))) {
31505         return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
31506     }
31507     return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
31508 }
31509 #endif
31510 
31511 /* PyIntBinop */
31512   #if !CYTHON_COMPILING_IN_PYPY
__Pyx_PyInt_AddObjC(PyObject * op1,PyObject * op2,CYTHON_UNUSED long intval,int inplace,int zerodivision_check)31513 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
31514     (void)inplace;
31515     (void)zerodivision_check;
31516     #if PY_MAJOR_VERSION < 3
31517     if (likely(PyInt_CheckExact(op1))) {
31518         const long b = intval;
31519         long x;
31520         long a = PyInt_AS_LONG(op1);
31521             x = (long)((unsigned long)a + b);
31522             if (likely((x^a) >= 0 || (x^b) >= 0))
31523                 return PyInt_FromLong(x);
31524             return PyLong_Type.tp_as_number->nb_add(op1, op2);
31525     }
31526     #endif
31527     #if CYTHON_USE_PYLONG_INTERNALS
31528     if (likely(PyLong_CheckExact(op1))) {
31529         const long b = intval;
31530         long a, x;
31531 #ifdef HAVE_LONG_LONG
31532         const PY_LONG_LONG llb = intval;
31533         PY_LONG_LONG lla, llx;
31534 #endif
31535         const digit* digits = ((PyLongObject*)op1)->ob_digit;
31536         const Py_ssize_t size = Py_SIZE(op1);
31537         if (likely(__Pyx_sst_abs(size) <= 1)) {
31538             a = likely(size) ? digits[0] : 0;
31539             if (size == -1) a = -a;
31540         } else {
31541             switch (size) {
31542                 case -2:
31543                     if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
31544                         a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
31545                         break;
31546 #ifdef HAVE_LONG_LONG
31547                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
31548                         lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
31549                         goto long_long;
31550 #endif
31551                     }
31552                     CYTHON_FALLTHROUGH;
31553                 case 2:
31554                     if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
31555                         a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
31556                         break;
31557 #ifdef HAVE_LONG_LONG
31558                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
31559                         lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
31560                         goto long_long;
31561 #endif
31562                     }
31563                     CYTHON_FALLTHROUGH;
31564                 case -3:
31565                     if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
31566                         a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
31567                         break;
31568 #ifdef HAVE_LONG_LONG
31569                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
31570                         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]));
31571                         goto long_long;
31572 #endif
31573                     }
31574                     CYTHON_FALLTHROUGH;
31575                 case 3:
31576                     if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
31577                         a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
31578                         break;
31579 #ifdef HAVE_LONG_LONG
31580                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
31581                         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]));
31582                         goto long_long;
31583 #endif
31584                     }
31585                     CYTHON_FALLTHROUGH;
31586                 case -4:
31587                     if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
31588                         a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
31589                         break;
31590 #ifdef HAVE_LONG_LONG
31591                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
31592                         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]));
31593                         goto long_long;
31594 #endif
31595                     }
31596                     CYTHON_FALLTHROUGH;
31597                 case 4:
31598                     if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
31599                         a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
31600                         break;
31601 #ifdef HAVE_LONG_LONG
31602                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
31603                         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]));
31604                         goto long_long;
31605 #endif
31606                     }
31607                     CYTHON_FALLTHROUGH;
31608                 default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
31609             }
31610         }
31611                 x = a + b;
31612             return PyLong_FromLong(x);
31613 #ifdef HAVE_LONG_LONG
31614         long_long:
31615                 llx = lla + llb;
31616             return PyLong_FromLongLong(llx);
31617 #endif
31618 
31619 
31620     }
31621     #endif
31622     if (PyFloat_CheckExact(op1)) {
31623         const long b = intval;
31624         double a = PyFloat_AS_DOUBLE(op1);
31625             double result;
31626             PyFPE_START_PROTECT("add", return NULL)
31627             result = ((double)a) + (double)b;
31628             PyFPE_END_PROTECT(result)
31629             return PyFloat_FromDouble(result);
31630     }
31631     return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
31632 }
31633 #endif
31634 
31635 /* None */
__Pyx_RaiseUnboundLocalError(const char * varname)31636   static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
31637     PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
31638 }
31639 
31640 /* None */
__Pyx_div_long(long a,long b)31641   static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
31642     long q = a / b;
31643     long r = a - q*b;
31644     q -= ((r != 0) & ((r ^ b) < 0));
31645     return q;
31646 }
31647 
31648 /* ImportFrom */
__Pyx_ImportFrom(PyObject * module,PyObject * name)31649   static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
31650     PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
31651     if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
31652         PyErr_Format(PyExc_ImportError,
31653         #if PY_MAJOR_VERSION < 3
31654             "cannot import name %.230s", PyString_AS_STRING(name));
31655         #else
31656             "cannot import name %S", name);
31657         #endif
31658     }
31659     return value;
31660 }
31661 
31662 /* HasAttr */
__Pyx_HasAttr(PyObject * o,PyObject * n)31663   static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
31664     PyObject *r;
31665     if (unlikely(!__Pyx_PyBaseString_Check(n))) {
31666         PyErr_SetString(PyExc_TypeError,
31667                         "hasattr(): attribute name must be string");
31668         return -1;
31669     }
31670     r = __Pyx_GetAttr(o, n);
31671     if (unlikely(!r)) {
31672         PyErr_Clear();
31673         return 0;
31674     } else {
31675         Py_DECREF(r);
31676         return 1;
31677     }
31678 }
31679 
31680 /* StringJoin */
31681   #if !CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyBytes_Join(PyObject * sep,PyObject * values)31682 static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
31683     return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL);
31684 }
31685 #endif
31686 
31687 /* PyObject_GenericGetAttrNoDict */
31688   #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
__Pyx_RaiseGenericGetAttributeError(PyTypeObject * tp,PyObject * attr_name)31689 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
31690     PyErr_Format(PyExc_AttributeError,
31691 #if PY_MAJOR_VERSION >= 3
31692                  "'%.50s' object has no attribute '%U'",
31693                  tp->tp_name, attr_name);
31694 #else
31695                  "'%.50s' object has no attribute '%.400s'",
31696                  tp->tp_name, PyString_AS_STRING(attr_name));
31697 #endif
31698     return NULL;
31699 }
__Pyx_PyObject_GenericGetAttrNoDict(PyObject * obj,PyObject * attr_name)31700 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
31701     PyObject *descr;
31702     PyTypeObject *tp = Py_TYPE(obj);
31703     if (unlikely(!PyString_Check(attr_name))) {
31704         return PyObject_GenericGetAttr(obj, attr_name);
31705     }
31706     assert(!tp->tp_dictoffset);
31707     descr = _PyType_Lookup(tp, attr_name);
31708     if (unlikely(!descr)) {
31709         return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
31710     }
31711     Py_INCREF(descr);
31712     #if PY_MAJOR_VERSION < 3
31713     if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
31714     #endif
31715     {
31716         descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
31717         if (unlikely(f)) {
31718             PyObject *res = f(descr, obj, (PyObject *)tp);
31719             Py_DECREF(descr);
31720             return res;
31721         }
31722     }
31723     return descr;
31724 }
31725 #endif
31726 
31727 /* PyObject_GenericGetAttr */
31728   #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
__Pyx_PyObject_GenericGetAttr(PyObject * obj,PyObject * attr_name)31729 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
31730     if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
31731         return PyObject_GenericGetAttr(obj, attr_name);
31732     }
31733     return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
31734 }
31735 #endif
31736 
31737 /* SetVTable */
__Pyx_SetVtable(PyObject * dict,void * vtable)31738   static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
31739 #if PY_VERSION_HEX >= 0x02070000
31740     PyObject *ob = PyCapsule_New(vtable, 0, 0);
31741 #else
31742     PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
31743 #endif
31744     if (!ob)
31745         goto bad;
31746     if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
31747         goto bad;
31748     Py_DECREF(ob);
31749     return 0;
31750 bad:
31751     Py_XDECREF(ob);
31752     return -1;
31753 }
31754 
31755 /* SetupReduce */
__Pyx_setup_reduce_is_named(PyObject * meth,PyObject * name)31756   static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
31757   int ret;
31758   PyObject *name_attr;
31759   name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name);
31760   if (likely(name_attr)) {
31761       ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
31762   } else {
31763       ret = -1;
31764   }
31765   if (unlikely(ret < 0)) {
31766       PyErr_Clear();
31767       ret = 0;
31768   }
31769   Py_XDECREF(name_attr);
31770   return ret;
31771 }
__Pyx_setup_reduce(PyObject * type_obj)31772 static int __Pyx_setup_reduce(PyObject* type_obj) {
31773     int ret = 0;
31774     PyObject *object_reduce = NULL;
31775     PyObject *object_reduce_ex = NULL;
31776     PyObject *reduce = NULL;
31777     PyObject *reduce_ex = NULL;
31778     PyObject *reduce_cython = NULL;
31779     PyObject *setstate = NULL;
31780     PyObject *setstate_cython = NULL;
31781 #if CYTHON_USE_PYTYPE_LOOKUP
31782     if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto GOOD;
31783 #else
31784     if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto GOOD;
31785 #endif
31786 #if CYTHON_USE_PYTYPE_LOOKUP
31787     object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
31788 #else
31789     object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
31790 #endif
31791     reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto BAD;
31792     if (reduce_ex == object_reduce_ex) {
31793 #if CYTHON_USE_PYTYPE_LOOKUP
31794         object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD;
31795 #else
31796         object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD;
31797 #endif
31798         reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto BAD;
31799         if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
31800             reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto BAD;
31801             ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto BAD;
31802             ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto BAD;
31803             setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
31804             if (!setstate) PyErr_Clear();
31805             if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
31806                 setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto BAD;
31807                 ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto BAD;
31808                 ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto BAD;
31809             }
31810             PyType_Modified((PyTypeObject*)type_obj);
31811         }
31812     }
31813     goto GOOD;
31814 BAD:
31815     if (!PyErr_Occurred())
31816         PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
31817     ret = -1;
31818 GOOD:
31819 #if !CYTHON_USE_PYTYPE_LOOKUP
31820     Py_XDECREF(object_reduce);
31821     Py_XDECREF(object_reduce_ex);
31822 #endif
31823     Py_XDECREF(reduce);
31824     Py_XDECREF(reduce_ex);
31825     Py_XDECREF(reduce_cython);
31826     Py_XDECREF(setstate);
31827     Py_XDECREF(setstate_cython);
31828     return ret;
31829 }
31830 
31831 /* TypeImport */
31832   #ifndef __PYX_HAVE_RT_ImportType
31833 #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)31834 static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
31835     size_t size, enum __Pyx_ImportType_CheckSize check_size)
31836 {
31837     PyObject *result = 0;
31838     char warning[200];
31839     Py_ssize_t basicsize;
31840 #ifdef Py_LIMITED_API
31841     PyObject *py_basicsize;
31842 #endif
31843     result = PyObject_GetAttrString(module, class_name);
31844     if (!result)
31845         goto bad;
31846     if (!PyType_Check(result)) {
31847         PyErr_Format(PyExc_TypeError,
31848             "%.200s.%.200s is not a type object",
31849             module_name, class_name);
31850         goto bad;
31851     }
31852 #ifndef Py_LIMITED_API
31853     basicsize = ((PyTypeObject *)result)->tp_basicsize;
31854 #else
31855     py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
31856     if (!py_basicsize)
31857         goto bad;
31858     basicsize = PyLong_AsSsize_t(py_basicsize);
31859     Py_DECREF(py_basicsize);
31860     py_basicsize = 0;
31861     if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
31862         goto bad;
31863 #endif
31864     if ((size_t)basicsize < size) {
31865         PyErr_Format(PyExc_ValueError,
31866             "%.200s.%.200s size changed, may indicate binary incompatibility. "
31867             "Expected %zd from C header, got %zd from PyObject",
31868             module_name, class_name, size, basicsize);
31869         goto bad;
31870     }
31871     if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
31872         PyErr_Format(PyExc_ValueError,
31873             "%.200s.%.200s size changed, may indicate binary incompatibility. "
31874             "Expected %zd from C header, got %zd from PyObject",
31875             module_name, class_name, size, basicsize);
31876         goto bad;
31877     }
31878     else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
31879         PyOS_snprintf(warning, sizeof(warning),
31880             "%s.%s size changed, may indicate binary incompatibility. "
31881             "Expected %zd from C header, got %zd from PyObject",
31882             module_name, class_name, size, basicsize);
31883         if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
31884     }
31885     return (PyTypeObject *)result;
31886 bad:
31887     Py_XDECREF(result);
31888     return NULL;
31889 }
31890 #endif
31891 
31892 /* ClassMethod */
__Pyx_Method_ClassMethod(PyObject * method)31893   static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
31894 #if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM <= 0x05080000
31895     if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) {
31896         return PyClassMethod_New(method);
31897     }
31898 #else
31899 #if CYTHON_COMPILING_IN_PYSTON || CYTHON_COMPILING_IN_PYPY
31900     if (PyMethodDescr_Check(method))
31901 #else
31902     static PyTypeObject *methoddescr_type = NULL;
31903     if (methoddescr_type == NULL) {
31904        PyObject *meth = PyObject_GetAttrString((PyObject*)&PyList_Type, "append");
31905        if (!meth) return NULL;
31906        methoddescr_type = Py_TYPE(meth);
31907        Py_DECREF(meth);
31908     }
31909     if (__Pyx_TypeCheck(method, methoddescr_type))
31910 #endif
31911     {
31912         PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
31913         #if PY_VERSION_HEX < 0x03020000
31914         PyTypeObject *d_type = descr->d_type;
31915         #else
31916         PyTypeObject *d_type = descr->d_common.d_type;
31917         #endif
31918         return PyDescr_NewClassMethod(d_type, descr->d_method);
31919     }
31920 #endif
31921     else if (PyMethod_Check(method)) {
31922         return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
31923     }
31924     else if (PyCFunction_Check(method)) {
31925         return PyClassMethod_New(method);
31926     }
31927 #ifdef __Pyx_CyFunction_USED
31928     else if (__Pyx_CyFunction_Check(method)) {
31929         return PyClassMethod_New(method);
31930     }
31931 #endif
31932     PyErr_SetString(PyExc_TypeError,
31933                    "Class-level classmethod() can only be called on "
31934                    "a method_descriptor or instance method.");
31935     return NULL;
31936 }
31937 
31938 /* GetNameInClass */
__Pyx_GetGlobalNameAfterAttributeLookup(PyObject * name)31939   static PyObject *__Pyx_GetGlobalNameAfterAttributeLookup(PyObject *name) {
31940     PyObject *result;
31941     __Pyx_PyThreadState_declare
31942     __Pyx_PyThreadState_assign
31943     if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
31944         return NULL;
31945     __Pyx_PyErr_Clear();
31946     __Pyx_GetModuleGlobalNameUncached(result, name);
31947     return result;
31948 }
__Pyx__GetNameInClass(PyObject * nmspace,PyObject * name)31949 static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name) {
31950     PyObject *result;
31951     result = __Pyx_PyObject_GetAttrStr(nmspace, name);
31952     if (!result) {
31953         result = __Pyx_GetGlobalNameAfterAttributeLookup(name);
31954     }
31955     return result;
31956 }
31957 
31958 /* CLineInTraceback */
31959   #ifndef CYTHON_CLINE_IN_TRACEBACK
__Pyx_CLineForTraceback(PyThreadState * tstate,int c_line)31960 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
31961     PyObject *use_cline;
31962     PyObject *ptype, *pvalue, *ptraceback;
31963 #if CYTHON_COMPILING_IN_CPYTHON
31964     PyObject **cython_runtime_dict;
31965 #endif
31966     if (unlikely(!__pyx_cython_runtime)) {
31967         return c_line;
31968     }
31969     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
31970 #if CYTHON_COMPILING_IN_CPYTHON
31971     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
31972     if (likely(cython_runtime_dict)) {
31973         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
31974             use_cline, *cython_runtime_dict,
31975             __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
31976     } else
31977 #endif
31978     {
31979       PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
31980       if (use_cline_obj) {
31981         use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
31982         Py_DECREF(use_cline_obj);
31983       } else {
31984         PyErr_Clear();
31985         use_cline = NULL;
31986       }
31987     }
31988     if (!use_cline) {
31989         c_line = 0;
31990         PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
31991     }
31992     else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
31993         c_line = 0;
31994     }
31995     __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
31996     return c_line;
31997 }
31998 #endif
31999 
32000 /* CodeObjectCache */
__pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry * entries,int count,int code_line)32001   static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
32002     int start = 0, mid = 0, end = count - 1;
32003     if (end >= 0 && code_line > entries[end].code_line) {
32004         return count;
32005     }
32006     while (start < end) {
32007         mid = start + (end - start) / 2;
32008         if (code_line < entries[mid].code_line) {
32009             end = mid;
32010         } else if (code_line > entries[mid].code_line) {
32011              start = mid + 1;
32012         } else {
32013             return mid;
32014         }
32015     }
32016     if (code_line <= entries[mid].code_line) {
32017         return mid;
32018     } else {
32019         return mid + 1;
32020     }
32021 }
__pyx_find_code_object(int code_line)32022 static PyCodeObject *__pyx_find_code_object(int code_line) {
32023     PyCodeObject* code_object;
32024     int pos;
32025     if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
32026         return NULL;
32027     }
32028     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
32029     if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
32030         return NULL;
32031     }
32032     code_object = __pyx_code_cache.entries[pos].code_object;
32033     Py_INCREF(code_object);
32034     return code_object;
32035 }
__pyx_insert_code_object(int code_line,PyCodeObject * code_object)32036 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
32037     int pos, i;
32038     __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
32039     if (unlikely(!code_line)) {
32040         return;
32041     }
32042     if (unlikely(!entries)) {
32043         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
32044         if (likely(entries)) {
32045             __pyx_code_cache.entries = entries;
32046             __pyx_code_cache.max_count = 64;
32047             __pyx_code_cache.count = 1;
32048             entries[0].code_line = code_line;
32049             entries[0].code_object = code_object;
32050             Py_INCREF(code_object);
32051         }
32052         return;
32053     }
32054     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
32055     if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
32056         PyCodeObject* tmp = entries[pos].code_object;
32057         entries[pos].code_object = code_object;
32058         Py_DECREF(tmp);
32059         return;
32060     }
32061     if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
32062         int new_max = __pyx_code_cache.max_count + 64;
32063         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
32064             __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
32065         if (unlikely(!entries)) {
32066             return;
32067         }
32068         __pyx_code_cache.entries = entries;
32069         __pyx_code_cache.max_count = new_max;
32070     }
32071     for (i=__pyx_code_cache.count; i>pos; i--) {
32072         entries[i] = entries[i-1];
32073     }
32074     entries[pos].code_line = code_line;
32075     entries[pos].code_object = code_object;
32076     __pyx_code_cache.count++;
32077     Py_INCREF(code_object);
32078 }
32079 
32080 /* AddTraceback */
32081   #include "compile.h"
32082 #include "frameobject.h"
32083 #include "traceback.h"
__Pyx_CreateCodeObjectForTraceback(const char * funcname,int c_line,int py_line,const char * filename)32084 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
32085             const char *funcname, int c_line,
32086             int py_line, const char *filename) {
32087     PyCodeObject *py_code = 0;
32088     PyObject *py_srcfile = 0;
32089     PyObject *py_funcname = 0;
32090     #if PY_MAJOR_VERSION < 3
32091     py_srcfile = PyString_FromString(filename);
32092     #else
32093     py_srcfile = PyUnicode_FromString(filename);
32094     #endif
32095     if (!py_srcfile) goto bad;
32096     if (c_line) {
32097         #if PY_MAJOR_VERSION < 3
32098         py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
32099         #else
32100         py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
32101         #endif
32102     }
32103     else {
32104         #if PY_MAJOR_VERSION < 3
32105         py_funcname = PyString_FromString(funcname);
32106         #else
32107         py_funcname = PyUnicode_FromString(funcname);
32108         #endif
32109     }
32110     if (!py_funcname) goto bad;
32111     py_code = __Pyx_PyCode_New(
32112         0,
32113         0,
32114         0,
32115         0,
32116         0,
32117         __pyx_empty_bytes, /*PyObject *code,*/
32118         __pyx_empty_tuple, /*PyObject *consts,*/
32119         __pyx_empty_tuple, /*PyObject *names,*/
32120         __pyx_empty_tuple, /*PyObject *varnames,*/
32121         __pyx_empty_tuple, /*PyObject *freevars,*/
32122         __pyx_empty_tuple, /*PyObject *cellvars,*/
32123         py_srcfile,   /*PyObject *filename,*/
32124         py_funcname,  /*PyObject *name,*/
32125         py_line,
32126         __pyx_empty_bytes  /*PyObject *lnotab*/
32127     );
32128     Py_DECREF(py_srcfile);
32129     Py_DECREF(py_funcname);
32130     return py_code;
32131 bad:
32132     Py_XDECREF(py_srcfile);
32133     Py_XDECREF(py_funcname);
32134     return NULL;
32135 }
__Pyx_AddTraceback(const char * funcname,int c_line,int py_line,const char * filename)32136 static void __Pyx_AddTraceback(const char *funcname, int c_line,
32137                                int py_line, const char *filename) {
32138     PyCodeObject *py_code = 0;
32139     PyFrameObject *py_frame = 0;
32140     PyThreadState *tstate = __Pyx_PyThreadState_Current;
32141     if (c_line) {
32142         c_line = __Pyx_CLineForTraceback(tstate, c_line);
32143     }
32144     py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
32145     if (!py_code) {
32146         py_code = __Pyx_CreateCodeObjectForTraceback(
32147             funcname, c_line, py_line, filename);
32148         if (!py_code) goto bad;
32149         __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
32150     }
32151     py_frame = PyFrame_New(
32152         tstate,            /*PyThreadState *tstate,*/
32153         py_code,           /*PyCodeObject *code,*/
32154         __pyx_d,    /*PyObject *globals,*/
32155         0                  /*PyObject *locals*/
32156     );
32157     if (!py_frame) goto bad;
32158     __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
32159     PyTraceBack_Here(py_frame);
32160 bad:
32161     Py_XDECREF(py_code);
32162     Py_XDECREF(py_frame);
32163 }
32164 
32165 #if PY_MAJOR_VERSION < 3
__Pyx_GetBuffer(PyObject * obj,Py_buffer * view,int flags)32166 static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
32167     if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags);
32168         if (__Pyx_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pw_5numpy_7ndarray_1__getbuffer__(obj, view, flags);
32169         if (__Pyx_TypeCheck(obj, __pyx_array_type)) return __pyx_array_getbuffer(obj, view, flags);
32170         if (__Pyx_TypeCheck(obj, __pyx_memoryview_type)) return __pyx_memoryview_getbuffer(obj, view, flags);
32171     PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name);
32172     return -1;
32173 }
__Pyx_ReleaseBuffer(Py_buffer * view)32174 static void __Pyx_ReleaseBuffer(Py_buffer *view) {
32175     PyObject *obj = view->obj;
32176     if (!obj) return;
32177     if (PyObject_CheckBuffer(obj)) {
32178         PyBuffer_Release(view);
32179         return;
32180     }
32181     if ((0)) {}
32182         else if (__Pyx_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) __pyx_pw_5numpy_7ndarray_3__releasebuffer__(obj, view);
32183     view->obj = NULL;
32184     Py_DECREF(obj);
32185 }
32186 #endif
32187 
32188 
32189   /* MemviewSliceIsContig */
32190   static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs,char order,int ndim)32191 __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
32192 {
32193     int i, index, step, start;
32194     Py_ssize_t itemsize = mvs.memview->view.itemsize;
32195     if (order == 'F') {
32196         step = 1;
32197         start = 0;
32198     } else {
32199         step = -1;
32200         start = ndim - 1;
32201     }
32202     for (i = 0; i < ndim; i++) {
32203         index = start + step * i;
32204         if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize)
32205             return 0;
32206         itemsize *= mvs.shape[index];
32207     }
32208     return 1;
32209 }
32210 
32211 /* OverlappingSlices */
32212   static void
__pyx_get_array_memory_extents(__Pyx_memviewslice * slice,void ** out_start,void ** out_end,int ndim,size_t itemsize)32213 __pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
32214                                void **out_start, void **out_end,
32215                                int ndim, size_t itemsize)
32216 {
32217     char *start, *end;
32218     int i;
32219     start = end = slice->data;
32220     for (i = 0; i < ndim; i++) {
32221         Py_ssize_t stride = slice->strides[i];
32222         Py_ssize_t extent = slice->shape[i];
32223         if (extent == 0) {
32224             *out_start = *out_end = start;
32225             return;
32226         } else {
32227             if (stride > 0)
32228                 end += stride * (extent - 1);
32229             else
32230                 start += stride * (extent - 1);
32231         }
32232     }
32233     *out_start = start;
32234     *out_end = end + itemsize;
32235 }
32236 static int
__pyx_slices_overlap(__Pyx_memviewslice * slice1,__Pyx_memviewslice * slice2,int ndim,size_t itemsize)32237 __pyx_slices_overlap(__Pyx_memviewslice *slice1,
32238                      __Pyx_memviewslice *slice2,
32239                      int ndim, size_t itemsize)
32240 {
32241     void *start1, *end1, *start2, *end2;
32242     __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize);
32243     __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize);
32244     return (start1 < end2) && (start2 < end1);
32245 }
32246 
32247 /* Capsule */
32248   static CYTHON_INLINE PyObject *
__pyx_capsule_create(void * p,CYTHON_UNUSED const char * sig)32249 __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
32250 {
32251     PyObject *cobj;
32252 #if PY_VERSION_HEX >= 0x02070000
32253     cobj = PyCapsule_New(p, sig, NULL);
32254 #else
32255     cobj = PyCObject_FromVoidPtr(p, NULL);
32256 #endif
32257     return cobj;
32258 }
32259 
32260 /* CIntFromPyVerify */
32261   #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
32262     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
32263 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
32264     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
32265 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
32266     {\
32267         func_type value = func_value;\
32268         if (sizeof(target_type) < sizeof(func_type)) {\
32269             if (unlikely(value != (func_type) (target_type) value)) {\
32270                 func_type zero = 0;\
32271                 if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
32272                     return (target_type) -1;\
32273                 if (is_unsigned && unlikely(value < zero))\
32274                     goto raise_neg_overflow;\
32275                 else\
32276                     goto raise_overflow;\
32277             }\
32278         }\
32279         return (target_type) value;\
32280     }
32281 
32282 /* CIntToPy */
__Pyx_PyInt_From_npy_uint32(npy_uint32 value)32283   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint32(npy_uint32 value) {
32284     const npy_uint32 neg_one = (npy_uint32) ((npy_uint32) 0 - (npy_uint32) 1), const_zero = (npy_uint32) 0;
32285     const int is_unsigned = neg_one > const_zero;
32286     if (is_unsigned) {
32287         if (sizeof(npy_uint32) < sizeof(long)) {
32288             return PyInt_FromLong((long) value);
32289         } else if (sizeof(npy_uint32) <= sizeof(unsigned long)) {
32290             return PyLong_FromUnsignedLong((unsigned long) value);
32291 #ifdef HAVE_LONG_LONG
32292         } else if (sizeof(npy_uint32) <= sizeof(unsigned PY_LONG_LONG)) {
32293             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32294 #endif
32295         }
32296     } else {
32297         if (sizeof(npy_uint32) <= sizeof(long)) {
32298             return PyInt_FromLong((long) value);
32299 #ifdef HAVE_LONG_LONG
32300         } else if (sizeof(npy_uint32) <= sizeof(PY_LONG_LONG)) {
32301             return PyLong_FromLongLong((PY_LONG_LONG) value);
32302 #endif
32303         }
32304     }
32305     {
32306         int one = 1; int little = (int)*(unsigned char *)&one;
32307         unsigned char *bytes = (unsigned char *)&value;
32308         return _PyLong_FromByteArray(bytes, sizeof(npy_uint32),
32309                                      little, !is_unsigned);
32310     }
32311 }
32312 
32313 /* CIntToPy */
__Pyx_PyInt_From_uint32_t(uint32_t value)32314   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value) {
32315     const uint32_t neg_one = (uint32_t) ((uint32_t) 0 - (uint32_t) 1), const_zero = (uint32_t) 0;
32316     const int is_unsigned = neg_one > const_zero;
32317     if (is_unsigned) {
32318         if (sizeof(uint32_t) < sizeof(long)) {
32319             return PyInt_FromLong((long) value);
32320         } else if (sizeof(uint32_t) <= sizeof(unsigned long)) {
32321             return PyLong_FromUnsignedLong((unsigned long) value);
32322 #ifdef HAVE_LONG_LONG
32323         } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
32324             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32325 #endif
32326         }
32327     } else {
32328         if (sizeof(uint32_t) <= sizeof(long)) {
32329             return PyInt_FromLong((long) value);
32330 #ifdef HAVE_LONG_LONG
32331         } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
32332             return PyLong_FromLongLong((PY_LONG_LONG) value);
32333 #endif
32334         }
32335     }
32336     {
32337         int one = 1; int little = (int)*(unsigned char *)&one;
32338         unsigned char *bytes = (unsigned char *)&value;
32339         return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
32340                                      little, !is_unsigned);
32341     }
32342 }
32343 
32344 /* CIntToPy */
__Pyx_PyInt_From_npy_uint64(npy_uint64 value)32345   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint64(npy_uint64 value) {
32346     const npy_uint64 neg_one = (npy_uint64) ((npy_uint64) 0 - (npy_uint64) 1), const_zero = (npy_uint64) 0;
32347     const int is_unsigned = neg_one > const_zero;
32348     if (is_unsigned) {
32349         if (sizeof(npy_uint64) < sizeof(long)) {
32350             return PyInt_FromLong((long) value);
32351         } else if (sizeof(npy_uint64) <= sizeof(unsigned long)) {
32352             return PyLong_FromUnsignedLong((unsigned long) value);
32353 #ifdef HAVE_LONG_LONG
32354         } else if (sizeof(npy_uint64) <= sizeof(unsigned PY_LONG_LONG)) {
32355             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32356 #endif
32357         }
32358     } else {
32359         if (sizeof(npy_uint64) <= sizeof(long)) {
32360             return PyInt_FromLong((long) value);
32361 #ifdef HAVE_LONG_LONG
32362         } else if (sizeof(npy_uint64) <= sizeof(PY_LONG_LONG)) {
32363             return PyLong_FromLongLong((PY_LONG_LONG) value);
32364 #endif
32365         }
32366     }
32367     {
32368         int one = 1; int little = (int)*(unsigned char *)&one;
32369         unsigned char *bytes = (unsigned char *)&value;
32370         return _PyLong_FromByteArray(bytes, sizeof(npy_uint64),
32371                                      little, !is_unsigned);
32372     }
32373 }
32374 
32375 /* MemviewDtypeToObject */
__pyx_memview_get_nn_bool(const char * itemp)32376   static CYTHON_INLINE PyObject *__pyx_memview_get_nn_bool(const char *itemp) {
32377     return (PyObject *) __Pyx_PyBool_FromLong(*(bool *) itemp);
32378 }
__pyx_memview_set_nn_bool(const char * itemp,PyObject * obj)32379 static CYTHON_INLINE int __pyx_memview_set_nn_bool(const char *itemp, PyObject *obj) {
32380     bool value = __Pyx_PyObject_IsTrue(obj);
32381     if ((value == ((bool)-1)) && PyErr_Occurred())
32382         return 0;
32383     *(bool *) itemp = value;
32384     return 1;
32385 }
32386 
32387 /* MemviewDtypeToObject */
__pyx_memview_get_nn___pyx_t_5numpy_float64_t(const char * itemp)32388   static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_float64_t(const char *itemp) {
32389     return (PyObject *) PyFloat_FromDouble(*(__pyx_t_5numpy_float64_t *) itemp);
32390 }
__pyx_memview_set_nn___pyx_t_5numpy_float64_t(const char * itemp,PyObject * obj)32391 static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_float64_t(const char *itemp, PyObject *obj) {
32392     __pyx_t_5numpy_float64_t value = __pyx_PyFloat_AsDouble(obj);
32393     if ((value == ((npy_float64)-1)) && PyErr_Occurred())
32394         return 0;
32395     *(__pyx_t_5numpy_float64_t *) itemp = value;
32396     return 1;
32397 }
32398 
32399 /* CIntToPy */
__Pyx_PyInt_From_uint64_t(uint64_t value)32400   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint64_t(uint64_t value) {
32401     const uint64_t neg_one = (uint64_t) ((uint64_t) 0 - (uint64_t) 1), const_zero = (uint64_t) 0;
32402     const int is_unsigned = neg_one > const_zero;
32403     if (is_unsigned) {
32404         if (sizeof(uint64_t) < sizeof(long)) {
32405             return PyInt_FromLong((long) value);
32406         } else if (sizeof(uint64_t) <= sizeof(unsigned long)) {
32407             return PyLong_FromUnsignedLong((unsigned long) value);
32408 #ifdef HAVE_LONG_LONG
32409         } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
32410             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32411 #endif
32412         }
32413     } else {
32414         if (sizeof(uint64_t) <= sizeof(long)) {
32415             return PyInt_FromLong((long) value);
32416 #ifdef HAVE_LONG_LONG
32417         } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
32418             return PyLong_FromLongLong((PY_LONG_LONG) value);
32419 #endif
32420         }
32421     }
32422     {
32423         int one = 1; int little = (int)*(unsigned char *)&one;
32424         unsigned char *bytes = (unsigned char *)&value;
32425         return _PyLong_FromByteArray(bytes, sizeof(uint64_t),
32426                                      little, !is_unsigned);
32427     }
32428 }
32429 
32430 /* CIntToPy */
__Pyx_PyInt_From_int64_t(int64_t value)32431   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int64_t(int64_t value) {
32432     const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0;
32433     const int is_unsigned = neg_one > const_zero;
32434     if (is_unsigned) {
32435         if (sizeof(int64_t) < sizeof(long)) {
32436             return PyInt_FromLong((long) value);
32437         } else if (sizeof(int64_t) <= sizeof(unsigned long)) {
32438             return PyLong_FromUnsignedLong((unsigned long) value);
32439 #ifdef HAVE_LONG_LONG
32440         } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
32441             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32442 #endif
32443         }
32444     } else {
32445         if (sizeof(int64_t) <= sizeof(long)) {
32446             return PyInt_FromLong((long) value);
32447 #ifdef HAVE_LONG_LONG
32448         } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
32449             return PyLong_FromLongLong((PY_LONG_LONG) value);
32450 #endif
32451         }
32452     }
32453     {
32454         int one = 1; int little = (int)*(unsigned char *)&one;
32455         unsigned char *bytes = (unsigned char *)&value;
32456         return _PyLong_FromByteArray(bytes, sizeof(int64_t),
32457                                      little, !is_unsigned);
32458     }
32459 }
32460 
32461 /* MemviewDtypeToObject */
__pyx_memview_get_nn_uint64_t(const char * itemp)32462   static CYTHON_INLINE PyObject *__pyx_memview_get_nn_uint64_t(const char *itemp) {
32463     return (PyObject *) __Pyx_PyInt_From_uint64_t(*(uint64_t *) itemp);
32464 }
__pyx_memview_set_nn_uint64_t(const char * itemp,PyObject * obj)32465 static CYTHON_INLINE int __pyx_memview_set_nn_uint64_t(const char *itemp, PyObject *obj) {
32466     uint64_t value = __Pyx_PyInt_As_uint64_t(obj);
32467     if ((value == ((uint64_t)-1)) && PyErr_Occurred())
32468         return 0;
32469     *(uint64_t *) itemp = value;
32470     return 1;
32471 }
32472 
32473 /* Declarations */
32474   #if CYTHON_CCOMPLEX
32475   #ifdef __cplusplus
__pyx_t_float_complex_from_parts(float x,float y)32476     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
32477       return ::std::complex< float >(x, y);
32478     }
32479   #else
__pyx_t_float_complex_from_parts(float x,float y)32480     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
32481       return x + y*(__pyx_t_float_complex)_Complex_I;
32482     }
32483   #endif
32484 #else
__pyx_t_float_complex_from_parts(float x,float y)32485     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
32486       __pyx_t_float_complex z;
32487       z.real = x;
32488       z.imag = y;
32489       return z;
32490     }
32491 #endif
32492 
32493 /* Arithmetic */
32494   #if CYTHON_CCOMPLEX
32495 #else
__Pyx_c_eq_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32496     static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32497        return (a.real == b.real) && (a.imag == b.imag);
32498     }
__Pyx_c_sum_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32499     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32500         __pyx_t_float_complex z;
32501         z.real = a.real + b.real;
32502         z.imag = a.imag + b.imag;
32503         return z;
32504     }
__Pyx_c_diff_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32505     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32506         __pyx_t_float_complex z;
32507         z.real = a.real - b.real;
32508         z.imag = a.imag - b.imag;
32509         return z;
32510     }
__Pyx_c_prod_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32511     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32512         __pyx_t_float_complex z;
32513         z.real = a.real * b.real - a.imag * b.imag;
32514         z.imag = a.real * b.imag + a.imag * b.real;
32515         return z;
32516     }
32517     #if 1
__Pyx_c_quot_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32518     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32519         if (b.imag == 0) {
32520             return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
32521         } else if (fabsf(b.real) >= fabsf(b.imag)) {
32522             if (b.real == 0 && b.imag == 0) {
32523                 return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
32524             } else {
32525                 float r = b.imag / b.real;
32526                 float s = (float)(1.0) / (b.real + b.imag * r);
32527                 return __pyx_t_float_complex_from_parts(
32528                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
32529             }
32530         } else {
32531             float r = b.real / b.imag;
32532             float s = (float)(1.0) / (b.imag + b.real * r);
32533             return __pyx_t_float_complex_from_parts(
32534                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
32535         }
32536     }
32537     #else
__Pyx_c_quot_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32538     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32539         if (b.imag == 0) {
32540             return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
32541         } else {
32542             float denom = b.real * b.real + b.imag * b.imag;
32543             return __pyx_t_float_complex_from_parts(
32544                 (a.real * b.real + a.imag * b.imag) / denom,
32545                 (a.imag * b.real - a.real * b.imag) / denom);
32546         }
32547     }
32548     #endif
__Pyx_c_neg_float(__pyx_t_float_complex a)32549     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
32550         __pyx_t_float_complex z;
32551         z.real = -a.real;
32552         z.imag = -a.imag;
32553         return z;
32554     }
__Pyx_c_is_zero_float(__pyx_t_float_complex a)32555     static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
32556        return (a.real == 0) && (a.imag == 0);
32557     }
__Pyx_c_conj_float(__pyx_t_float_complex a)32558     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
32559         __pyx_t_float_complex z;
32560         z.real =  a.real;
32561         z.imag = -a.imag;
32562         return z;
32563     }
32564     #if 1
__Pyx_c_abs_float(__pyx_t_float_complex z)32565         static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
32566           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
32567             return sqrtf(z.real*z.real + z.imag*z.imag);
32568           #else
32569             return hypotf(z.real, z.imag);
32570           #endif
32571         }
__Pyx_c_pow_float(__pyx_t_float_complex a,__pyx_t_float_complex b)32572         static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
32573             __pyx_t_float_complex z;
32574             float r, lnr, theta, z_r, z_theta;
32575             if (b.imag == 0 && b.real == (int)b.real) {
32576                 if (b.real < 0) {
32577                     float denom = a.real * a.real + a.imag * a.imag;
32578                     a.real = a.real / denom;
32579                     a.imag = -a.imag / denom;
32580                     b.real = -b.real;
32581                 }
32582                 switch ((int)b.real) {
32583                     case 0:
32584                         z.real = 1;
32585                         z.imag = 0;
32586                         return z;
32587                     case 1:
32588                         return a;
32589                     case 2:
32590                         z = __Pyx_c_prod_float(a, a);
32591                         return __Pyx_c_prod_float(a, a);
32592                     case 3:
32593                         z = __Pyx_c_prod_float(a, a);
32594                         return __Pyx_c_prod_float(z, a);
32595                     case 4:
32596                         z = __Pyx_c_prod_float(a, a);
32597                         return __Pyx_c_prod_float(z, z);
32598                 }
32599             }
32600             if (a.imag == 0) {
32601                 if (a.real == 0) {
32602                     return a;
32603                 } else if (b.imag == 0) {
32604                     z.real = powf(a.real, b.real);
32605                     z.imag = 0;
32606                     return z;
32607                 } else if (a.real > 0) {
32608                     r = a.real;
32609                     theta = 0;
32610                 } else {
32611                     r = -a.real;
32612                     theta = atan2f(0.0, -1.0);
32613                 }
32614             } else {
32615                 r = __Pyx_c_abs_float(a);
32616                 theta = atan2f(a.imag, a.real);
32617             }
32618             lnr = logf(r);
32619             z_r = expf(lnr * b.real - theta * b.imag);
32620             z_theta = theta * b.real + lnr * b.imag;
32621             z.real = z_r * cosf(z_theta);
32622             z.imag = z_r * sinf(z_theta);
32623             return z;
32624         }
32625     #endif
32626 #endif
32627 
32628 /* Declarations */
32629   #if CYTHON_CCOMPLEX
32630   #ifdef __cplusplus
__pyx_t_double_complex_from_parts(double x,double y)32631     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
32632       return ::std::complex< double >(x, y);
32633     }
32634   #else
__pyx_t_double_complex_from_parts(double x,double y)32635     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
32636       return x + y*(__pyx_t_double_complex)_Complex_I;
32637     }
32638   #endif
32639 #else
__pyx_t_double_complex_from_parts(double x,double y)32640     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
32641       __pyx_t_double_complex z;
32642       z.real = x;
32643       z.imag = y;
32644       return z;
32645     }
32646 #endif
32647 
32648 /* Arithmetic */
32649   #if CYTHON_CCOMPLEX
32650 #else
__Pyx_c_eq_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32651     static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32652        return (a.real == b.real) && (a.imag == b.imag);
32653     }
__Pyx_c_sum_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32654     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32655         __pyx_t_double_complex z;
32656         z.real = a.real + b.real;
32657         z.imag = a.imag + b.imag;
32658         return z;
32659     }
__Pyx_c_diff_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32660     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32661         __pyx_t_double_complex z;
32662         z.real = a.real - b.real;
32663         z.imag = a.imag - b.imag;
32664         return z;
32665     }
__Pyx_c_prod_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32666     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32667         __pyx_t_double_complex z;
32668         z.real = a.real * b.real - a.imag * b.imag;
32669         z.imag = a.real * b.imag + a.imag * b.real;
32670         return z;
32671     }
32672     #if 1
__Pyx_c_quot_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32673     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32674         if (b.imag == 0) {
32675             return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
32676         } else if (fabs(b.real) >= fabs(b.imag)) {
32677             if (b.real == 0 && b.imag == 0) {
32678                 return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
32679             } else {
32680                 double r = b.imag / b.real;
32681                 double s = (double)(1.0) / (b.real + b.imag * r);
32682                 return __pyx_t_double_complex_from_parts(
32683                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
32684             }
32685         } else {
32686             double r = b.real / b.imag;
32687             double s = (double)(1.0) / (b.imag + b.real * r);
32688             return __pyx_t_double_complex_from_parts(
32689                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
32690         }
32691     }
32692     #else
__Pyx_c_quot_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32693     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32694         if (b.imag == 0) {
32695             return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
32696         } else {
32697             double denom = b.real * b.real + b.imag * b.imag;
32698             return __pyx_t_double_complex_from_parts(
32699                 (a.real * b.real + a.imag * b.imag) / denom,
32700                 (a.imag * b.real - a.real * b.imag) / denom);
32701         }
32702     }
32703     #endif
__Pyx_c_neg_double(__pyx_t_double_complex a)32704     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
32705         __pyx_t_double_complex z;
32706         z.real = -a.real;
32707         z.imag = -a.imag;
32708         return z;
32709     }
__Pyx_c_is_zero_double(__pyx_t_double_complex a)32710     static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
32711        return (a.real == 0) && (a.imag == 0);
32712     }
__Pyx_c_conj_double(__pyx_t_double_complex a)32713     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
32714         __pyx_t_double_complex z;
32715         z.real =  a.real;
32716         z.imag = -a.imag;
32717         return z;
32718     }
32719     #if 1
__Pyx_c_abs_double(__pyx_t_double_complex z)32720         static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
32721           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
32722             return sqrt(z.real*z.real + z.imag*z.imag);
32723           #else
32724             return hypot(z.real, z.imag);
32725           #endif
32726         }
__Pyx_c_pow_double(__pyx_t_double_complex a,__pyx_t_double_complex b)32727         static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
32728             __pyx_t_double_complex z;
32729             double r, lnr, theta, z_r, z_theta;
32730             if (b.imag == 0 && b.real == (int)b.real) {
32731                 if (b.real < 0) {
32732                     double denom = a.real * a.real + a.imag * a.imag;
32733                     a.real = a.real / denom;
32734                     a.imag = -a.imag / denom;
32735                     b.real = -b.real;
32736                 }
32737                 switch ((int)b.real) {
32738                     case 0:
32739                         z.real = 1;
32740                         z.imag = 0;
32741                         return z;
32742                     case 1:
32743                         return a;
32744                     case 2:
32745                         z = __Pyx_c_prod_double(a, a);
32746                         return __Pyx_c_prod_double(a, a);
32747                     case 3:
32748                         z = __Pyx_c_prod_double(a, a);
32749                         return __Pyx_c_prod_double(z, a);
32750                     case 4:
32751                         z = __Pyx_c_prod_double(a, a);
32752                         return __Pyx_c_prod_double(z, z);
32753                 }
32754             }
32755             if (a.imag == 0) {
32756                 if (a.real == 0) {
32757                     return a;
32758                 } else if (b.imag == 0) {
32759                     z.real = pow(a.real, b.real);
32760                     z.imag = 0;
32761                     return z;
32762                 } else if (a.real > 0) {
32763                     r = a.real;
32764                     theta = 0;
32765                 } else {
32766                     r = -a.real;
32767                     theta = atan2(0.0, -1.0);
32768                 }
32769             } else {
32770                 r = __Pyx_c_abs_double(a);
32771                 theta = atan2(a.imag, a.real);
32772             }
32773             lnr = log(r);
32774             z_r = exp(lnr * b.real - theta * b.imag);
32775             z_theta = theta * b.real + lnr * b.imag;
32776             z.real = z_r * cos(z_theta);
32777             z.imag = z_r * sin(z_theta);
32778             return z;
32779         }
32780     #endif
32781 #endif
32782 
32783 /* CIntToPy */
__Pyx_PyInt_From_int(int value)32784   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
32785     const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
32786     const int is_unsigned = neg_one > const_zero;
32787     if (is_unsigned) {
32788         if (sizeof(int) < sizeof(long)) {
32789             return PyInt_FromLong((long) value);
32790         } else if (sizeof(int) <= sizeof(unsigned long)) {
32791             return PyLong_FromUnsignedLong((unsigned long) value);
32792 #ifdef HAVE_LONG_LONG
32793         } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
32794             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32795 #endif
32796         }
32797     } else {
32798         if (sizeof(int) <= sizeof(long)) {
32799             return PyInt_FromLong((long) value);
32800 #ifdef HAVE_LONG_LONG
32801         } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
32802             return PyLong_FromLongLong((PY_LONG_LONG) value);
32803 #endif
32804         }
32805     }
32806     {
32807         int one = 1; int little = (int)*(unsigned char *)&one;
32808         unsigned char *bytes = (unsigned char *)&value;
32809         return _PyLong_FromByteArray(bytes, sizeof(int),
32810                                      little, !is_unsigned);
32811     }
32812 }
32813 
32814 /* CIntToPy */
__Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value)32815   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
32816     const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
32817     const int is_unsigned = neg_one > const_zero;
32818     if (is_unsigned) {
32819         if (sizeof(enum NPY_TYPES) < sizeof(long)) {
32820             return PyInt_FromLong((long) value);
32821         } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) {
32822             return PyLong_FromUnsignedLong((unsigned long) value);
32823 #ifdef HAVE_LONG_LONG
32824         } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) {
32825             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
32826 #endif
32827         }
32828     } else {
32829         if (sizeof(enum NPY_TYPES) <= sizeof(long)) {
32830             return PyInt_FromLong((long) value);
32831 #ifdef HAVE_LONG_LONG
32832         } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) {
32833             return PyLong_FromLongLong((PY_LONG_LONG) value);
32834 #endif
32835         }
32836     }
32837     {
32838         int one = 1; int little = (int)*(unsigned char *)&one;
32839         unsigned char *bytes = (unsigned char *)&value;
32840         return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES),
32841                                      little, !is_unsigned);
32842     }
32843 }
32844 
32845 /* MemviewSliceCopyTemplate */
32846   static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice * from_mvs,const char * mode,int ndim,size_t sizeof_dtype,int contig_flag,int dtype_is_object)32847 __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
32848                                  const char *mode, int ndim,
32849                                  size_t sizeof_dtype, int contig_flag,
32850                                  int dtype_is_object)
32851 {
32852     __Pyx_RefNannyDeclarations
32853     int i;
32854     __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } };
32855     struct __pyx_memoryview_obj *from_memview = from_mvs->memview;
32856     Py_buffer *buf = &from_memview->view;
32857     PyObject *shape_tuple = NULL;
32858     PyObject *temp_int = NULL;
32859     struct __pyx_array_obj *array_obj = NULL;
32860     struct __pyx_memoryview_obj *memview_obj = NULL;
32861     __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0);
32862     for (i = 0; i < ndim; i++) {
32863         if (from_mvs->suboffsets[i] >= 0) {
32864             PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with "
32865                                            "indirect dimensions (axis %d)", i);
32866             goto fail;
32867         }
32868     }
32869     shape_tuple = PyTuple_New(ndim);
32870     if (unlikely(!shape_tuple)) {
32871         goto fail;
32872     }
32873     __Pyx_GOTREF(shape_tuple);
32874     for(i = 0; i < ndim; i++) {
32875         temp_int = PyInt_FromSsize_t(from_mvs->shape[i]);
32876         if(unlikely(!temp_int)) {
32877             goto fail;
32878         } else {
32879             PyTuple_SET_ITEM(shape_tuple, i, temp_int);
32880             temp_int = NULL;
32881         }
32882     }
32883     array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, (char *) mode, NULL);
32884     if (unlikely(!array_obj)) {
32885         goto fail;
32886     }
32887     __Pyx_GOTREF(array_obj);
32888     memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new(
32889                                     (PyObject *) array_obj, contig_flag,
32890                                     dtype_is_object,
32891                                     from_mvs->memview->typeinfo);
32892     if (unlikely(!memview_obj))
32893         goto fail;
32894     if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0))
32895         goto fail;
32896     if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim,
32897                                                 dtype_is_object) < 0))
32898         goto fail;
32899     goto no_fail;
32900 fail:
32901     __Pyx_XDECREF(new_mvs.memview);
32902     new_mvs.memview = NULL;
32903     new_mvs.data = NULL;
32904 no_fail:
32905     __Pyx_XDECREF(shape_tuple);
32906     __Pyx_XDECREF(temp_int);
32907     __Pyx_XDECREF(array_obj);
32908     __Pyx_RefNannyFinishContext();
32909     return new_mvs;
32910 }
32911 
32912 /* TypeInfoToFormat */
__Pyx_TypeInfoToFormat(__Pyx_TypeInfo * type)32913   static struct __pyx_typeinfo_string __Pyx_TypeInfoToFormat(__Pyx_TypeInfo *type) {
32914     struct __pyx_typeinfo_string result = { {0} };
32915     char *buf = (char *) result.string;
32916     size_t size = type->size;
32917     switch (type->typegroup) {
32918         case 'H':
32919             *buf = 'c';
32920             break;
32921         case 'I':
32922         case 'U':
32923             if (size == 1)
32924                 *buf = (type->is_unsigned) ? 'B' : 'b';
32925             else if (size == 2)
32926                 *buf = (type->is_unsigned) ? 'H' : 'h';
32927             else if (size == 4)
32928                 *buf = (type->is_unsigned) ? 'I' : 'i';
32929             else if (size == 8)
32930                 *buf = (type->is_unsigned) ? 'Q' : 'q';
32931             break;
32932         case 'P':
32933             *buf = 'P';
32934             break;
32935         case 'C':
32936          {
32937             __Pyx_TypeInfo complex_type = *type;
32938             complex_type.typegroup = 'R';
32939             complex_type.size /= 2;
32940             *buf++ = 'Z';
32941             *buf = __Pyx_TypeInfoToFormat(&complex_type).string[0];
32942             break;
32943          }
32944         case 'R':
32945             if (size == 4)
32946                 *buf = 'f';
32947             else if (size == 8)
32948                 *buf = 'd';
32949             else
32950                 *buf = 'g';
32951             break;
32952     }
32953     return result;
32954 }
32955 
32956 /* CIntFromPy */
__Pyx_PyInt_As_int(PyObject * x)32957   static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
32958     const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
32959     const int is_unsigned = neg_one > const_zero;
32960 #if PY_MAJOR_VERSION < 3
32961     if (likely(PyInt_Check(x))) {
32962         if (sizeof(int) < sizeof(long)) {
32963             __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
32964         } else {
32965             long val = PyInt_AS_LONG(x);
32966             if (is_unsigned && unlikely(val < 0)) {
32967                 goto raise_neg_overflow;
32968             }
32969             return (int) val;
32970         }
32971     } else
32972 #endif
32973     if (likely(PyLong_Check(x))) {
32974         if (is_unsigned) {
32975 #if CYTHON_USE_PYLONG_INTERNALS
32976             const digit* digits = ((PyLongObject*)x)->ob_digit;
32977             switch (Py_SIZE(x)) {
32978                 case  0: return (int) 0;
32979                 case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
32980                 case 2:
32981                     if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
32982                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
32983                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
32984                         } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
32985                             return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
32986                         }
32987                     }
32988                     break;
32989                 case 3:
32990                     if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
32991                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
32992                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
32993                         } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
32994                             return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
32995                         }
32996                     }
32997                     break;
32998                 case 4:
32999                     if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
33000                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33001                             __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])))
33002                         } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
33003                             return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
33004                         }
33005                     }
33006                     break;
33007             }
33008 #endif
33009 #if CYTHON_COMPILING_IN_CPYTHON
33010             if (unlikely(Py_SIZE(x) < 0)) {
33011                 goto raise_neg_overflow;
33012             }
33013 #else
33014             {
33015                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
33016                 if (unlikely(result < 0))
33017                     return (int) -1;
33018                 if (unlikely(result == 1))
33019                     goto raise_neg_overflow;
33020             }
33021 #endif
33022             if (sizeof(int) <= sizeof(unsigned long)) {
33023                 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
33024 #ifdef HAVE_LONG_LONG
33025             } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
33026                 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
33027 #endif
33028             }
33029         } else {
33030 #if CYTHON_USE_PYLONG_INTERNALS
33031             const digit* digits = ((PyLongObject*)x)->ob_digit;
33032             switch (Py_SIZE(x)) {
33033                 case  0: return (int) 0;
33034                 case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
33035                 case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
33036                 case -2:
33037                     if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
33038                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33039                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33040                         } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
33041                             return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
33042                         }
33043                     }
33044                     break;
33045                 case 2:
33046                     if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
33047                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33048                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33049                         } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
33050                             return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
33051                         }
33052                     }
33053                     break;
33054                 case -3:
33055                     if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
33056                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33057                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33058                         } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
33059                             return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
33060                         }
33061                     }
33062                     break;
33063                 case 3:
33064                     if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
33065                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33066                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33067                         } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
33068                             return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
33069                         }
33070                     }
33071                     break;
33072                 case -4:
33073                     if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
33074                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33075                             __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])))
33076                         } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
33077                             return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
33078                         }
33079                     }
33080                     break;
33081                 case 4:
33082                     if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
33083                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33084                             __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])))
33085                         } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
33086                             return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
33087                         }
33088                     }
33089                     break;
33090             }
33091 #endif
33092             if (sizeof(int) <= sizeof(long)) {
33093                 __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
33094 #ifdef HAVE_LONG_LONG
33095             } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
33096                 __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
33097 #endif
33098             }
33099         }
33100         {
33101 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
33102             PyErr_SetString(PyExc_RuntimeError,
33103                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
33104 #else
33105             int val;
33106             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
33107  #if PY_MAJOR_VERSION < 3
33108             if (likely(v) && !PyLong_Check(v)) {
33109                 PyObject *tmp = v;
33110                 v = PyNumber_Long(tmp);
33111                 Py_DECREF(tmp);
33112             }
33113  #endif
33114             if (likely(v)) {
33115                 int one = 1; int is_little = (int)*(unsigned char *)&one;
33116                 unsigned char *bytes = (unsigned char *)&val;
33117                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
33118                                               bytes, sizeof(val),
33119                                               is_little, !is_unsigned);
33120                 Py_DECREF(v);
33121                 if (likely(!ret))
33122                     return val;
33123             }
33124 #endif
33125             return (int) -1;
33126         }
33127     } else {
33128         int val;
33129         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
33130         if (!tmp) return (int) -1;
33131         val = __Pyx_PyInt_As_int(tmp);
33132         Py_DECREF(tmp);
33133         return val;
33134     }
33135 raise_overflow:
33136     PyErr_SetString(PyExc_OverflowError,
33137         "value too large to convert to int");
33138     return (int) -1;
33139 raise_neg_overflow:
33140     PyErr_SetString(PyExc_OverflowError,
33141         "can't convert negative value to int");
33142     return (int) -1;
33143 }
33144 
33145 /* CIntFromPy */
__Pyx_PyInt_As_npy_uint32(PyObject * x)33146   static CYTHON_INLINE npy_uint32 __Pyx_PyInt_As_npy_uint32(PyObject *x) {
33147     const npy_uint32 neg_one = (npy_uint32) ((npy_uint32) 0 - (npy_uint32) 1), const_zero = (npy_uint32) 0;
33148     const int is_unsigned = neg_one > const_zero;
33149 #if PY_MAJOR_VERSION < 3
33150     if (likely(PyInt_Check(x))) {
33151         if (sizeof(npy_uint32) < sizeof(long)) {
33152             __PYX_VERIFY_RETURN_INT(npy_uint32, long, PyInt_AS_LONG(x))
33153         } else {
33154             long val = PyInt_AS_LONG(x);
33155             if (is_unsigned && unlikely(val < 0)) {
33156                 goto raise_neg_overflow;
33157             }
33158             return (npy_uint32) val;
33159         }
33160     } else
33161 #endif
33162     if (likely(PyLong_Check(x))) {
33163         if (is_unsigned) {
33164 #if CYTHON_USE_PYLONG_INTERNALS
33165             const digit* digits = ((PyLongObject*)x)->ob_digit;
33166             switch (Py_SIZE(x)) {
33167                 case  0: return (npy_uint32) 0;
33168                 case  1: __PYX_VERIFY_RETURN_INT(npy_uint32, digit, digits[0])
33169                 case 2:
33170                     if (8 * sizeof(npy_uint32) > 1 * PyLong_SHIFT) {
33171                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33172                             __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33173                         } else if (8 * sizeof(npy_uint32) >= 2 * PyLong_SHIFT) {
33174                             return (npy_uint32) (((((npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0]));
33175                         }
33176                     }
33177                     break;
33178                 case 3:
33179                     if (8 * sizeof(npy_uint32) > 2 * PyLong_SHIFT) {
33180                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33181                             __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33182                         } else if (8 * sizeof(npy_uint32) >= 3 * PyLong_SHIFT) {
33183                             return (npy_uint32) (((((((npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0]));
33184                         }
33185                     }
33186                     break;
33187                 case 4:
33188                     if (8 * sizeof(npy_uint32) > 3 * PyLong_SHIFT) {
33189                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33190                             __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33191                         } else if (8 * sizeof(npy_uint32) >= 4 * PyLong_SHIFT) {
33192                             return (npy_uint32) (((((((((npy_uint32)digits[3]) << PyLong_SHIFT) | (npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0]));
33193                         }
33194                     }
33195                     break;
33196             }
33197 #endif
33198 #if CYTHON_COMPILING_IN_CPYTHON
33199             if (unlikely(Py_SIZE(x) < 0)) {
33200                 goto raise_neg_overflow;
33201             }
33202 #else
33203             {
33204                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
33205                 if (unlikely(result < 0))
33206                     return (npy_uint32) -1;
33207                 if (unlikely(result == 1))
33208                     goto raise_neg_overflow;
33209             }
33210 #endif
33211             if (sizeof(npy_uint32) <= sizeof(unsigned long)) {
33212                 __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, unsigned long, PyLong_AsUnsignedLong(x))
33213 #ifdef HAVE_LONG_LONG
33214             } else if (sizeof(npy_uint32) <= sizeof(unsigned PY_LONG_LONG)) {
33215                 __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
33216 #endif
33217             }
33218         } else {
33219 #if CYTHON_USE_PYLONG_INTERNALS
33220             const digit* digits = ((PyLongObject*)x)->ob_digit;
33221             switch (Py_SIZE(x)) {
33222                 case  0: return (npy_uint32) 0;
33223                 case -1: __PYX_VERIFY_RETURN_INT(npy_uint32, sdigit, (sdigit) (-(sdigit)digits[0]))
33224                 case  1: __PYX_VERIFY_RETURN_INT(npy_uint32,  digit, +digits[0])
33225                 case -2:
33226                     if (8 * sizeof(npy_uint32) - 1 > 1 * PyLong_SHIFT) {
33227                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33228                             __PYX_VERIFY_RETURN_INT(npy_uint32, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33229                         } else if (8 * sizeof(npy_uint32) - 1 > 2 * PyLong_SHIFT) {
33230                             return (npy_uint32) (((npy_uint32)-1)*(((((npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
33231                         }
33232                     }
33233                     break;
33234                 case 2:
33235                     if (8 * sizeof(npy_uint32) > 1 * PyLong_SHIFT) {
33236                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33237                             __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33238                         } else if (8 * sizeof(npy_uint32) - 1 > 2 * PyLong_SHIFT) {
33239                             return (npy_uint32) ((((((npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
33240                         }
33241                     }
33242                     break;
33243                 case -3:
33244                     if (8 * sizeof(npy_uint32) - 1 > 2 * PyLong_SHIFT) {
33245                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33246                             __PYX_VERIFY_RETURN_INT(npy_uint32, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33247                         } else if (8 * sizeof(npy_uint32) - 1 > 3 * PyLong_SHIFT) {
33248                             return (npy_uint32) (((npy_uint32)-1)*(((((((npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
33249                         }
33250                     }
33251                     break;
33252                 case 3:
33253                     if (8 * sizeof(npy_uint32) > 2 * PyLong_SHIFT) {
33254                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33255                             __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33256                         } else if (8 * sizeof(npy_uint32) - 1 > 3 * PyLong_SHIFT) {
33257                             return (npy_uint32) ((((((((npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
33258                         }
33259                     }
33260                     break;
33261                 case -4:
33262                     if (8 * sizeof(npy_uint32) - 1 > 3 * PyLong_SHIFT) {
33263                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33264                             __PYX_VERIFY_RETURN_INT(npy_uint32, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33265                         } else if (8 * sizeof(npy_uint32) - 1 > 4 * PyLong_SHIFT) {
33266                             return (npy_uint32) (((npy_uint32)-1)*(((((((((npy_uint32)digits[3]) << PyLong_SHIFT) | (npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
33267                         }
33268                     }
33269                     break;
33270                 case 4:
33271                     if (8 * sizeof(npy_uint32) > 3 * PyLong_SHIFT) {
33272                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33273                             __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33274                         } else if (8 * sizeof(npy_uint32) - 1 > 4 * PyLong_SHIFT) {
33275                             return (npy_uint32) ((((((((((npy_uint32)digits[3]) << PyLong_SHIFT) | (npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
33276                         }
33277                     }
33278                     break;
33279             }
33280 #endif
33281             if (sizeof(npy_uint32) <= sizeof(long)) {
33282                 __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, long, PyLong_AsLong(x))
33283 #ifdef HAVE_LONG_LONG
33284             } else if (sizeof(npy_uint32) <= sizeof(PY_LONG_LONG)) {
33285                 __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, PY_LONG_LONG, PyLong_AsLongLong(x))
33286 #endif
33287             }
33288         }
33289         {
33290 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
33291             PyErr_SetString(PyExc_RuntimeError,
33292                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
33293 #else
33294             npy_uint32 val;
33295             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
33296  #if PY_MAJOR_VERSION < 3
33297             if (likely(v) && !PyLong_Check(v)) {
33298                 PyObject *tmp = v;
33299                 v = PyNumber_Long(tmp);
33300                 Py_DECREF(tmp);
33301             }
33302  #endif
33303             if (likely(v)) {
33304                 int one = 1; int is_little = (int)*(unsigned char *)&one;
33305                 unsigned char *bytes = (unsigned char *)&val;
33306                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
33307                                               bytes, sizeof(val),
33308                                               is_little, !is_unsigned);
33309                 Py_DECREF(v);
33310                 if (likely(!ret))
33311                     return val;
33312             }
33313 #endif
33314             return (npy_uint32) -1;
33315         }
33316     } else {
33317         npy_uint32 val;
33318         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
33319         if (!tmp) return (npy_uint32) -1;
33320         val = __Pyx_PyInt_As_npy_uint32(tmp);
33321         Py_DECREF(tmp);
33322         return val;
33323     }
33324 raise_overflow:
33325     PyErr_SetString(PyExc_OverflowError,
33326         "value too large to convert to npy_uint32");
33327     return (npy_uint32) -1;
33328 raise_neg_overflow:
33329     PyErr_SetString(PyExc_OverflowError,
33330         "can't convert negative value to npy_uint32");
33331     return (npy_uint32) -1;
33332 }
33333 
33334 /* CIntFromPy */
__Pyx_PyInt_As_uint64_t(PyObject * x)33335   static CYTHON_INLINE uint64_t __Pyx_PyInt_As_uint64_t(PyObject *x) {
33336     const uint64_t neg_one = (uint64_t) ((uint64_t) 0 - (uint64_t) 1), const_zero = (uint64_t) 0;
33337     const int is_unsigned = neg_one > const_zero;
33338 #if PY_MAJOR_VERSION < 3
33339     if (likely(PyInt_Check(x))) {
33340         if (sizeof(uint64_t) < sizeof(long)) {
33341             __PYX_VERIFY_RETURN_INT(uint64_t, long, PyInt_AS_LONG(x))
33342         } else {
33343             long val = PyInt_AS_LONG(x);
33344             if (is_unsigned && unlikely(val < 0)) {
33345                 goto raise_neg_overflow;
33346             }
33347             return (uint64_t) val;
33348         }
33349     } else
33350 #endif
33351     if (likely(PyLong_Check(x))) {
33352         if (is_unsigned) {
33353 #if CYTHON_USE_PYLONG_INTERNALS
33354             const digit* digits = ((PyLongObject*)x)->ob_digit;
33355             switch (Py_SIZE(x)) {
33356                 case  0: return (uint64_t) 0;
33357                 case  1: __PYX_VERIFY_RETURN_INT(uint64_t, digit, digits[0])
33358                 case 2:
33359                     if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
33360                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33361                             __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33362                         } else if (8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT) {
33363                             return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
33364                         }
33365                     }
33366                     break;
33367                 case 3:
33368                     if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
33369                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33370                             __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33371                         } else if (8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT) {
33372                             return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
33373                         }
33374                     }
33375                     break;
33376                 case 4:
33377                     if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
33378                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33379                             __PYX_VERIFY_RETURN_INT(uint64_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])))
33380                         } else if (8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT) {
33381                             return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
33382                         }
33383                     }
33384                     break;
33385             }
33386 #endif
33387 #if CYTHON_COMPILING_IN_CPYTHON
33388             if (unlikely(Py_SIZE(x) < 0)) {
33389                 goto raise_neg_overflow;
33390             }
33391 #else
33392             {
33393                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
33394                 if (unlikely(result < 0))
33395                     return (uint64_t) -1;
33396                 if (unlikely(result == 1))
33397                     goto raise_neg_overflow;
33398             }
33399 #endif
33400             if (sizeof(uint64_t) <= sizeof(unsigned long)) {
33401                 __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
33402 #ifdef HAVE_LONG_LONG
33403             } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
33404                 __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
33405 #endif
33406             }
33407         } else {
33408 #if CYTHON_USE_PYLONG_INTERNALS
33409             const digit* digits = ((PyLongObject*)x)->ob_digit;
33410             switch (Py_SIZE(x)) {
33411                 case  0: return (uint64_t) 0;
33412                 case -1: __PYX_VERIFY_RETURN_INT(uint64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
33413                 case  1: __PYX_VERIFY_RETURN_INT(uint64_t,  digit, +digits[0])
33414                 case -2:
33415                     if (8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT) {
33416                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33417                             __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33418                         } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
33419                             return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
33420                         }
33421                     }
33422                     break;
33423                 case 2:
33424                     if (8 * sizeof(uint64_t) > 1 * PyLong_SHIFT) {
33425                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33426                             __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33427                         } else if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
33428                             return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
33429                         }
33430                     }
33431                     break;
33432                 case -3:
33433                     if (8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT) {
33434                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33435                             __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33436                         } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
33437                             return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
33438                         }
33439                     }
33440                     break;
33441                 case 3:
33442                     if (8 * sizeof(uint64_t) > 2 * PyLong_SHIFT) {
33443                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33444                             __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33445                         } else if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
33446                             return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
33447                         }
33448                     }
33449                     break;
33450                 case -4:
33451                     if (8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT) {
33452                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33453                             __PYX_VERIFY_RETURN_INT(uint64_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])))
33454                         } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
33455                             return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
33456                         }
33457                     }
33458                     break;
33459                 case 4:
33460                     if (8 * sizeof(uint64_t) > 3 * PyLong_SHIFT) {
33461                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33462                             __PYX_VERIFY_RETURN_INT(uint64_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])))
33463                         } else if (8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT) {
33464                             return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
33465                         }
33466                     }
33467                     break;
33468             }
33469 #endif
33470             if (sizeof(uint64_t) <= sizeof(long)) {
33471                 __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x))
33472 #ifdef HAVE_LONG_LONG
33473             } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
33474                 __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
33475 #endif
33476             }
33477         }
33478         {
33479 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
33480             PyErr_SetString(PyExc_RuntimeError,
33481                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
33482 #else
33483             uint64_t val;
33484             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
33485  #if PY_MAJOR_VERSION < 3
33486             if (likely(v) && !PyLong_Check(v)) {
33487                 PyObject *tmp = v;
33488                 v = PyNumber_Long(tmp);
33489                 Py_DECREF(tmp);
33490             }
33491  #endif
33492             if (likely(v)) {
33493                 int one = 1; int is_little = (int)*(unsigned char *)&one;
33494                 unsigned char *bytes = (unsigned char *)&val;
33495                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
33496                                               bytes, sizeof(val),
33497                                               is_little, !is_unsigned);
33498                 Py_DECREF(v);
33499                 if (likely(!ret))
33500                     return val;
33501             }
33502 #endif
33503             return (uint64_t) -1;
33504         }
33505     } else {
33506         uint64_t val;
33507         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
33508         if (!tmp) return (uint64_t) -1;
33509         val = __Pyx_PyInt_As_uint64_t(tmp);
33510         Py_DECREF(tmp);
33511         return val;
33512     }
33513 raise_overflow:
33514     PyErr_SetString(PyExc_OverflowError,
33515         "value too large to convert to uint64_t");
33516     return (uint64_t) -1;
33517 raise_neg_overflow:
33518     PyErr_SetString(PyExc_OverflowError,
33519         "can't convert negative value to uint64_t");
33520     return (uint64_t) -1;
33521 }
33522 
33523 /* CIntFromPy */
__Pyx_PyInt_As_int64_t(PyObject * x)33524   static CYTHON_INLINE int64_t __Pyx_PyInt_As_int64_t(PyObject *x) {
33525     const int64_t neg_one = (int64_t) ((int64_t) 0 - (int64_t) 1), const_zero = (int64_t) 0;
33526     const int is_unsigned = neg_one > const_zero;
33527 #if PY_MAJOR_VERSION < 3
33528     if (likely(PyInt_Check(x))) {
33529         if (sizeof(int64_t) < sizeof(long)) {
33530             __PYX_VERIFY_RETURN_INT(int64_t, long, PyInt_AS_LONG(x))
33531         } else {
33532             long val = PyInt_AS_LONG(x);
33533             if (is_unsigned && unlikely(val < 0)) {
33534                 goto raise_neg_overflow;
33535             }
33536             return (int64_t) val;
33537         }
33538     } else
33539 #endif
33540     if (likely(PyLong_Check(x))) {
33541         if (is_unsigned) {
33542 #if CYTHON_USE_PYLONG_INTERNALS
33543             const digit* digits = ((PyLongObject*)x)->ob_digit;
33544             switch (Py_SIZE(x)) {
33545                 case  0: return (int64_t) 0;
33546                 case  1: __PYX_VERIFY_RETURN_INT(int64_t, digit, digits[0])
33547                 case 2:
33548                     if (8 * sizeof(int64_t) > 1 * PyLong_SHIFT) {
33549                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33550                             __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33551                         } else if (8 * sizeof(int64_t) >= 2 * PyLong_SHIFT) {
33552                             return (int64_t) (((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
33553                         }
33554                     }
33555                     break;
33556                 case 3:
33557                     if (8 * sizeof(int64_t) > 2 * PyLong_SHIFT) {
33558                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33559                             __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33560                         } else if (8 * sizeof(int64_t) >= 3 * PyLong_SHIFT) {
33561                             return (int64_t) (((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
33562                         }
33563                     }
33564                     break;
33565                 case 4:
33566                     if (8 * sizeof(int64_t) > 3 * PyLong_SHIFT) {
33567                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33568                             __PYX_VERIFY_RETURN_INT(int64_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])))
33569                         } else if (8 * sizeof(int64_t) >= 4 * PyLong_SHIFT) {
33570                             return (int64_t) (((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]));
33571                         }
33572                     }
33573                     break;
33574             }
33575 #endif
33576 #if CYTHON_COMPILING_IN_CPYTHON
33577             if (unlikely(Py_SIZE(x) < 0)) {
33578                 goto raise_neg_overflow;
33579             }
33580 #else
33581             {
33582                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
33583                 if (unlikely(result < 0))
33584                     return (int64_t) -1;
33585                 if (unlikely(result == 1))
33586                     goto raise_neg_overflow;
33587             }
33588 #endif
33589             if (sizeof(int64_t) <= sizeof(unsigned long)) {
33590                 __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned long, PyLong_AsUnsignedLong(x))
33591 #ifdef HAVE_LONG_LONG
33592             } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) {
33593                 __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
33594 #endif
33595             }
33596         } else {
33597 #if CYTHON_USE_PYLONG_INTERNALS
33598             const digit* digits = ((PyLongObject*)x)->ob_digit;
33599             switch (Py_SIZE(x)) {
33600                 case  0: return (int64_t) 0;
33601                 case -1: __PYX_VERIFY_RETURN_INT(int64_t, sdigit, (sdigit) (-(sdigit)digits[0]))
33602                 case  1: __PYX_VERIFY_RETURN_INT(int64_t,  digit, +digits[0])
33603                 case -2:
33604                     if (8 * sizeof(int64_t) - 1 > 1 * PyLong_SHIFT) {
33605                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33606                             __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33607                         } else if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
33608                             return (int64_t) (((int64_t)-1)*(((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
33609                         }
33610                     }
33611                     break;
33612                 case 2:
33613                     if (8 * sizeof(int64_t) > 1 * PyLong_SHIFT) {
33614                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33615                             __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33616                         } else if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
33617                             return (int64_t) ((((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
33618                         }
33619                     }
33620                     break;
33621                 case -3:
33622                     if (8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT) {
33623                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33624                             __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33625                         } else if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
33626                             return (int64_t) (((int64_t)-1)*(((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
33627                         }
33628                     }
33629                     break;
33630                 case 3:
33631                     if (8 * sizeof(int64_t) > 2 * PyLong_SHIFT) {
33632                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33633                             __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33634                         } else if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
33635                             return (int64_t) ((((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
33636                         }
33637                     }
33638                     break;
33639                 case -4:
33640                     if (8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT) {
33641                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33642                             __PYX_VERIFY_RETURN_INT(int64_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])))
33643                         } else if (8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT) {
33644                             return (int64_t) (((int64_t)-1)*(((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
33645                         }
33646                     }
33647                     break;
33648                 case 4:
33649                     if (8 * sizeof(int64_t) > 3 * PyLong_SHIFT) {
33650                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33651                             __PYX_VERIFY_RETURN_INT(int64_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])))
33652                         } else if (8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT) {
33653                             return (int64_t) ((((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])));
33654                         }
33655                     }
33656                     break;
33657             }
33658 #endif
33659             if (sizeof(int64_t) <= sizeof(long)) {
33660                 __PYX_VERIFY_RETURN_INT_EXC(int64_t, long, PyLong_AsLong(x))
33661 #ifdef HAVE_LONG_LONG
33662             } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) {
33663                 __PYX_VERIFY_RETURN_INT_EXC(int64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
33664 #endif
33665             }
33666         }
33667         {
33668 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
33669             PyErr_SetString(PyExc_RuntimeError,
33670                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
33671 #else
33672             int64_t val;
33673             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
33674  #if PY_MAJOR_VERSION < 3
33675             if (likely(v) && !PyLong_Check(v)) {
33676                 PyObject *tmp = v;
33677                 v = PyNumber_Long(tmp);
33678                 Py_DECREF(tmp);
33679             }
33680  #endif
33681             if (likely(v)) {
33682                 int one = 1; int is_little = (int)*(unsigned char *)&one;
33683                 unsigned char *bytes = (unsigned char *)&val;
33684                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
33685                                               bytes, sizeof(val),
33686                                               is_little, !is_unsigned);
33687                 Py_DECREF(v);
33688                 if (likely(!ret))
33689                     return val;
33690             }
33691 #endif
33692             return (int64_t) -1;
33693         }
33694     } else {
33695         int64_t val;
33696         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
33697         if (!tmp) return (int64_t) -1;
33698         val = __Pyx_PyInt_As_int64_t(tmp);
33699         Py_DECREF(tmp);
33700         return val;
33701     }
33702 raise_overflow:
33703     PyErr_SetString(PyExc_OverflowError,
33704         "value too large to convert to int64_t");
33705     return (int64_t) -1;
33706 raise_neg_overflow:
33707     PyErr_SetString(PyExc_OverflowError,
33708         "can't convert negative value to int64_t");
33709     return (int64_t) -1;
33710 }
33711 
33712 /* CIntFromPy */
__Pyx_PyInt_As_uint32_t(PyObject * x)33713   static CYTHON_INLINE uint32_t __Pyx_PyInt_As_uint32_t(PyObject *x) {
33714     const uint32_t neg_one = (uint32_t) ((uint32_t) 0 - (uint32_t) 1), const_zero = (uint32_t) 0;
33715     const int is_unsigned = neg_one > const_zero;
33716 #if PY_MAJOR_VERSION < 3
33717     if (likely(PyInt_Check(x))) {
33718         if (sizeof(uint32_t) < sizeof(long)) {
33719             __PYX_VERIFY_RETURN_INT(uint32_t, long, PyInt_AS_LONG(x))
33720         } else {
33721             long val = PyInt_AS_LONG(x);
33722             if (is_unsigned && unlikely(val < 0)) {
33723                 goto raise_neg_overflow;
33724             }
33725             return (uint32_t) val;
33726         }
33727     } else
33728 #endif
33729     if (likely(PyLong_Check(x))) {
33730         if (is_unsigned) {
33731 #if CYTHON_USE_PYLONG_INTERNALS
33732             const digit* digits = ((PyLongObject*)x)->ob_digit;
33733             switch (Py_SIZE(x)) {
33734                 case  0: return (uint32_t) 0;
33735                 case  1: __PYX_VERIFY_RETURN_INT(uint32_t, digit, digits[0])
33736                 case 2:
33737                     if (8 * sizeof(uint32_t) > 1 * PyLong_SHIFT) {
33738                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33739                             __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33740                         } else if (8 * sizeof(uint32_t) >= 2 * PyLong_SHIFT) {
33741                             return (uint32_t) (((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
33742                         }
33743                     }
33744                     break;
33745                 case 3:
33746                     if (8 * sizeof(uint32_t) > 2 * PyLong_SHIFT) {
33747                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33748                             __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33749                         } else if (8 * sizeof(uint32_t) >= 3 * PyLong_SHIFT) {
33750                             return (uint32_t) (((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
33751                         }
33752                     }
33753                     break;
33754                 case 4:
33755                     if (8 * sizeof(uint32_t) > 3 * PyLong_SHIFT) {
33756                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33757                             __PYX_VERIFY_RETURN_INT(uint32_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])))
33758                         } else if (8 * sizeof(uint32_t) >= 4 * PyLong_SHIFT) {
33759                             return (uint32_t) (((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
33760                         }
33761                     }
33762                     break;
33763             }
33764 #endif
33765 #if CYTHON_COMPILING_IN_CPYTHON
33766             if (unlikely(Py_SIZE(x) < 0)) {
33767                 goto raise_neg_overflow;
33768             }
33769 #else
33770             {
33771                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
33772                 if (unlikely(result < 0))
33773                     return (uint32_t) -1;
33774                 if (unlikely(result == 1))
33775                     goto raise_neg_overflow;
33776             }
33777 #endif
33778             if (sizeof(uint32_t) <= sizeof(unsigned long)) {
33779                 __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned long, PyLong_AsUnsignedLong(x))
33780 #ifdef HAVE_LONG_LONG
33781             } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
33782                 __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
33783 #endif
33784             }
33785         } else {
33786 #if CYTHON_USE_PYLONG_INTERNALS
33787             const digit* digits = ((PyLongObject*)x)->ob_digit;
33788             switch (Py_SIZE(x)) {
33789                 case  0: return (uint32_t) 0;
33790                 case -1: __PYX_VERIFY_RETURN_INT(uint32_t, sdigit, (sdigit) (-(sdigit)digits[0]))
33791                 case  1: __PYX_VERIFY_RETURN_INT(uint32_t,  digit, +digits[0])
33792                 case -2:
33793                     if (8 * sizeof(uint32_t) - 1 > 1 * PyLong_SHIFT) {
33794                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33795                             __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33796                         } else if (8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT) {
33797                             return (uint32_t) (((uint32_t)-1)*(((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
33798                         }
33799                     }
33800                     break;
33801                 case 2:
33802                     if (8 * sizeof(uint32_t) > 1 * PyLong_SHIFT) {
33803                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33804                             __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33805                         } else if (8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT) {
33806                             return (uint32_t) ((((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
33807                         }
33808                     }
33809                     break;
33810                 case -3:
33811                     if (8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT) {
33812                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33813                             __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33814                         } else if (8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT) {
33815                             return (uint32_t) (((uint32_t)-1)*(((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
33816                         }
33817                     }
33818                     break;
33819                 case 3:
33820                     if (8 * sizeof(uint32_t) > 2 * PyLong_SHIFT) {
33821                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33822                             __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33823                         } else if (8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT) {
33824                             return (uint32_t) ((((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
33825                         }
33826                     }
33827                     break;
33828                 case -4:
33829                     if (8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT) {
33830                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33831                             __PYX_VERIFY_RETURN_INT(uint32_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])))
33832                         } else if (8 * sizeof(uint32_t) - 1 > 4 * PyLong_SHIFT) {
33833                             return (uint32_t) (((uint32_t)-1)*(((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
33834                         }
33835                     }
33836                     break;
33837                 case 4:
33838                     if (8 * sizeof(uint32_t) > 3 * PyLong_SHIFT) {
33839                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33840                             __PYX_VERIFY_RETURN_INT(uint32_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])))
33841                         } else if (8 * sizeof(uint32_t) - 1 > 4 * PyLong_SHIFT) {
33842                             return (uint32_t) ((((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
33843                         }
33844                     }
33845                     break;
33846             }
33847 #endif
33848             if (sizeof(uint32_t) <= sizeof(long)) {
33849                 __PYX_VERIFY_RETURN_INT_EXC(uint32_t, long, PyLong_AsLong(x))
33850 #ifdef HAVE_LONG_LONG
33851             } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
33852                 __PYX_VERIFY_RETURN_INT_EXC(uint32_t, PY_LONG_LONG, PyLong_AsLongLong(x))
33853 #endif
33854             }
33855         }
33856         {
33857 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
33858             PyErr_SetString(PyExc_RuntimeError,
33859                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
33860 #else
33861             uint32_t val;
33862             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
33863  #if PY_MAJOR_VERSION < 3
33864             if (likely(v) && !PyLong_Check(v)) {
33865                 PyObject *tmp = v;
33866                 v = PyNumber_Long(tmp);
33867                 Py_DECREF(tmp);
33868             }
33869  #endif
33870             if (likely(v)) {
33871                 int one = 1; int is_little = (int)*(unsigned char *)&one;
33872                 unsigned char *bytes = (unsigned char *)&val;
33873                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
33874                                               bytes, sizeof(val),
33875                                               is_little, !is_unsigned);
33876                 Py_DECREF(v);
33877                 if (likely(!ret))
33878                     return val;
33879             }
33880 #endif
33881             return (uint32_t) -1;
33882         }
33883     } else {
33884         uint32_t val;
33885         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
33886         if (!tmp) return (uint32_t) -1;
33887         val = __Pyx_PyInt_As_uint32_t(tmp);
33888         Py_DECREF(tmp);
33889         return val;
33890     }
33891 raise_overflow:
33892     PyErr_SetString(PyExc_OverflowError,
33893         "value too large to convert to uint32_t");
33894     return (uint32_t) -1;
33895 raise_neg_overflow:
33896     PyErr_SetString(PyExc_OverflowError,
33897         "can't convert negative value to uint32_t");
33898     return (uint32_t) -1;
33899 }
33900 
33901 /* CIntFromPy */
__Pyx_PyInt_As_long(PyObject * x)33902   static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
33903     const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
33904     const int is_unsigned = neg_one > const_zero;
33905 #if PY_MAJOR_VERSION < 3
33906     if (likely(PyInt_Check(x))) {
33907         if (sizeof(long) < sizeof(long)) {
33908             __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
33909         } else {
33910             long val = PyInt_AS_LONG(x);
33911             if (is_unsigned && unlikely(val < 0)) {
33912                 goto raise_neg_overflow;
33913             }
33914             return (long) val;
33915         }
33916     } else
33917 #endif
33918     if (likely(PyLong_Check(x))) {
33919         if (is_unsigned) {
33920 #if CYTHON_USE_PYLONG_INTERNALS
33921             const digit* digits = ((PyLongObject*)x)->ob_digit;
33922             switch (Py_SIZE(x)) {
33923                 case  0: return (long) 0;
33924                 case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
33925                 case 2:
33926                     if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
33927                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33928                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33929                         } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
33930                             return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
33931                         }
33932                     }
33933                     break;
33934                 case 3:
33935                     if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
33936                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
33937                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33938                         } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
33939                             return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
33940                         }
33941                     }
33942                     break;
33943                 case 4:
33944                     if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
33945                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
33946                             __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])))
33947                         } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
33948                             return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
33949                         }
33950                     }
33951                     break;
33952             }
33953 #endif
33954 #if CYTHON_COMPILING_IN_CPYTHON
33955             if (unlikely(Py_SIZE(x) < 0)) {
33956                 goto raise_neg_overflow;
33957             }
33958 #else
33959             {
33960                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
33961                 if (unlikely(result < 0))
33962                     return (long) -1;
33963                 if (unlikely(result == 1))
33964                     goto raise_neg_overflow;
33965             }
33966 #endif
33967             if (sizeof(long) <= sizeof(unsigned long)) {
33968                 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
33969 #ifdef HAVE_LONG_LONG
33970             } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
33971                 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
33972 #endif
33973             }
33974         } else {
33975 #if CYTHON_USE_PYLONG_INTERNALS
33976             const digit* digits = ((PyLongObject*)x)->ob_digit;
33977             switch (Py_SIZE(x)) {
33978                 case  0: return (long) 0;
33979                 case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
33980                 case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
33981                 case -2:
33982                     if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
33983                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33984                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33985                         } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
33986                             return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
33987                         }
33988                     }
33989                     break;
33990                 case 2:
33991                     if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
33992                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
33993                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
33994                         } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
33995                             return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
33996                         }
33997                     }
33998                     break;
33999                 case -3:
34000                     if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
34001                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
34002                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34003                         } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
34004                             return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
34005                         }
34006                     }
34007                     break;
34008                 case 3:
34009                     if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
34010                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
34011                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34012                         } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
34013                             return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
34014                         }
34015                     }
34016                     break;
34017                 case -4:
34018                     if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
34019                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
34020                             __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])))
34021                         } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
34022                             return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
34023                         }
34024                     }
34025                     break;
34026                 case 4:
34027                     if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
34028                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
34029                             __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])))
34030                         } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
34031                             return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
34032                         }
34033                     }
34034                     break;
34035             }
34036 #endif
34037             if (sizeof(long) <= sizeof(long)) {
34038                 __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
34039 #ifdef HAVE_LONG_LONG
34040             } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
34041                 __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
34042 #endif
34043             }
34044         }
34045         {
34046 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
34047             PyErr_SetString(PyExc_RuntimeError,
34048                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
34049 #else
34050             long val;
34051             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
34052  #if PY_MAJOR_VERSION < 3
34053             if (likely(v) && !PyLong_Check(v)) {
34054                 PyObject *tmp = v;
34055                 v = PyNumber_Long(tmp);
34056                 Py_DECREF(tmp);
34057             }
34058  #endif
34059             if (likely(v)) {
34060                 int one = 1; int is_little = (int)*(unsigned char *)&one;
34061                 unsigned char *bytes = (unsigned char *)&val;
34062                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
34063                                               bytes, sizeof(val),
34064                                               is_little, !is_unsigned);
34065                 Py_DECREF(v);
34066                 if (likely(!ret))
34067                     return val;
34068             }
34069 #endif
34070             return (long) -1;
34071         }
34072     } else {
34073         long val;
34074         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
34075         if (!tmp) return (long) -1;
34076         val = __Pyx_PyInt_As_long(tmp);
34077         Py_DECREF(tmp);
34078         return val;
34079     }
34080 raise_overflow:
34081     PyErr_SetString(PyExc_OverflowError,
34082         "value too large to convert to long");
34083     return (long) -1;
34084 raise_neg_overflow:
34085     PyErr_SetString(PyExc_OverflowError,
34086         "can't convert negative value to long");
34087     return (long) -1;
34088 }
34089 
34090 /* CIntToPy */
__Pyx_PyInt_From_long(long value)34091   static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
34092     const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
34093     const int is_unsigned = neg_one > const_zero;
34094     if (is_unsigned) {
34095         if (sizeof(long) < sizeof(long)) {
34096             return PyInt_FromLong((long) value);
34097         } else if (sizeof(long) <= sizeof(unsigned long)) {
34098             return PyLong_FromUnsignedLong((unsigned long) value);
34099 #ifdef HAVE_LONG_LONG
34100         } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
34101             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
34102 #endif
34103         }
34104     } else {
34105         if (sizeof(long) <= sizeof(long)) {
34106             return PyInt_FromLong((long) value);
34107 #ifdef HAVE_LONG_LONG
34108         } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
34109             return PyLong_FromLongLong((PY_LONG_LONG) value);
34110 #endif
34111         }
34112     }
34113     {
34114         int one = 1; int little = (int)*(unsigned char *)&one;
34115         unsigned char *bytes = (unsigned char *)&value;
34116         return _PyLong_FromByteArray(bytes, sizeof(long),
34117                                      little, !is_unsigned);
34118     }
34119 }
34120 
34121 /* CIntFromPy */
__Pyx_PyInt_As_char(PyObject * x)34122   static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
34123     const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
34124     const int is_unsigned = neg_one > const_zero;
34125 #if PY_MAJOR_VERSION < 3
34126     if (likely(PyInt_Check(x))) {
34127         if (sizeof(char) < sizeof(long)) {
34128             __PYX_VERIFY_RETURN_INT(char, long, PyInt_AS_LONG(x))
34129         } else {
34130             long val = PyInt_AS_LONG(x);
34131             if (is_unsigned && unlikely(val < 0)) {
34132                 goto raise_neg_overflow;
34133             }
34134             return (char) val;
34135         }
34136     } else
34137 #endif
34138     if (likely(PyLong_Check(x))) {
34139         if (is_unsigned) {
34140 #if CYTHON_USE_PYLONG_INTERNALS
34141             const digit* digits = ((PyLongObject*)x)->ob_digit;
34142             switch (Py_SIZE(x)) {
34143                 case  0: return (char) 0;
34144                 case  1: __PYX_VERIFY_RETURN_INT(char, digit, digits[0])
34145                 case 2:
34146                     if (8 * sizeof(char) > 1 * PyLong_SHIFT) {
34147                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
34148                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34149                         } else if (8 * sizeof(char) >= 2 * PyLong_SHIFT) {
34150                             return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
34151                         }
34152                     }
34153                     break;
34154                 case 3:
34155                     if (8 * sizeof(char) > 2 * PyLong_SHIFT) {
34156                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
34157                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34158                         } else if (8 * sizeof(char) >= 3 * PyLong_SHIFT) {
34159                             return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
34160                         }
34161                     }
34162                     break;
34163                 case 4:
34164                     if (8 * sizeof(char) > 3 * PyLong_SHIFT) {
34165                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
34166                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34167                         } else if (8 * sizeof(char) >= 4 * PyLong_SHIFT) {
34168                             return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]));
34169                         }
34170                     }
34171                     break;
34172             }
34173 #endif
34174 #if CYTHON_COMPILING_IN_CPYTHON
34175             if (unlikely(Py_SIZE(x) < 0)) {
34176                 goto raise_neg_overflow;
34177             }
34178 #else
34179             {
34180                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
34181                 if (unlikely(result < 0))
34182                     return (char) -1;
34183                 if (unlikely(result == 1))
34184                     goto raise_neg_overflow;
34185             }
34186 #endif
34187             if (sizeof(char) <= sizeof(unsigned long)) {
34188                 __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x))
34189 #ifdef HAVE_LONG_LONG
34190             } else if (sizeof(char) <= sizeof(unsigned PY_LONG_LONG)) {
34191                 __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
34192 #endif
34193             }
34194         } else {
34195 #if CYTHON_USE_PYLONG_INTERNALS
34196             const digit* digits = ((PyLongObject*)x)->ob_digit;
34197             switch (Py_SIZE(x)) {
34198                 case  0: return (char) 0;
34199                 case -1: __PYX_VERIFY_RETURN_INT(char, sdigit, (sdigit) (-(sdigit)digits[0]))
34200                 case  1: __PYX_VERIFY_RETURN_INT(char,  digit, +digits[0])
34201                 case -2:
34202                     if (8 * sizeof(char) - 1 > 1 * PyLong_SHIFT) {
34203                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
34204                             __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34205                         } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
34206                             return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
34207                         }
34208                     }
34209                     break;
34210                 case 2:
34211                     if (8 * sizeof(char) > 1 * PyLong_SHIFT) {
34212                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
34213                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34214                         } else if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
34215                             return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
34216                         }
34217                     }
34218                     break;
34219                 case -3:
34220                     if (8 * sizeof(char) - 1 > 2 * PyLong_SHIFT) {
34221                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
34222                             __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34223                         } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
34224                             return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
34225                         }
34226                     }
34227                     break;
34228                 case 3:
34229                     if (8 * sizeof(char) > 2 * PyLong_SHIFT) {
34230                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
34231                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34232                         } else if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
34233                             return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
34234                         }
34235                     }
34236                     break;
34237                 case -4:
34238                     if (8 * sizeof(char) - 1 > 3 * PyLong_SHIFT) {
34239                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
34240                             __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34241                         } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) {
34242                             return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
34243                         }
34244                     }
34245                     break;
34246                 case 4:
34247                     if (8 * sizeof(char) > 3 * PyLong_SHIFT) {
34248                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
34249                             __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
34250                         } else if (8 * sizeof(char) - 1 > 4 * PyLong_SHIFT) {
34251                             return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])));
34252                         }
34253                     }
34254                     break;
34255             }
34256 #endif
34257             if (sizeof(char) <= sizeof(long)) {
34258                 __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x))
34259 #ifdef HAVE_LONG_LONG
34260             } else if (sizeof(char) <= sizeof(PY_LONG_LONG)) {
34261                 __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x))
34262 #endif
34263             }
34264         }
34265         {
34266 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
34267             PyErr_SetString(PyExc_RuntimeError,
34268                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
34269 #else
34270             char val;
34271             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
34272  #if PY_MAJOR_VERSION < 3
34273             if (likely(v) && !PyLong_Check(v)) {
34274                 PyObject *tmp = v;
34275                 v = PyNumber_Long(tmp);
34276                 Py_DECREF(tmp);
34277             }
34278  #endif
34279             if (likely(v)) {
34280                 int one = 1; int is_little = (int)*(unsigned char *)&one;
34281                 unsigned char *bytes = (unsigned char *)&val;
34282                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
34283                                               bytes, sizeof(val),
34284                                               is_little, !is_unsigned);
34285                 Py_DECREF(v);
34286                 if (likely(!ret))
34287                     return val;
34288             }
34289 #endif
34290             return (char) -1;
34291         }
34292     } else {
34293         char val;
34294         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
34295         if (!tmp) return (char) -1;
34296         val = __Pyx_PyInt_As_char(tmp);
34297         Py_DECREF(tmp);
34298         return val;
34299     }
34300 raise_overflow:
34301     PyErr_SetString(PyExc_OverflowError,
34302         "value too large to convert to char");
34303     return (char) -1;
34304 raise_neg_overflow:
34305     PyErr_SetString(PyExc_OverflowError,
34306         "can't convert negative value to char");
34307     return (char) -1;
34308 }
34309 
34310 /* TypeInfoCompare */
34311   static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo * a,__Pyx_TypeInfo * b)34312 __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
34313 {
34314     int i;
34315     if (!a || !b)
34316         return 0;
34317     if (a == b)
34318         return 1;
34319     if (a->size != b->size || a->typegroup != b->typegroup ||
34320             a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) {
34321         if (a->typegroup == 'H' || b->typegroup == 'H') {
34322             return a->size == b->size;
34323         } else {
34324             return 0;
34325         }
34326     }
34327     if (a->ndim) {
34328         for (i = 0; i < a->ndim; i++)
34329             if (a->arraysize[i] != b->arraysize[i])
34330                 return 0;
34331     }
34332     if (a->typegroup == 'S') {
34333         if (a->flags != b->flags)
34334             return 0;
34335         if (a->fields || b->fields) {
34336             if (!(a->fields && b->fields))
34337                 return 0;
34338             for (i = 0; a->fields[i].type && b->fields[i].type; i++) {
34339                 __Pyx_StructField *field_a = a->fields + i;
34340                 __Pyx_StructField *field_b = b->fields + i;
34341                 if (field_a->offset != field_b->offset ||
34342                     !__pyx_typeinfo_cmp(field_a->type, field_b->type))
34343                     return 0;
34344             }
34345             return !a->fields[i].type && !b->fields[i].type;
34346         }
34347     }
34348     return 1;
34349 }
34350 
34351 /* MemviewSliceValidateAndInit */
34352   static int
__pyx_check_strides(Py_buffer * buf,int dim,int ndim,int spec)34353 __pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
34354 {
34355     if (buf->shape[dim] <= 1)
34356         return 1;
34357     if (buf->strides) {
34358         if (spec & __Pyx_MEMVIEW_CONTIG) {
34359             if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) {
34360                 if (buf->strides[dim] != sizeof(void *)) {
34361                     PyErr_Format(PyExc_ValueError,
34362                                  "Buffer is not indirectly contiguous "
34363                                  "in dimension %d.", dim);
34364                     goto fail;
34365                 }
34366             } else if (buf->strides[dim] != buf->itemsize) {
34367                 PyErr_SetString(PyExc_ValueError,
34368                                 "Buffer and memoryview are not contiguous "
34369                                 "in the same dimension.");
34370                 goto fail;
34371             }
34372         }
34373         if (spec & __Pyx_MEMVIEW_FOLLOW) {
34374             Py_ssize_t stride = buf->strides[dim];
34375             if (stride < 0)
34376                 stride = -stride;
34377             if (stride < buf->itemsize) {
34378                 PyErr_SetString(PyExc_ValueError,
34379                                 "Buffer and memoryview are not contiguous "
34380                                 "in the same dimension.");
34381                 goto fail;
34382             }
34383         }
34384     } else {
34385         if (spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1) {
34386             PyErr_Format(PyExc_ValueError,
34387                          "C-contiguous buffer is not contiguous in "
34388                          "dimension %d", dim);
34389             goto fail;
34390         } else if (spec & (__Pyx_MEMVIEW_PTR)) {
34391             PyErr_Format(PyExc_ValueError,
34392                          "C-contiguous buffer is not indirect in "
34393                          "dimension %d", dim);
34394             goto fail;
34395         } else if (buf->suboffsets) {
34396             PyErr_SetString(PyExc_ValueError,
34397                             "Buffer exposes suboffsets but no strides");
34398             goto fail;
34399         }
34400     }
34401     return 1;
34402 fail:
34403     return 0;
34404 }
34405 static int
__pyx_check_suboffsets(Py_buffer * buf,int dim,CYTHON_UNUSED int ndim,int spec)34406 __pyx_check_suboffsets(Py_buffer *buf, int dim, CYTHON_UNUSED int ndim, int spec)
34407 {
34408     if (spec & __Pyx_MEMVIEW_DIRECT) {
34409         if (buf->suboffsets && buf->suboffsets[dim] >= 0) {
34410             PyErr_Format(PyExc_ValueError,
34411                          "Buffer not compatible with direct access "
34412                          "in dimension %d.", dim);
34413             goto fail;
34414         }
34415     }
34416     if (spec & __Pyx_MEMVIEW_PTR) {
34417         if (!buf->suboffsets || (buf->suboffsets[dim] < 0)) {
34418             PyErr_Format(PyExc_ValueError,
34419                          "Buffer is not indirectly accessible "
34420                          "in dimension %d.", dim);
34421             goto fail;
34422         }
34423     }
34424     return 1;
34425 fail:
34426     return 0;
34427 }
34428 static int
__pyx_verify_contig(Py_buffer * buf,int ndim,int c_or_f_flag)34429 __pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag)
34430 {
34431     int i;
34432     if (c_or_f_flag & __Pyx_IS_F_CONTIG) {
34433         Py_ssize_t stride = 1;
34434         for (i = 0; i < ndim; i++) {
34435             if (stride * buf->itemsize != buf->strides[i] &&
34436                     buf->shape[i] > 1)
34437             {
34438                 PyErr_SetString(PyExc_ValueError,
34439                     "Buffer not fortran contiguous.");
34440                 goto fail;
34441             }
34442             stride = stride * buf->shape[i];
34443         }
34444     } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) {
34445         Py_ssize_t stride = 1;
34446         for (i = ndim - 1; i >- 1; i--) {
34447             if (stride * buf->itemsize != buf->strides[i] &&
34448                     buf->shape[i] > 1) {
34449                 PyErr_SetString(PyExc_ValueError,
34450                     "Buffer not C contiguous.");
34451                 goto fail;
34452             }
34453             stride = stride * buf->shape[i];
34454         }
34455     }
34456     return 1;
34457 fail:
34458     return 0;
34459 }
__Pyx_ValidateAndInit_memviewslice(int * axes_specs,int c_or_f_flag,int buf_flags,int ndim,__Pyx_TypeInfo * dtype,__Pyx_BufFmt_StackElem stack[],__Pyx_memviewslice * memviewslice,PyObject * original_obj)34460 static int __Pyx_ValidateAndInit_memviewslice(
34461                 int *axes_specs,
34462                 int c_or_f_flag,
34463                 int buf_flags,
34464                 int ndim,
34465                 __Pyx_TypeInfo *dtype,
34466                 __Pyx_BufFmt_StackElem stack[],
34467                 __Pyx_memviewslice *memviewslice,
34468                 PyObject *original_obj)
34469 {
34470     struct __pyx_memoryview_obj *memview, *new_memview;
34471     __Pyx_RefNannyDeclarations
34472     Py_buffer *buf;
34473     int i, spec = 0, retval = -1;
34474     __Pyx_BufFmt_Context ctx;
34475     int from_memoryview = __pyx_memoryview_check(original_obj);
34476     __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0);
34477     if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *)
34478                                                             original_obj)->typeinfo)) {
34479         memview = (struct __pyx_memoryview_obj *) original_obj;
34480         new_memview = NULL;
34481     } else {
34482         memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new(
34483                                             original_obj, buf_flags, 0, dtype);
34484         new_memview = memview;
34485         if (unlikely(!memview))
34486             goto fail;
34487     }
34488     buf = &memview->view;
34489     if (buf->ndim != ndim) {
34490         PyErr_Format(PyExc_ValueError,
34491                 "Buffer has wrong number of dimensions (expected %d, got %d)",
34492                 ndim, buf->ndim);
34493         goto fail;
34494     }
34495     if (new_memview) {
34496         __Pyx_BufFmt_Init(&ctx, stack, dtype);
34497         if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail;
34498     }
34499     if ((unsigned) buf->itemsize != dtype->size) {
34500         PyErr_Format(PyExc_ValueError,
34501                      "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) "
34502                      "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)",
34503                      buf->itemsize,
34504                      (buf->itemsize > 1) ? "s" : "",
34505                      dtype->name,
34506                      dtype->size,
34507                      (dtype->size > 1) ? "s" : "");
34508         goto fail;
34509     }
34510     for (i = 0; i < ndim; i++) {
34511         spec = axes_specs[i];
34512         if (!__pyx_check_strides(buf, i, ndim, spec))
34513             goto fail;
34514         if (!__pyx_check_suboffsets(buf, i, ndim, spec))
34515             goto fail;
34516     }
34517     if (buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))
34518         goto fail;
34519     if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice,
34520                                          new_memview != NULL) == -1)) {
34521         goto fail;
34522     }
34523     retval = 0;
34524     goto no_fail;
34525 fail:
34526     Py_XDECREF(new_memview);
34527     retval = -1;
34528 no_fail:
34529     __Pyx_RefNannyFinishContext();
34530     return retval;
34531 }
34532 
34533 /* ObjectToMemviewSlice */
__Pyx_PyObject_to_MemoryviewSlice_ds_nn_bool(PyObject * obj,int writable_flag)34534   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_bool(PyObject *obj, int writable_flag) {
34535     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
34536     __Pyx_BufFmt_StackElem stack[1];
34537     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
34538     int retcode;
34539     if (obj == Py_None) {
34540         result.memview = (struct __pyx_memoryview_obj *) Py_None;
34541         return result;
34542     }
34543     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
34544                                                  PyBUF_RECORDS_RO | writable_flag, 1,
34545                                                  &__Pyx_TypeInfo_nn_bool, stack,
34546                                                  &result, obj);
34547     if (unlikely(retcode == -1))
34548         goto __pyx_fail;
34549     return result;
34550 __pyx_fail:
34551     result.memview = NULL;
34552     result.data = NULL;
34553     return result;
34554 }
34555 
34556 /* ObjectToMemviewSlice */
__Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(PyObject * obj,int writable_flag)34557   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(PyObject *obj, int writable_flag) {
34558     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
34559     __Pyx_BufFmt_StackElem stack[1];
34560     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
34561     int retcode;
34562     if (obj == Py_None) {
34563         result.memview = (struct __pyx_memoryview_obj *) Py_None;
34564         return result;
34565     }
34566     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
34567                                                  PyBUF_RECORDS_RO | writable_flag, 1,
34568                                                  &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, stack,
34569                                                  &result, obj);
34570     if (unlikely(retcode == -1))
34571         goto __pyx_fail;
34572     return result;
34573 __pyx_fail:
34574     result.memview = NULL;
34575     result.data = NULL;
34576     return result;
34577 }
34578 
34579 /* ObjectToMemviewSlice */
__Pyx_PyObject_to_MemoryviewSlice_ds_nn_uint64_t(PyObject * obj,int writable_flag)34580   static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_uint64_t(PyObject *obj, int writable_flag) {
34581     __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
34582     __Pyx_BufFmt_StackElem stack[1];
34583     int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
34584     int retcode;
34585     if (obj == Py_None) {
34586         result.memview = (struct __pyx_memoryview_obj *) Py_None;
34587         return result;
34588     }
34589     retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, 0,
34590                                                  PyBUF_RECORDS_RO | writable_flag, 1,
34591                                                  &__Pyx_TypeInfo_nn_uint64_t, stack,
34592                                                  &result, obj);
34593     if (unlikely(retcode == -1))
34594         goto __pyx_fail;
34595     return result;
34596 __pyx_fail:
34597     result.memview = NULL;
34598     result.data = NULL;
34599     return result;
34600 }
34601 
34602 /* CheckBinaryVersion */
__Pyx_check_binary_version(void)34603   static int __Pyx_check_binary_version(void) {
34604     char ctversion[4], rtversion[4];
34605     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
34606     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
34607     if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
34608         char message[200];
34609         PyOS_snprintf(message, sizeof(message),
34610                       "compiletime version %s of module '%.100s' "
34611                       "does not match runtime version %s",
34612                       ctversion, __Pyx_MODULE_NAME, rtversion);
34613         return PyErr_WarnEx(NULL, message, 1);
34614     }
34615     return 0;
34616 }
34617 
34618 /* InitStrings */
__Pyx_InitStrings(__Pyx_StringTabEntry * t)34619   static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
34620     while (t->p) {
34621         #if PY_MAJOR_VERSION < 3
34622         if (t->is_unicode) {
34623             *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
34624         } else if (t->intern) {
34625             *t->p = PyString_InternFromString(t->s);
34626         } else {
34627             *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
34628         }
34629         #else
34630         if (t->is_unicode | t->is_str) {
34631             if (t->intern) {
34632                 *t->p = PyUnicode_InternFromString(t->s);
34633             } else if (t->encoding) {
34634                 *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
34635             } else {
34636                 *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
34637             }
34638         } else {
34639             *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
34640         }
34641         #endif
34642         if (!*t->p)
34643             return -1;
34644         if (PyObject_Hash(*t->p) == -1)
34645             return -1;
34646         ++t;
34647     }
34648     return 0;
34649 }
34650 
__Pyx_PyUnicode_FromString(const char * c_str)34651 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
34652     return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
34653 }
__Pyx_PyObject_AsString(PyObject * o)34654 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
34655     Py_ssize_t ignore;
34656     return __Pyx_PyObject_AsStringAndSize(o, &ignore);
34657 }
34658 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
34659 #if !CYTHON_PEP393_ENABLED
__Pyx_PyUnicode_AsStringAndSize(PyObject * o,Py_ssize_t * length)34660 static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
34661     char* defenc_c;
34662     PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
34663     if (!defenc) return NULL;
34664     defenc_c = PyBytes_AS_STRING(defenc);
34665 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
34666     {
34667         char* end = defenc_c + PyBytes_GET_SIZE(defenc);
34668         char* c;
34669         for (c = defenc_c; c < end; c++) {
34670             if ((unsigned char) (*c) >= 128) {
34671                 PyUnicode_AsASCIIString(o);
34672                 return NULL;
34673             }
34674         }
34675     }
34676 #endif
34677     *length = PyBytes_GET_SIZE(defenc);
34678     return defenc_c;
34679 }
34680 #else
__Pyx_PyUnicode_AsStringAndSize(PyObject * o,Py_ssize_t * length)34681 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
34682     if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
34683 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
34684     if (likely(PyUnicode_IS_ASCII(o))) {
34685         *length = PyUnicode_GET_LENGTH(o);
34686         return PyUnicode_AsUTF8(o);
34687     } else {
34688         PyUnicode_AsASCIIString(o);
34689         return NULL;
34690     }
34691 #else
34692     return PyUnicode_AsUTF8AndSize(o, length);
34693 #endif
34694 }
34695 #endif
34696 #endif
__Pyx_PyObject_AsStringAndSize(PyObject * o,Py_ssize_t * length)34697 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
34698 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
34699     if (
34700 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
34701             __Pyx_sys_getdefaultencoding_not_ascii &&
34702 #endif
34703             PyUnicode_Check(o)) {
34704         return __Pyx_PyUnicode_AsStringAndSize(o, length);
34705     } else
34706 #endif
34707 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
34708     if (PyByteArray_Check(o)) {
34709         *length = PyByteArray_GET_SIZE(o);
34710         return PyByteArray_AS_STRING(o);
34711     } else
34712 #endif
34713     {
34714         char* result;
34715         int r = PyBytes_AsStringAndSize(o, &result, length);
34716         if (unlikely(r < 0)) {
34717             return NULL;
34718         } else {
34719             return result;
34720         }
34721     }
34722 }
__Pyx_PyObject_IsTrue(PyObject * x)34723 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
34724    int is_true = x == Py_True;
34725    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
34726    else return PyObject_IsTrue(x);
34727 }
__Pyx_PyObject_IsTrueAndDecref(PyObject * x)34728 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
34729     int retval;
34730     if (unlikely(!x)) return -1;
34731     retval = __Pyx_PyObject_IsTrue(x);
34732     Py_DECREF(x);
34733     return retval;
34734 }
__Pyx_PyNumber_IntOrLongWrongResultType(PyObject * result,const char * type_name)34735 static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
34736 #if PY_MAJOR_VERSION >= 3
34737     if (PyLong_Check(result)) {
34738         if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
34739                 "__int__ returned non-int (type %.200s).  "
34740                 "The ability to return an instance of a strict subclass of int "
34741                 "is deprecated, and may be removed in a future version of Python.",
34742                 Py_TYPE(result)->tp_name)) {
34743             Py_DECREF(result);
34744             return NULL;
34745         }
34746         return result;
34747     }
34748 #endif
34749     PyErr_Format(PyExc_TypeError,
34750                  "__%.4s__ returned non-%.4s (type %.200s)",
34751                  type_name, type_name, Py_TYPE(result)->tp_name);
34752     Py_DECREF(result);
34753     return NULL;
34754 }
__Pyx_PyNumber_IntOrLong(PyObject * x)34755 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
34756 #if CYTHON_USE_TYPE_SLOTS
34757   PyNumberMethods *m;
34758 #endif
34759   const char *name = NULL;
34760   PyObject *res = NULL;
34761 #if PY_MAJOR_VERSION < 3
34762   if (likely(PyInt_Check(x) || PyLong_Check(x)))
34763 #else
34764   if (likely(PyLong_Check(x)))
34765 #endif
34766     return __Pyx_NewRef(x);
34767 #if CYTHON_USE_TYPE_SLOTS
34768   m = Py_TYPE(x)->tp_as_number;
34769   #if PY_MAJOR_VERSION < 3
34770   if (m && m->nb_int) {
34771     name = "int";
34772     res = m->nb_int(x);
34773   }
34774   else if (m && m->nb_long) {
34775     name = "long";
34776     res = m->nb_long(x);
34777   }
34778   #else
34779   if (likely(m && m->nb_int)) {
34780     name = "int";
34781     res = m->nb_int(x);
34782   }
34783   #endif
34784 #else
34785   if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
34786     res = PyNumber_Int(x);
34787   }
34788 #endif
34789   if (likely(res)) {
34790 #if PY_MAJOR_VERSION < 3
34791     if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
34792 #else
34793     if (unlikely(!PyLong_CheckExact(res))) {
34794 #endif
34795         return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
34796     }
34797   }
34798   else if (!PyErr_Occurred()) {
34799     PyErr_SetString(PyExc_TypeError,
34800                     "an integer is required");
34801   }
34802   return res;
34803 }
34804 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
34805   Py_ssize_t ival;
34806   PyObject *x;
34807 #if PY_MAJOR_VERSION < 3
34808   if (likely(PyInt_CheckExact(b))) {
34809     if (sizeof(Py_ssize_t) >= sizeof(long))
34810         return PyInt_AS_LONG(b);
34811     else
34812         return PyInt_AsSsize_t(b);
34813   }
34814 #endif
34815   if (likely(PyLong_CheckExact(b))) {
34816     #if CYTHON_USE_PYLONG_INTERNALS
34817     const digit* digits = ((PyLongObject*)b)->ob_digit;
34818     const Py_ssize_t size = Py_SIZE(b);
34819     if (likely(__Pyx_sst_abs(size) <= 1)) {
34820         ival = likely(size) ? digits[0] : 0;
34821         if (size == -1) ival = -ival;
34822         return ival;
34823     } else {
34824       switch (size) {
34825          case 2:
34826            if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
34827              return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
34828            }
34829            break;
34830          case -2:
34831            if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
34832              return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
34833            }
34834            break;
34835          case 3:
34836            if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
34837              return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
34838            }
34839            break;
34840          case -3:
34841            if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
34842              return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
34843            }
34844            break;
34845          case 4:
34846            if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
34847              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]));
34848            }
34849            break;
34850          case -4:
34851            if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
34852              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]));
34853            }
34854            break;
34855       }
34856     }
34857     #endif
34858     return PyLong_AsSsize_t(b);
34859   }
34860   x = PyNumber_Index(b);
34861   if (!x) return -1;
34862   ival = PyInt_AsSsize_t(x);
34863   Py_DECREF(x);
34864   return ival;
34865 }
34866 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
34867   return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
34868 }
34869 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
34870     return PyInt_FromSize_t(ival);
34871 }
34872 
34873 
34874 #endif /* Py_PYTHON_H */
34875