Generated by Cython 0.17.2 on Thu Jan 31 16:42:33 2013
Raw output: lib.c
1: cimport numpy as np
/* "lib.pyx":1 * cimport numpy as np #<<<<<<<<<<<<<<* cimport cython * import numpy as np */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2))<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
2: cimport cython
3: import numpy as np
/* "lib.pyx":3 * cimport numpy as np * cimport cython * import numpy as np #<<<<<<<<<<<<<<* * from numpy cimport * */ __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4:
5: from numpy cimport *
6:
7:
8: cdef extern from "numpy/arrayobject.h":
9: cdef enum NPY_TYPES:
10: NPY_intp "NPY_INTP"
11:
12: from cpython cimport (PyDict_New, PyDict_GetItem, PyDict_SetItem,
13: PyDict_Contains, PyDict_Keys,
14: Py_INCREF, PyTuple_SET_ITEM,
15: PyList_Check, PyFloat_Check,
16: PyString_Check,
17: PyTuple_SetItem,
18: PyTuple_New,
19: PyObject_SetAttrString)
20:
21: cimport cpython
22:
23: isnan = np.isnan
/* "lib.pyx":23 * cimport cpython * * isnan = np.isnan #<<<<<<<<<<<<<<* cdef double NaN =<double> np.NaN * cdef double nan = NaN */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__isnan); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnan, __pyx_t_3)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24: cdef double NaN = <double> np.NaN
/* "lib.pyx":24 * * isnan = np.isnan * cdef double NaN =<double> np.NaN #<<<<<<<<<<<<<<* cdef double nan = NaN * cdef double NAN = nan */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__NaN); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_3lib_NaN = ((double)__pyx_t_4);
25: cdef double nan = NaN
/* "lib.pyx":25 * isnan = np.isnan * cdef double NaN =<double> np.NaN * cdef double nan = NaN #<<<<<<<<<<<<<<* cdef double NAN = nan * */ __pyx_v_3lib_nan = __pyx_v_3lib_NaN;
26: cdef double NAN = nan
/* "lib.pyx":26 * cdef double NaN =<double> np.NaN * cdef double nan = NaN * cdef double NAN = nan #<<<<<<<<<<<<<<* * from datetime import datetime as pydatetime */ __pyx_v_3lib_NAN = __pyx_v_3lib_nan;
27:
28: from datetime import datetime as pydatetime
/* "lib.pyx":28 * cdef double NAN = nan * * from datetime import datetime as pydatetime #<<<<<<<<<<<<<<* * # this is our tseries.pxd */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_n_s__datetime)); PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__datetime)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__datetime)); __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__datetime), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__datetime); if (__pyx_t_2 == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pydatetime, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29:
30: # this is our tseries.pxd
31: from datetime cimport *
32:
33: from tslib cimport convert_to_tsobject
34: import tslib
/* "lib.pyx":34 * * from tslib cimport convert_to_tsobject * import tslib #<<<<<<<<<<<<<<* from tslib import NaT, Timestamp * */ __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__tslib), 0, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tslib, __pyx_t_3)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
35: from tslib import NaT, Timestamp
/* "lib.pyx":35 * from tslib cimport convert_to_tsobject * import tslib * from tslib import NaT, Timestamp #<<<<<<<<<<<<<<* * cdef int64_t NPY_NAT = util.get_nat() */ __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_n_s__NaT)); PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s__NaT)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__NaT)); __Pyx_INCREF(((PyObject *)__pyx_n_s__Timestamp)); PyList_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__Timestamp)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__Timestamp)); __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__tslib), ((PyObject *)__pyx_t_3), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__NaT); if (__pyx_t_3 == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__NaT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NaT, __pyx_t_3)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__Timestamp); if (__pyx_t_3 == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__Timestamp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Timestamp, __pyx_t_3)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
36:
37: cdef int64_t NPY_NAT = util.get_nat()
/* "lib.pyx":37 * from tslib import NaT, Timestamp * * cdef int64_t NPY_NAT = util.get_nat() #<<<<<<<<<<<<<<* * ctypedef unsigned char UChar */ __pyx_v_3lib_NPY_NAT = get_nat();
38:
39: ctypedef unsigned char UChar
40:
41: cimport util
42: from util cimport is_array, _checknull, _checknan
43:
44: cdef extern from "headers/stdint.h":
45: enum: UINT8_MAX
46: enum: INT64_MAX
47: enum: INT64_MIN
48:
49:
50: cdef extern from "math.h":
51: double sqrt(double x)
52: double fabs(double)
53:
54: # import datetime C API
55: PyDateTime_IMPORT
/* "lib.pyx":55 * * # import datetime C API * PyDateTime_IMPORT #<<<<<<<<<<<<<<* * # initialize numpy */ PyDateTime_IMPORT;
56:
57: # initialize numpy
58: import_array()
/* "lib.pyx":58 * * # initialize numpy * import_array() #<<<<<<<<<<<<<<* import_ufunc() * */ import_array();
59: import_ufunc()
/* "lib.pyx":59 * # initialize numpy * import_array() * import_ufunc() #<<<<<<<<<<<<<<* * cpdef map_indices_list(list index): */ import_ufunc();
60:
61: cpdef map_indices_list(list index):
/* "lib.pyx":61 * import_ufunc() * * cpdef map_indices_list(list index): #<<<<<<<<<<<<<<* ''' * Produce a dict mapping the values of the input array to their respective */ static PyObject *__pyx_pw_3lib_1map_indices_list(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/ static PyObject *__pyx_f_3lib_map_indices_list(PyObject *__pyx_v_index, CYTHON_UNUSED int __pyx_skip_dispatch) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_length; PyObject *__pyx_v_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("map_indices_list", 0); /* "lib.pyx":61 * import_ufunc() * * cpdef map_indices_list(list index): #<<<<<<<<<<<<<<* ''' * Produce a dict mapping the values of the input array to their respective */ static PyObject *__pyx_pf_3lib_map_indices_list(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("map_indices_list", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_3lib_map_indices_list(__pyx_v_index, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("lib.map_indices_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_3ismember(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_2ismember[] = "\n Checks whether\n\n Parameters\n ----------\n arr : ndarray\n values : set\n\n Returns\n -------\n ismember : ndarray (boolean dtype)\n "; static PyMethodDef __pyx_mdef_3lib_3ismember = {__Pyx_NAMESTR("ismember"), (PyCFunction)__pyx_pw_3lib_3ismember, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_2ismember)}; static PyObject *__pyx_pw_3lib_3ismember(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_arr = 0; PyObject *__pyx_v_values = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ismember (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arr,&__pyx_n_s__values,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("ismember", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ismember")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_arr = ((PyArrayObject *)values[0]); __pyx_v_values = ((PyObject*)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("ismember", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.ismember", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), (&PySet_Type), 1, "values", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_2ismember(__pyx_self, __pyx_v_arr, __pyx_v_values); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
62: '''
63: Produce a dict mapping the values of the input array to their respective
64: locations.
65:
66: Example:
67: array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}
68:
69: Better to do this with Cython because of the enormous speed boost.
70: '''
71: cdef Py_ssize_t i, length
72: cdef dict result = {}
/* "lib.pyx":72
* '''
* cdef Py_ssize_t i, length
* cdef dict result = {} # <<<<<<<<<<<<<<
*
* length = len(index)
*/
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_v_result = __pyx_t_1;
__pyx_t_1 = 0;
73:
74: length = len(index)
/* "lib.pyx":74
* cdef dict result = {}
*
* length = len(index) # <<<<<<<<<<<<<<
*
* for i from 0 <= i < length:
*/
if (unlikely(((PyObject *)__pyx_v_index) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_length = __pyx_t_2;
75:
76: for i from 0 <= i < length:
/* "lib.pyx":76 * length = len(index) * * for i from 0<= i<length: #<<<<<<<<<<<<<<* result[index[i]] = i * */ __pyx_t_2 = __pyx_v_length; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_2; __pyx_v_i++) {
77: result[index[i]] = i
/* "lib.pyx":77
*
* for i from 0 <= i < length:
* result[index[i]] = i # <<<<<<<<<<<<<<
*
* return result
*/
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(((PyObject *)__pyx_v_index) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_index), __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_3) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_t_3, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
78:
79: return result
/* "lib.pyx":79 * result[index[i]] = i * * return result #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("lib.map_indices_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_1map_indices_list(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/ static char __pyx_doc_3lib_map_indices_list[] = "\n Produce a dict mapping the values of the input array to their respective\n locations.\n\n Example:\n array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}\n\n Better to do this with Cython because of the enormous speed boost.\n "; static PyObject *__pyx_pw_3lib_1map_indices_list(PyObject *__pyx_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("map_indices_list (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), (&PyList_Type), 1, "index", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_map_indices_list(__pyx_self, ((PyObject*)__pyx_v_index)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
80:
81:
82: from libc.stdlib cimport malloc, free
83:
84: def ismember(ndarray arr, set values):
/* "lib.pyx":84 * from libc.stdlib cimport malloc, free * * def ismember(ndarray arr, set values): #<<<<<<<<<<<<<<* ''' * Checks whether */ static PyObject *__pyx_pf_3lib_2ismember(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_values) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; PyObject *__pyx_v_val = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("ismember", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; /* "lib.pyx":84 * from libc.stdlib cimport malloc, free * * def ismember(ndarray arr, set values): #<<<<<<<<<<<<<<* ''' * Checks whether */ __pyx_k_tuple_97 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_97)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_97); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_97, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_97, 1, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_97, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_97, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_97, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_97, 5, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_97)); /* "lib.pyx":84 * from libc.stdlib cimport malloc, free * * def ismember(ndarray arr, set values): #<<<<<<<<<<<<<<* ''' * Checks whether */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_3ismember, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ismember, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_98 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__ismember, 84, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_98)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
85: '''
86: Checks whether
87:
88: Parameters
89: ----------
90: arr : ndarray
91: values : set
92:
93: Returns
94: -------
95: ismember : ndarray (boolean dtype)
96: '''
97: cdef:
98: Py_ssize_t i, n
99: ndarray[uint8_t] result
100: object val
101:
102: n = len(arr)
/* "lib.pyx":102 * object val * * n = len(arr) #<<<<<<<<<<<<<<* result = np.empty(n, dtype=np.uint8) * for i in range(n): */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
103: result = np.empty(n, dtype=np.uint8)
/* "lib.pyx":103 * * n = len(arr) * result = np.empty(n, dtype=np.uint8) #<<<<<<<<<<<<<<* for i in range(n): * val = util.get_value_at(arr, i) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
104: for i in range(n):
/* "lib.pyx":104 * n = len(arr) * result = np.empty(n, dtype=np.uint8) * for i in range(n): #<<<<<<<<<<<<<<* val = util.get_value_at(arr, i) * if val in values: */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_12 = 0; __pyx_t_12<__pyx_t_1; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
105: val = util.get_value_at(arr, i)
/* "lib.pyx":105
* result = np.empty(n, dtype=np.uint8)
* for i in range(n):
* val = util.get_value_at(arr, i) # <<<<<<<<<<<<<<
* if val in values:
* result[i] = 1
*/
__pyx_t_6 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_2 = __pyx_f_4util_get_value_at(__pyx_v_arr, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
106: if val in values:
/* "lib.pyx":106
* for i in range(n):
* val = util.get_value_at(arr, i)
* if val in values: # <<<<<<<<<<<<<<
* result[i] = 1
* else:
*/
__pyx_t_13 = (__Pyx_PySequence_Contains(__pyx_v_val, ((PyObject *)__pyx_v_values), Py_EQ)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_13) {
107: result[i] = 1
/* "lib.pyx":107
* val = util.get_value_at(arr, i)
* if val in values:
* result[i] = 1 # <<<<<<<<<<<<<<
* else:
* result[i] = 0
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_14 < 0) {
__pyx_t_14 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_14 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_result.diminfo[0].strides) = 1;
goto __pyx_L5;
}
/*else*/ {
108: else:
109: result[i] = 0
/* "lib.pyx":109
* result[i] = 1
* else:
* result[i] = 0 # <<<<<<<<<<<<<<
*
* return result.view(np.bool_)
*/
__pyx_t_15 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_15 < 0) {
__pyx_t_15 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_15 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_result.diminfo[0].strides) = 0;
}
__pyx_L5:;
}
110:
111: return result.view(np.bool_)
/* "lib.pyx":111 * result[i] = 0 * * return result.view(np.bool_) #<<<<<<<<<<<<<<* * #---------------------------------------------------------------------- */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__bool_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.ismember", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_val); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
112:
113: #----------------------------------------------------------------------
114: # datetime / io related
115:
116: cdef int _EPOCH_ORD = 719163
/* "lib.pyx":116 * # datetime / io related * * cdef int _EPOCH_ORD = 719163 #<<<<<<<<<<<<<<* * from datetime import date as pydate */ __pyx_v_3lib__EPOCH_ORD = 719163;
117:
118: from datetime import date as pydate
/* "lib.pyx":118 * cdef int _EPOCH_ORD = 719163 * * from datetime import date as pydate #<<<<<<<<<<<<<<* * cdef inline int64_t gmtime(object date): */ __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_n_s__date)); PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__date)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__date)); __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__datetime), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__date); if (__pyx_t_2 == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__date); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pydate, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
119:
120: cdef inline int64_t gmtime(object date):
/* "lib.pyx":120 * from datetime import date as pydate * * cdef inline int64_t gmtime(object date): #<<<<<<<<<<<<<<* cdef int y, m, d, h, mn, s, days * */ static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_f_3lib_gmtime(PyObject *__pyx_v_date) { int __pyx_v_y; int __pyx_v_m; int __pyx_v_d; int __pyx_v_h; int __pyx_v_mn; int __pyx_v_s; int __pyx_v_days; __pyx_t_5numpy_int64_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gmtime", 0);
121: cdef int y, m, d, h, mn, s, days
122:
123: y = PyDateTime_GET_YEAR(date)
/* "lib.pyx":123 * cdef int y, m, d, h, mn, s, days * * y = PyDateTime_GET_YEAR(date) #<<<<<<<<<<<<<<* m = PyDateTime_GET_MONTH(date) * d = PyDateTime_GET_DAY(date) */ if (!(likely(((__pyx_v_date) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_date, __pyx_ptype_8datetime_date))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_date; __Pyx_INCREF(__pyx_t_1); __pyx_v_y = PyDateTime_GET_YEAR(((PyDateTime_Date *)__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
124: m = PyDateTime_GET_MONTH(date)
/* "lib.pyx":124 * * y = PyDateTime_GET_YEAR(date) * m = PyDateTime_GET_MONTH(date) #<<<<<<<<<<<<<<* d = PyDateTime_GET_DAY(date) * h = PyDateTime_DATE_GET_HOUR(date) */ if (!(likely(((__pyx_v_date) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_date, __pyx_ptype_8datetime_date))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_date; __Pyx_INCREF(__pyx_t_1); __pyx_v_m = PyDateTime_GET_MONTH(((PyDateTime_Date *)__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
125: d = PyDateTime_GET_DAY(date)
/* "lib.pyx":125 * y = PyDateTime_GET_YEAR(date) * m = PyDateTime_GET_MONTH(date) * d = PyDateTime_GET_DAY(date) #<<<<<<<<<<<<<<* h = PyDateTime_DATE_GET_HOUR(date) * mn = PyDateTime_DATE_GET_MINUTE(date) */ if (!(likely(((__pyx_v_date) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_date, __pyx_ptype_8datetime_date))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = __pyx_v_date; __Pyx_INCREF(__pyx_t_1); __pyx_v_d = PyDateTime_GET_DAY(((PyDateTime_Date *)__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
126: h = PyDateTime_DATE_GET_HOUR(date)
/* "lib.pyx":126 * m = PyDateTime_GET_MONTH(date) * d = PyDateTime_GET_DAY(date) * h = PyDateTime_DATE_GET_HOUR(date) #<<<<<<<<<<<<<<* mn = PyDateTime_DATE_GET_MINUTE(date) * s = PyDateTime_DATE_GET_SECOND(date) */ __pyx_v_h = PyDateTime_DATE_GET_HOUR(__pyx_v_date);
127: mn = PyDateTime_DATE_GET_MINUTE(date)
/* "lib.pyx":127 * d = PyDateTime_GET_DAY(date) * h = PyDateTime_DATE_GET_HOUR(date) * mn = PyDateTime_DATE_GET_MINUTE(date) #<<<<<<<<<<<<<<* s = PyDateTime_DATE_GET_SECOND(date) * */ __pyx_v_mn = PyDateTime_DATE_GET_MINUTE(__pyx_v_date);
128: s = PyDateTime_DATE_GET_SECOND(date)
/* "lib.pyx":128 * h = PyDateTime_DATE_GET_HOUR(date) * mn = PyDateTime_DATE_GET_MINUTE(date) * s = PyDateTime_DATE_GET_SECOND(date) #<<<<<<<<<<<<<<* * days = pydate(y, m, 1).toordinal() - _EPOCH_ORD + d - 1 */ __pyx_v_s = PyDateTime_DATE_GET_SECOND(__pyx_v_date);
129:
130: days = pydate(y, m, 1).toordinal() - _EPOCH_ORD + d - 1
/* "lib.pyx":130 * s = PyDateTime_DATE_GET_SECOND(date) * * days = pydate(y, m, 1).toordinal() - _EPOCH_ORD + d - 1 #<<<<<<<<<<<<<<* return ((<int64_t> (((days * 24 + h) * 60 + mn))) * 60 + s) * 1000 * */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__pydate); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromLong(__pyx_v_y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromLong(__pyx_v_m); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_INCREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__toordinal); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_3lib__EPOCH_ORD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromLong(__pyx_v_d); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_days = __pyx_t_5;
131: return ((<int64_t> (((days * 24 + h) * 60 + mn))) * 60 + s) * 1000
/* "lib.pyx":131 * * days = pydate(y, m, 1).toordinal() - _EPOCH_ORD + d - 1 * return ((<int64_t> (((days * 24 + h) * 60 + mn))) * 60 + s) * 1000 #<<<<<<<<<<<<<<* * cpdef object to_datetime(int64_t timestamp): */ __pyx_r = (((((__pyx_t_5numpy_int64_t)((((__pyx_v_days * 24) + __pyx_v_h) * 60) + __pyx_v_mn)) * 60) + __pyx_v_s) * 1000); goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("lib.gmtime", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
132:
133: cpdef object to_datetime(int64_t timestamp):
/* "lib.pyx":133 * return ((<int64_t> (((days * 24 + h) * 60 + mn))) * 60 + s) * 1000 * * cpdef object to_datetime(int64_t timestamp): #<<<<<<<<<<<<<<* return pydatetime.utcfromtimestamp(timestamp / 1000.0) * */ static PyObject *__pyx_pw_3lib_5to_datetime(PyObject *__pyx_self, PyObject *__pyx_arg_timestamp); /*proto*/ static PyObject *__pyx_f_3lib_to_datetime(__pyx_t_5numpy_int64_t __pyx_v_timestamp, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_datetime", 0); /* "lib.pyx":133 * return ((<int64_t> (((days * 24 + h) * 60 + mn))) * 60 + s) * 1000 * * cpdef object to_datetime(int64_t timestamp): #<<<<<<<<<<<<<<* return pydatetime.utcfromtimestamp(timestamp / 1000.0) * */ static PyObject *__pyx_pf_3lib_4to_datetime(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_timestamp) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_datetime", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_3lib_to_datetime(__pyx_v_timestamp, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("lib.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
134: return pydatetime.utcfromtimestamp(timestamp / 1000.0)
/* "lib.pyx":134 * * cpdef object to_datetime(int64_t timestamp): * return pydatetime.utcfromtimestamp(timestamp / 1000.0) #<<<<<<<<<<<<<<* * cpdef object to_timestamp(object dt): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__pydatetime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__utcfromtimestamp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble((__pyx_v_timestamp / 1000.0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("lib.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_5to_datetime(PyObject *__pyx_self, PyObject *__pyx_arg_timestamp); /*proto*/ static PyObject *__pyx_pw_3lib_5to_datetime(PyObject *__pyx_self, PyObject *__pyx_arg_timestamp) { __pyx_t_5numpy_int64_t __pyx_v_timestamp; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_datetime (wrapper)", 0); assert(__pyx_arg_timestamp); { __pyx_v_timestamp = __Pyx_PyInt_from_py_npy_int64(__pyx_arg_timestamp); if (unlikely((__pyx_v_timestamp == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; __Pyx_AddTraceback("lib.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_3lib_4to_datetime(__pyx_self, ((__pyx_t_5numpy_int64_t)__pyx_v_timestamp)); __Pyx_RefNannyFinishContext(); return __pyx_r; }
135:
136: cpdef object to_timestamp(object dt):
/* "lib.pyx":136 * return pydatetime.utcfromtimestamp(timestamp / 1000.0) * * cpdef object to_timestamp(object dt): #<<<<<<<<<<<<<<* return gmtime(dt) * */ static PyObject *__pyx_pw_3lib_7to_timestamp(PyObject *__pyx_self, PyObject *__pyx_v_dt); /*proto*/ static PyObject *__pyx_f_3lib_to_timestamp(PyObject *__pyx_v_dt, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_timestamp", 0); /* "lib.pyx":136 * return pydatetime.utcfromtimestamp(timestamp / 1000.0) * * cpdef object to_timestamp(object dt): #<<<<<<<<<<<<<<* return gmtime(dt) * */ static PyObject *__pyx_pf_3lib_6to_timestamp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_timestamp", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_3lib_to_timestamp(__pyx_v_dt, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("lib.to_timestamp", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_9array_to_timestamp(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_9array_to_timestamp = {__Pyx_NAMESTR("array_to_timestamp"), (PyCFunction)__pyx_pw_3lib_9array_to_timestamp, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_9array_to_timestamp(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("array_to_timestamp (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_8array_to_timestamp(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
137: return gmtime(dt)
/* "lib.pyx":137 * * cpdef object to_timestamp(object dt): * return gmtime(dt) #<<<<<<<<<<<<<<* * def array_to_timestamp(ndarray[object, ndim=1] arr): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64(__pyx_f_3lib_gmtime(__pyx_v_dt)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("lib.to_timestamp", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_7to_timestamp(PyObject *__pyx_self, PyObject *__pyx_v_dt); /*proto*/ static PyObject *__pyx_pw_3lib_7to_timestamp(PyObject *__pyx_self, PyObject *__pyx_v_dt) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_timestamp (wrapper)", 0); __pyx_r = __pyx_pf_3lib_6to_timestamp(__pyx_self, ((PyObject *)__pyx_v_dt)); __Pyx_RefNannyFinishContext(); return __pyx_r; }
138:
139: def array_to_timestamp(ndarray[object, ndim=1] arr):
/* "lib.pyx":139 * return gmtime(dt) * * def array_to_timestamp(ndarray[object, ndim=1] arr): #<<<<<<<<<<<<<<* cdef int i, n * cdef ndarray[int64_t, ndim=1] result */ static PyObject *__pyx_pf_3lib_8array_to_timestamp(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { int __pyx_v_i; int __pyx_v_n; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("array_to_timestamp", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":139 * return gmtime(dt) * * def array_to_timestamp(ndarray[object, ndim=1] arr): #<<<<<<<<<<<<<<* cdef int i, n * cdef ndarray[int64_t, ndim=1] result */ __pyx_k_tuple_100 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_100)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_100); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_100, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_100, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_100, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_100, 3, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_100)); /* "lib.pyx":139 * return gmtime(dt) * * def array_to_timestamp(ndarray[object, ndim=1] arr): #<<<<<<<<<<<<<<* cdef int i, n * cdef ndarray[int64_t, ndim=1] result */ __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3lib_9array_to_timestamp, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__array_to_timestamp, __pyx_t_3)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_k_codeobj_101 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_100, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__array_to_timestamp, 139, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_101)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
140: cdef int i, n
141: cdef ndarray[int64_t, ndim=1] result
142:
143: n = len(arr)
/* "lib.pyx":143 * cdef ndarray[int64_t, ndim=1] result * * n = len(arr) #<<<<<<<<<<<<<<* result = np.empty(n, dtype=np.int64) * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
144: result = np.empty(n, dtype=np.int64)
/* "lib.pyx":144 * * n = len(arr) * result = np.empty(n, dtype=np.int64) #<<<<<<<<<<<<<<* * for i from 0<= i<n: */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
145:
146: for i from 0 <= i < n:
/* "lib.pyx":146 * result = np.empty(n, dtype=np.int64) * * for i from 0<= i<n: #<<<<<<<<<<<<<<* result[i] = gmtime(arr[i]) * */ __pyx_t_8 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_8; __pyx_v_i++) {
147: result[i] = gmtime(arr[i])
/* "lib.pyx":147
*
* for i from 0 <= i < n:
* result[i] = gmtime(arr[i]) # <<<<<<<<<<<<<<
*
* return result
*/
__pyx_t_12 = __pyx_v_i;
__pyx_t_13 = -1;
if (__pyx_t_12 < 0) {
__pyx_t_12 += __pyx_pybuffernd_arr.diminfo[0].shape;
if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
} else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_13 = 0;
if (unlikely(__pyx_t_13 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_13);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_14 = 0;
if (unlikely(__pyx_t_14 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_14);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_f_3lib_gmtime(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
148:
149: return result
/* "lib.pyx":149 * result[i] = gmtime(arr[i]) * * return result #<<<<<<<<<<<<<<* * def time64_to_datetime(ndarray[int64_t, ndim=1] arr): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.array_to_timestamp", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_11time64_to_datetime(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_11time64_to_datetime = {__Pyx_NAMESTR("time64_to_datetime"), (PyCFunction)__pyx_pw_3lib_11time64_to_datetime, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_11time64_to_datetime(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("time64_to_datetime (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_10time64_to_datetime(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
150:
151: def time64_to_datetime(ndarray[int64_t, ndim=1] arr):
/* "lib.pyx":151 * return result * * def time64_to_datetime(ndarray[int64_t, ndim=1] arr): #<<<<<<<<<<<<<<* cdef int i, n * cdef ndarray[object, ndim=1] result */ static PyObject *__pyx_pf_3lib_10time64_to_datetime(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { int __pyx_v_i; int __pyx_v_n; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("time64_to_datetime", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":151 * return result * * def time64_to_datetime(ndarray[int64_t, ndim=1] arr): #<<<<<<<<<<<<<<* cdef int i, n * cdef ndarray[object, ndim=1] result */ __pyx_k_tuple_102 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_102)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_102); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_102, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_102, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_102, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_102, 3, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_102)); /* "lib.pyx":151 * return result * * def time64_to_datetime(ndarray[int64_t, ndim=1] arr): #<<<<<<<<<<<<<<* cdef int i, n * cdef ndarray[object, ndim=1] result */ __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_3lib_11time64_to_datetime, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__time64_to_datetime, __pyx_t_3)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_k_codeobj_103 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_102, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__time64_to_datetime, 151, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_103)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
152: cdef int i, n
153: cdef ndarray[object, ndim=1] result
154:
155: n = len(arr)
/* "lib.pyx":155 * cdef ndarray[object, ndim=1] result * * n = len(arr) #<<<<<<<<<<<<<<* result = np.empty(n, dtype=object) * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
156: result = np.empty(n, dtype=object)
/* "lib.pyx":156 * * n = len(arr) * result = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* * for i from 0<= i<n: */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
157:
158: for i from 0 <= i < n:
/* "lib.pyx":158 * result = np.empty(n, dtype=object) * * for i from 0<= i<n: #<<<<<<<<<<<<<<* result[i] = to_datetime(arr[i]) * */ __pyx_t_7 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_7; __pyx_v_i++) {
159: result[i] = to_datetime(arr[i])
/* "lib.pyx":159
*
* for i from 0 <= i < n:
* result[i] = to_datetime(arr[i]) # <<<<<<<<<<<<<<
*
* return result
*/
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = -1;
if (__pyx_t_11 < 0) {
__pyx_t_11 += __pyx_pybuffernd_arr.diminfo[0].shape;
if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
} else if (unlikely(__pyx_t_11 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_12 = 0;
if (unlikely(__pyx_t_12 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_12);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = __pyx_f_3lib_to_datetime((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_arr.diminfo[0].strides)), 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_12 = __pyx_v_i;
__pyx_t_13 = -1;
if (__pyx_t_12 < 0) {
__pyx_t_12 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
} else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_13 = 0;
if (unlikely(__pyx_t_13 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_13);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_14);
__Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(*__pyx_t_14);
*__pyx_t_14 = __pyx_t_5;
__Pyx_GIVEREF(*__pyx_t_14);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
160:
161: return result
/* "lib.pyx":161 * result[i] = to_datetime(arr[i]) * * return result #<<<<<<<<<<<<<<* * #---------------------------------------------------------------------- */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.time64_to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
162:
163: #----------------------------------------------------------------------
164: # isnull / notnull related
165:
166: cdef double INF = <double> np.inf
/* "lib.pyx":166 * # isnull / notnull related * * cdef double INF =<double> np.inf #<<<<<<<<<<<<<<* cdef double NEGINF = -INF * */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__inf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_3lib_INF = ((double)__pyx_t_4);
167: cdef double NEGINF = -INF
/* "lib.pyx":167 * * cdef double INF =<double> np.inf * cdef double NEGINF = -INF #<<<<<<<<<<<<<<* * */ __pyx_v_3lib_NEGINF = (-__pyx_v_3lib_INF);
168:
169:
170: cpdef checknull(object val):
/* "lib.pyx":170 * * * cpdef checknull(object val): #<<<<<<<<<<<<<<* if util.is_float_object(val) or util.is_complex_object(val): * return val != val # and val != INF and val != NEGINF */ static PyObject *__pyx_pw_3lib_13checknull(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/ static PyObject *__pyx_f_3lib_checknull(PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("checknull", 0); /* "lib.pyx":170 * * * cpdef checknull(object val): #<<<<<<<<<<<<<<* if util.is_float_object(val) or util.is_complex_object(val): * return val != val # and val != INF and val != NEGINF */ static PyObject *__pyx_pf_3lib_12checknull(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_val) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("checknull", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_3lib_checknull(__pyx_v_val, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("lib.checknull", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; }
171: if util.is_float_object(val) or util.is_complex_object(val):
/* "lib.pyx":171 * * cpdef checknull(object val): * if util.is_float_object(val) or util.is_complex_object(val): #<<<<<<<<<<<<<<* return val != val # and val != INF and val != NEGINF * elif util.is_datetime64_object(val): */ __pyx_t_1 = is_float_object(__pyx_v_val); if (!__pyx_t_1) { __pyx_t_2 = is_complex_object(__pyx_v_val); __pyx_t_3 = __pyx_t_2; } else { __pyx_t_3 = __pyx_t_1; } if (__pyx_t_3) {
172: return val != val # and val != INF and val != NEGINF
/* "lib.pyx":172
* cpdef checknull(object val):
* if util.is_float_object(val) or util.is_complex_object(val):
* return val != val # and val != INF and val != NEGINF # <<<<<<<<<<<<<<
* elif util.is_datetime64_object(val):
* return get_datetime64_value(val) == NPY_NAT
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = PyObject_RichCompare(__pyx_v_val, __pyx_v_val, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
173: elif util.is_datetime64_object(val):
/* "lib.pyx":173 * if util.is_float_object(val) or util.is_complex_object(val): * return val != val # and val != INF and val != NEGINF * elif util.is_datetime64_object(val): #<<<<<<<<<<<<<<* return get_datetime64_value(val) == NPY_NAT * elif val is NaT: */ __pyx_t_1 = is_datetime64_object(__pyx_v_val); if (__pyx_t_1) {
174: return get_datetime64_value(val) == NPY_NAT
/* "lib.pyx":174
* return val != val # and val != INF and val != NEGINF
* elif util.is_datetime64_object(val):
* return get_datetime64_value(val) == NPY_NAT # <<<<<<<<<<<<<<
* elif val is NaT:
* return True
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = __Pyx_PyBool_FromLong((get_datetime64_value(__pyx_v_val) == __pyx_v_3lib_NPY_NAT)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
175: elif val is NaT:
/* "lib.pyx":175 * elif util.is_datetime64_object(val): * return get_datetime64_value(val) == NPY_NAT * elif val is NaT: #<<<<<<<<<<<<<<* return True * elif is_array(val): */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__NaT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_val == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
176: return True
/* "lib.pyx":176
* return get_datetime64_value(val) == NPY_NAT
* elif val is NaT:
* return True # <<<<<<<<<<<<<<
* elif is_array(val):
* return False
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
177: elif is_array(val):
/* "lib.pyx":177 * elif val is NaT: * return True * elif is_array(val): #<<<<<<<<<<<<<<* return False * else: */ __pyx_t_4 = __pyx_f_4util_is_array(__pyx_v_val); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
178: return False
/* "lib.pyx":178
* return True
* elif is_array(val):
* return False # <<<<<<<<<<<<<<
* else:
* return util._checknull(val)
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
/*else*/ {
179: else:
180: return util._checknull(val)
/* "lib.pyx":180
* return False
* else:
* return util._checknull(val) # <<<<<<<<<<<<<<
*
* cpdef checknull_old(object val):
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_f_4util__checknull(__pyx_v_val)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L0;
}
__pyx_L3:;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("lib.checknull", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_3lib_13checknull(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/
static PyObject *__pyx_pw_3lib_13checknull(PyObject *__pyx_self, PyObject *__pyx_v_val) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("checknull (wrapper)", 0);
__pyx_r = __pyx_pf_3lib_12checknull(__pyx_self, ((PyObject *)__pyx_v_val));
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
181:
182: cpdef checknull_old(object val):
/* "lib.pyx":182 * return util._checknull(val) * * cpdef checknull_old(object val): #<<<<<<<<<<<<<<* if util.is_float_object(val) or util.is_complex_object(val): * return val != val or val == INF or val == NEGINF */ static PyObject *__pyx_pw_3lib_15checknull_old(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/ static PyObject *__pyx_f_3lib_checknull_old(PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("checknull_old", 0); /* "lib.pyx":182 * return util._checknull(val) * * cpdef checknull_old(object val): #<<<<<<<<<<<<<<* if util.is_float_object(val) or util.is_complex_object(val): * return val != val or val == INF or val == NEGINF */ static PyObject *__pyx_pf_3lib_14checknull_old(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_val) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("checknull_old", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_3lib_checknull_old(__pyx_v_val, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("lib.checknull_old", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_17isscalar(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/ static PyMethodDef __pyx_mdef_3lib_17isscalar = {__Pyx_NAMESTR("isscalar"), (PyCFunction)__pyx_pw_3lib_17isscalar, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_17isscalar(PyObject *__pyx_self, PyObject *__pyx_v_val) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isscalar (wrapper)", 0); __pyx_r = __pyx_pf_3lib_16isscalar(__pyx_self, ((PyObject *)__pyx_v_val)); __Pyx_RefNannyFinishContext(); return __pyx_r; }
183: if util.is_float_object(val) or util.is_complex_object(val):
/* "lib.pyx":183 * * cpdef checknull_old(object val): * if util.is_float_object(val) or util.is_complex_object(val): #<<<<<<<<<<<<<<* return val != val or val == INF or val == NEGINF * elif util.is_datetime64_object(val): */ __pyx_t_1 = is_float_object(__pyx_v_val); if (!__pyx_t_1) { __pyx_t_2 = is_complex_object(__pyx_v_val); __pyx_t_3 = __pyx_t_2; } else { __pyx_t_3 = __pyx_t_1; } if (__pyx_t_3) {
184: return val != val or val == INF or val == NEGINF
/* "lib.pyx":184
* cpdef checknull_old(object val):
* if util.is_float_object(val) or util.is_complex_object(val):
* return val != val or val == INF or val == NEGINF # <<<<<<<<<<<<<<
* elif util.is_datetime64_object(val):
* return get_datetime64_value(val) == NPY_NAT
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_4 = PyObject_RichCompare(__pyx_v_val, __pyx_v_val, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (!__pyx_t_3) {
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_3lib_INF); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyObject_RichCompare(__pyx_v_val, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (!__pyx_t_3) {
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_3lib_NEGINF); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = PyObject_RichCompare(__pyx_v_val, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __pyx_t_7;
__pyx_t_7 = 0;
} else {
__pyx_t_5 = __pyx_t_6;
__pyx_t_6 = 0;
}
__pyx_t_6 = __pyx_t_5;
__pyx_t_5 = 0;
} else {
__pyx_t_6 = __pyx_t_4;
__pyx_t_4 = 0;
}
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
185: elif util.is_datetime64_object(val):
/* "lib.pyx":185 * if util.is_float_object(val) or util.is_complex_object(val): * return val != val or val == INF or val == NEGINF * elif util.is_datetime64_object(val): #<<<<<<<<<<<<<<* return get_datetime64_value(val) == NPY_NAT * elif val is NaT: */ __pyx_t_1 = is_datetime64_object(__pyx_v_val); if (__pyx_t_1) {
186: return get_datetime64_value(val) == NPY_NAT
/* "lib.pyx":186
* return val != val or val == INF or val == NEGINF
* elif util.is_datetime64_object(val):
* return get_datetime64_value(val) == NPY_NAT # <<<<<<<<<<<<<<
* elif val is NaT:
* return True
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_6 = __Pyx_PyBool_FromLong((get_datetime64_value(__pyx_v_val) == __pyx_v_3lib_NPY_NAT)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
187: elif val is NaT:
/* "lib.pyx":187 * elif util.is_datetime64_object(val): * return get_datetime64_value(val) == NPY_NAT * elif val is NaT: #<<<<<<<<<<<<<<* return True * elif is_array(val): */ __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__NaT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = (__pyx_v_val == __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_3) {
188: return True
/* "lib.pyx":188
* return get_datetime64_value(val) == NPY_NAT
* elif val is NaT:
* return True # <<<<<<<<<<<<<<
* elif is_array(val):
* return False
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
189: elif is_array(val):
/* "lib.pyx":189 * elif val is NaT: * return True * elif is_array(val): #<<<<<<<<<<<<<<* return False * else: */ __pyx_t_6 = __pyx_f_4util_is_array(__pyx_v_val); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_3) {
190: return False
/* "lib.pyx":190
* return True
* elif is_array(val):
* return False # <<<<<<<<<<<<<<
* else:
* return util._checknull(val)
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_6 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
goto __pyx_L0;
goto __pyx_L3;
}
/*else*/ {
191: else:
192: return util._checknull(val)
/* "lib.pyx":192
* return False
* else:
* return util._checknull(val) # <<<<<<<<<<<<<<
*
* def isscalar(object val):
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_f_4util__checknull(__pyx_v_val)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
goto __pyx_L0;
}
__pyx_L3:;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("lib.checknull_old", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_3lib_15checknull_old(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/
static PyObject *__pyx_pw_3lib_15checknull_old(PyObject *__pyx_self, PyObject *__pyx_v_val) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("checknull_old (wrapper)", 0);
__pyx_r = __pyx_pf_3lib_14checknull_old(__pyx_self, ((PyObject *)__pyx_v_val));
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
193:
194: def isscalar(object val):
/* "lib.pyx":194 * return util._checknull(val) * * def isscalar(object val): #<<<<<<<<<<<<<<* return np.isscalar(val) or val is None or PyDateTime_Check(val) * */ static PyObject *__pyx_pf_3lib_16isscalar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_val) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isscalar", 0); /* "lib.pyx":194 * return util._checknull(val) * * def isscalar(object val): #<<<<<<<<<<<<<<* return np.isscalar(val) or val is None or PyDateTime_Check(val) * */ __pyx_k_tuple_104 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_104)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_104); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_104, 0, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_104)); /* "lib.pyx":194 * return util._checknull(val) * * def isscalar(object val): #<<<<<<<<<<<<<<* return np.isscalar(val) or val is None or PyDateTime_Check(val) * */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_17isscalar, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isscalar, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_105 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__isscalar, 194, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_105)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
195: return np.isscalar(val) or val is None or PyDateTime_Check(val)
/* "lib.pyx":195 * * def isscalar(object val): * return np.isscalar(val) or val is None or PyDateTime_Check(val) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__isscalar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_val); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_val); __Pyx_GIVEREF(__pyx_v_val); __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!__pyx_t_4) { __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = (__pyx_v_val == Py_None); if (!__pyx_t_4) { __pyx_t_5 = PyDateTime_Check(__pyx_v_val); __pyx_t_6 = __pyx_t_5; } else { __pyx_t_6 = __pyx_t_4; } __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_t_1; __pyx_t_1 = 0; } else { __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("lib.isscalar", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_19isnullobj(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_19isnullobj = {__Pyx_NAMESTR("isnullobj"), (PyCFunction)__pyx_pw_3lib_19isnullobj, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_19isnullobj(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_18isnullobj(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
196:
197:
198: @cython.wraparound(False)
199: @cython.boundscheck(False)
200: def isnullobj(ndarray[object] arr):
/* "lib.pyx":200 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ static PyObject *__pyx_pf_3lib_18isnullobj(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":200 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ __pyx_k_tuple_106 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_106)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_106); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_106, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_106, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_106, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_106, 3, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_106, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_106)); /* "lib.pyx":200 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_19isnullobj, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnullobj, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_107 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_106, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__isnullobj, 200, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_107)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
201: cdef Py_ssize_t i, n
202: cdef object val
203: cdef ndarray[uint8_t] result
204:
205: n = len(arr)
/* "lib.pyx":205 * cdef ndarray[uint8_t] result * * n = len(arr) #<<<<<<<<<<<<<<* result = np.zeros(n, dtype=np.uint8) * for i from 0<= i<n: */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
206: result = np.zeros(n, dtype=np.uint8)
/* "lib.pyx":206 * * n = len(arr) * result = np.zeros(n, dtype=np.uint8) #<<<<<<<<<<<<<<* for i from 0<= i<n: * result[i] = util._checknull(arr[i]) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
207: for i from 0 <= i < n:
/* "lib.pyx":207 * n = len(arr) * result = np.zeros(n, dtype=np.uint8) * for i from 0<= i<n: #<<<<<<<<<<<<<<* result[i] = util._checknull(arr[i]) * return result.view(np.bool_) */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
208: result[i] = util._checknull(arr[i])
/* "lib.pyx":208
* result = np.zeros(n, dtype=np.uint8)
* for i from 0 <= i < n:
* result[i] = util._checknull(arr[i]) # <<<<<<<<<<<<<<
* return result.view(np.bool_)
*
*/
__pyx_t_12 = __pyx_v_i;
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__pyx_t_13 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_f_4util__checknull(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
209: return result.view(np.bool_)
/* "lib.pyx":209 * for i from 0<= i<n: * result[i] = util._checknull(arr[i]) * return result.view(np.bool_) #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__bool_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.isnullobj", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_21isnullobj_old(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_21isnullobj_old = {__Pyx_NAMESTR("isnullobj_old"), (PyCFunction)__pyx_pw_3lib_21isnullobj_old, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_21isnullobj_old(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj_old (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_20isnullobj_old(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
210:
211: @cython.wraparound(False)
212: @cython.boundscheck(False)
213: def isnullobj_old(ndarray[object] arr):
/* "lib.pyx":213 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj_old(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ static PyObject *__pyx_pf_3lib_20isnullobj_old(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj_old", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":213 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj_old(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ __pyx_k_tuple_108 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_108)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_108); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_108, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_108, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_108, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_108, 3, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_108, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_108)); /* "lib.pyx":213 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj_old(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_21isnullobj_old, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnullobj_old, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_109 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__isnullobj_old, 213, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_109)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
214: cdef Py_ssize_t i, n
215: cdef object val
216: cdef ndarray[uint8_t] result
217:
218: n = len(arr)
/* "lib.pyx":218 * cdef ndarray[uint8_t] result * * n = len(arr) #<<<<<<<<<<<<<<* result = np.zeros(n, dtype=np.uint8) * for i from 0<= i<n: */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
219: result = np.zeros(n, dtype=np.uint8)
/* "lib.pyx":219 * * n = len(arr) * result = np.zeros(n, dtype=np.uint8) #<<<<<<<<<<<<<<* for i from 0<= i<n: * result[i] = util._checknull_old(arr[i]) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
220: for i from 0 <= i < n:
/* "lib.pyx":220 * n = len(arr) * result = np.zeros(n, dtype=np.uint8) * for i from 0<= i<n: #<<<<<<<<<<<<<<* result[i] = util._checknull_old(arr[i]) * return result.view(np.bool_) */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
221: result[i] = util._checknull_old(arr[i])
/* "lib.pyx":221
* result = np.zeros(n, dtype=np.uint8)
* for i from 0 <= i < n:
* result[i] = util._checknull_old(arr[i]) # <<<<<<<<<<<<<<
* return result.view(np.bool_)
*
*/
__pyx_t_12 = __pyx_v_i;
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__pyx_t_13 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_f_4util__checknull_old(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
222: return result.view(np.bool_)
/* "lib.pyx":222 * for i from 0<= i<n: * result[i] = util._checknull_old(arr[i]) * return result.view(np.bool_) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__bool_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.isnullobj_old", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_23isnullobj2d(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_23isnullobj2d = {__Pyx_NAMESTR("isnullobj2d"), (PyCFunction)__pyx_pw_3lib_23isnullobj2d, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_23isnullobj2d(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj2d (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_22isnullobj2d(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
223:
224:
225: @cython.wraparound(False)
226: @cython.boundscheck(False)
227: def isnullobj2d(ndarray[object, ndim=2] arr):
/* "lib.pyx":227 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj2d(ndarray[object, ndim=2] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, j, n, m * cdef object val */ static PyObject *__pyx_pf_3lib_22isnullobj2d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_m; PyObject *__pyx_v_val = 0; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj2d", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_arr.diminfo[1].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_arr.diminfo[1].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[1]; /* "lib.pyx":227 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj2d(ndarray[object, ndim=2] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, j, n, m * cdef object val */ __pyx_k_tuple_110 = PyTuple_New(7); if (unlikely(!__pyx_k_tuple_110)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_110); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 2, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__m)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 4, ((PyObject *)__pyx_n_s__m)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__m)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 5, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_110, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_110)); /* "lib.pyx":227 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj2d(ndarray[object, ndim=2] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, j, n, m * cdef object val */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_23isnullobj2d, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnullobj2d, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_111 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__isnullobj2d, 227, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_111)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
228: cdef Py_ssize_t i, j, n, m
229: cdef object val
230: cdef ndarray[uint8_t, ndim=2] result
231:
232: n, m = (<object> arr).shape
/* "lib.pyx":232 * cdef ndarray[uint8_t, ndim=2] result * * n, m = (<object> arr).shape #<<<<<<<<<<<<<<* result = np.zeros((n, m), dtype=np.uint8) * for i from 0<= i<n: */ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_arr), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_n = __pyx_t_6; __pyx_v_m = __pyx_t_7;
233: result = np.zeros((n, m), dtype=np.uint8)
/* "lib.pyx":233 * * n, m = (<object> arr).shape * result = np.zeros((n, m), dtype=np.uint8) #<<<<<<<<<<<<<<* for i from 0<= i<n: * for j from 0<= j<m: */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__uint8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = ((PyArrayObject *)__pyx_t_8); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); if (unlikely(__pyx_t_10<0)) { PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_result.diminfo[1].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_result.diminfo[1].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_10<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_8); __pyx_t_8 = 0;
234: for i from 0 <= i < n:
/* "lib.pyx":234 * n, m = (<object> arr).shape * result = np.zeros((n, m), dtype=np.uint8) * for i from 0<= i<n: #<<<<<<<<<<<<<<* for j from 0<= j<m: * val = arr[i, j] */ __pyx_t_7 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_7; __pyx_v_i++) {
235: for j from 0 <= j < m:
/* "lib.pyx":235
* result = np.zeros((n, m), dtype=np.uint8)
* for i from 0 <= i < n:
* for j from 0 <= j < m: # <<<<<<<<<<<<<<
* val = arr[i, j]
* if checknull(val):
*/
__pyx_t_6 = __pyx_v_m;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_6; __pyx_v_j++) {
236: val = arr[i, j]
/* "lib.pyx":236
* for i from 0 <= i < n:
* for j from 0 <= j < m:
* val = arr[i, j] # <<<<<<<<<<<<<<
* if checknull(val):
* result[i, j] = 1
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_15 = __pyx_v_j;
__pyx_t_8 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_arr.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_arr.diminfo[1].strides);
__Pyx_INCREF((PyObject*)__pyx_t_8);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_8;
__pyx_t_8 = 0;
237: if checknull(val):
/* "lib.pyx":237
* for j from 0 <= j < m:
* val = arr[i, j]
* if checknull(val): # <<<<<<<<<<<<<<
* result[i, j] = 1
* return result.view(np.bool_)
*/
__pyx_t_8 = __pyx_f_3lib_checknull(__pyx_v_val, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (__pyx_t_16) {
238: result[i, j] = 1
/* "lib.pyx":238
* val = arr[i, j]
* if checknull(val):
* result[i, j] = 1 # <<<<<<<<<<<<<<
* return result.view(np.bool_)
*
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_18 = __pyx_v_j;
*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_result.diminfo[1].strides) = 1;
goto __pyx_L9;
}
__pyx_L9:;
}
}
239: return result.view(np.bool_)
/* "lib.pyx":239 * if checknull(val): * result[i, j] = 1 * return result.view(np.bool_) #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__bool_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_8); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.isnullobj2d", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_25isnullobj_old(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_25isnullobj_old = {__Pyx_NAMESTR("isnullobj_old"), (PyCFunction)__pyx_pw_3lib_25isnullobj_old, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_25isnullobj_old(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj_old (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_24isnullobj_old(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
240:
241: @cython.wraparound(False)
242: @cython.boundscheck(False)
243: def isnullobj_old(ndarray[object] arr):
/* "lib.pyx":243 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj_old(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ static PyObject *__pyx_pf_3lib_24isnullobj_old(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj_old", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":243 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj_old(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ __pyx_k_tuple_112 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_112)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_112); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_112, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_112, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_112, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_112, 3, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_112, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_112)); /* "lib.pyx":243 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj_old(ndarray[object] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, n * cdef object val */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_25isnullobj_old, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnullobj_old, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_113 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_112, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__isnullobj_old, 243, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_113)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
244: cdef Py_ssize_t i, n
245: cdef object val
246: cdef ndarray[uint8_t] result
247:
248: n = len(arr)
/* "lib.pyx":248 * cdef ndarray[uint8_t] result * * n = len(arr) #<<<<<<<<<<<<<<* result = np.zeros(n, dtype=np.uint8) * for i from 0<= i<n: */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
249: result = np.zeros(n, dtype=np.uint8)
/* "lib.pyx":249 * * n = len(arr) * result = np.zeros(n, dtype=np.uint8) #<<<<<<<<<<<<<<* for i from 0<= i<n: * result[i] = util._checknull_old(arr[i]) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
250: for i from 0 <= i < n:
/* "lib.pyx":250 * n = len(arr) * result = np.zeros(n, dtype=np.uint8) * for i from 0<= i<n: #<<<<<<<<<<<<<<* result[i] = util._checknull_old(arr[i]) * return result.view(np.bool_) */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
251: result[i] = util._checknull_old(arr[i])
/* "lib.pyx":251
* result = np.zeros(n, dtype=np.uint8)
* for i from 0 <= i < n:
* result[i] = util._checknull_old(arr[i]) # <<<<<<<<<<<<<<
* return result.view(np.bool_)
*
*/
__pyx_t_12 = __pyx_v_i;
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__pyx_t_13 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_f_4util__checknull_old(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
252: return result.view(np.bool_)
/* "lib.pyx":252 * for i from 0<= i<n: * result[i] = util._checknull_old(arr[i]) * return result.view(np.bool_) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__bool_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.isnullobj_old", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_27isnullobj2d_old(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_27isnullobj2d_old = {__Pyx_NAMESTR("isnullobj2d_old"), (PyCFunction)__pyx_pw_3lib_27isnullobj2d_old, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_27isnullobj2d_old(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj2d_old (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_26isnullobj2d_old(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
253:
254:
255: @cython.wraparound(False)
256: @cython.boundscheck(False)
257: def isnullobj2d_old(ndarray[object, ndim=2] arr):
/* "lib.pyx":257 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj2d_old(ndarray[object, ndim=2] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, j, n, m * cdef object val */ static PyObject *__pyx_pf_3lib_26isnullobj2d_old(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_m; PyObject *__pyx_v_val = 0; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("isnullobj2d_old", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_arr.diminfo[1].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_arr.diminfo[1].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[1]; /* "lib.pyx":257 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj2d_old(ndarray[object, ndim=2] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, j, n, m * cdef object val */ __pyx_k_tuple_114 = PyTuple_New(7); if (unlikely(!__pyx_k_tuple_114)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_114); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 2, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__m)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 4, ((PyObject *)__pyx_n_s__m)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__m)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 5, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_114, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_114)); /* "lib.pyx":257 * @cython.wraparound(False) * @cython.boundscheck(False) * def isnullobj2d_old(ndarray[object, ndim=2] arr): #<<<<<<<<<<<<<<* cdef Py_ssize_t i, j, n, m * cdef object val */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_27isnullobj2d_old, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnullobj2d_old, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_115 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_114, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__isnullobj2d_old, 257, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_115)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
258: cdef Py_ssize_t i, j, n, m
259: cdef object val
260: cdef ndarray[uint8_t, ndim=2] result
261:
262: n, m = (<object> arr).shape
/* "lib.pyx":262 * cdef ndarray[uint8_t, ndim=2] result * * n, m = (<object> arr).shape #<<<<<<<<<<<<<<* result = np.zeros((n, m), dtype=np.uint8) * for i from 0<= i<n: */ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_arr), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_n = __pyx_t_6; __pyx_v_m = __pyx_t_7;
263: result = np.zeros((n, m), dtype=np.uint8)
/* "lib.pyx":263 * * n, m = (<object> arr).shape * result = np.zeros((n, m), dtype=np.uint8) #<<<<<<<<<<<<<<* for i from 0<= i<n: * for j from 0<= j<m: */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__uint8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = ((PyArrayObject *)__pyx_t_8); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); if (unlikely(__pyx_t_10<0)) { PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_result.diminfo[1].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_result.diminfo[1].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_10<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_8); __pyx_t_8 = 0;
264: for i from 0 <= i < n:
/* "lib.pyx":264 * n, m = (<object> arr).shape * result = np.zeros((n, m), dtype=np.uint8) * for i from 0<= i<n: #<<<<<<<<<<<<<<* for j from 0<= j<m: * val = arr[i, j] */ __pyx_t_7 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_7; __pyx_v_i++) {
265: for j from 0 <= j < m:
/* "lib.pyx":265
* result = np.zeros((n, m), dtype=np.uint8)
* for i from 0 <= i < n:
* for j from 0 <= j < m: # <<<<<<<<<<<<<<
* val = arr[i, j]
* if checknull_old(val):
*/
__pyx_t_6 = __pyx_v_m;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_6; __pyx_v_j++) {
266: val = arr[i, j]
/* "lib.pyx":266
* for i from 0 <= i < n:
* for j from 0 <= j < m:
* val = arr[i, j] # <<<<<<<<<<<<<<
* if checknull_old(val):
* result[i, j] = 1
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_15 = __pyx_v_j;
__pyx_t_8 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_arr.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_arr.diminfo[1].strides);
__Pyx_INCREF((PyObject*)__pyx_t_8);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_8;
__pyx_t_8 = 0;
267: if checknull_old(val):
/* "lib.pyx":267
* for j from 0 <= j < m:
* val = arr[i, j]
* if checknull_old(val): # <<<<<<<<<<<<<<
* result[i, j] = 1
* return result.view(np.bool_)
*/
__pyx_t_8 = __pyx_f_3lib_checknull_old(__pyx_v_val, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (__pyx_t_16) {
268: result[i, j] = 1
/* "lib.pyx":268
* val = arr[i, j]
* if checknull_old(val):
* result[i, j] = 1 # <<<<<<<<<<<<<<
* return result.view(np.bool_)
*
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_18 = __pyx_v_j;
*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_result.diminfo[1].strides) = 1;
goto __pyx_L9;
}
__pyx_L9:;
}
}
269: return result.view(np.bool_)
/* "lib.pyx":269 * if checknull_old(val): * result[i, j] = 1 * return result.view(np.bool_) #<<<<<<<<<<<<<<* * def list_to_object_array(list obj): */ __Pyx_XDECREF(__pyx_r); __pyx_t_8 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__bool_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_8); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.isnullobj2d_old", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_29list_to_object_array(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/ static char __pyx_doc_3lib_28list_to_object_array[] = "\n Convert list to object ndarray. Seriously can't believe I had to write this\n function\n "; static PyMethodDef __pyx_mdef_3lib_29list_to_object_array = {__Pyx_NAMESTR("list_to_object_array"), (PyCFunction)__pyx_pw_3lib_29list_to_object_array, METH_O, __Pyx_DOCSTR(__pyx_doc_3lib_28list_to_object_array)}; static PyObject *__pyx_pw_3lib_29list_to_object_array(PyObject *__pyx_self, PyObject *__pyx_v_obj) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("list_to_object_array (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), (&PyList_Type), 1, "obj", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_28list_to_object_array(__pyx_self, ((PyObject*)__pyx_v_obj)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
270:
271: def list_to_object_array(list obj):
/* "lib.pyx":271 * return result.view(np.bool_) * * def list_to_object_array(list obj): #<<<<<<<<<<<<<<* ''' * Convert list to object ndarray. Seriously can't believe I had to write this */ static PyObject *__pyx_pf_3lib_28list_to_object_array(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_arr = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("list_to_object_array", 0); __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; /* "lib.pyx":271 * return result.view(np.bool_) * * def list_to_object_array(list obj): #<<<<<<<<<<<<<<* ''' * Convert list to object ndarray. Seriously can't believe I had to write this */ __pyx_k_tuple_116 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_116)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_116); __Pyx_INCREF(((PyObject *)__pyx_n_s__obj)); PyTuple_SET_ITEM(__pyx_k_tuple_116, 0, ((PyObject *)__pyx_n_s__obj)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__obj)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_116, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_116, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_116, 3, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_116)); /* "lib.pyx":271 * return result.view(np.bool_) * * def list_to_object_array(list obj): #<<<<<<<<<<<<<<* ''' * Convert list to object ndarray. Seriously can't believe I had to write this */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_29list_to_object_array, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_49, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_117 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_116, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_49, 271, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_117)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
272: '''
273: Convert list to object ndarray. Seriously can't believe I had to write this
274: function
275: '''
276: cdef:
277: Py_ssize_t i, n
278: ndarray[object] arr
279:
280: n = len(obj)
/* "lib.pyx":280 * ndarray[object] arr * * n = len(obj) #<<<<<<<<<<<<<<* arr = np.empty(n, dtype=object) * */ if (unlikely(((PyObject *)__pyx_v_obj) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_obj)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
281: arr = np.empty(n, dtype=object)
/* "lib.pyx":281 * * n = len(obj) * arr = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* * for i from 0<= i<n: */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_arr = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
282:
283: for i from 0 <= i < n:
/* "lib.pyx":283 * arr = np.empty(n, dtype=object) * * for i from 0<= i<n: #<<<<<<<<<<<<<<* arr[i] = obj[i] * */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
284: arr[i] = obj[i]
/* "lib.pyx":284
*
* for i from 0 <= i < n:
* arr[i] = obj[i] # <<<<<<<<<<<<<<
*
* return arr
*/
if (unlikely(((PyObject *)__pyx_v_obj) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_obj), __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_5) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_11 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_11 < 0) {
__pyx_t_11 += __pyx_pybuffernd_arr.diminfo[0].shape;
if (unlikely(__pyx_t_11 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_11 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_12 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_12);
__Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(*__pyx_t_12);
*__pyx_t_12 = __pyx_t_5;
__Pyx_GIVEREF(*__pyx_t_12);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
285:
286: return arr
/* "lib.pyx":286 * arr[i] = obj[i] * * return arr #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_arr)); __pyx_r = ((PyObject *)__pyx_v_arr); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.list_to_object_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_arr); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_31fast_unique(PyObject *__pyx_self, PyObject *__pyx_v_values); /*proto*/ static PyMethodDef __pyx_mdef_3lib_31fast_unique = {__Pyx_NAMESTR("fast_unique"), (PyCFunction)__pyx_pw_3lib_31fast_unique, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_31fast_unique(PyObject *__pyx_self, PyObject *__pyx_v_values) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_30fast_unique(__pyx_self, ((PyArrayObject *)__pyx_v_values)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
287:
288:
289: @cython.wraparound(False)
290: @cython.boundscheck(False)
291: def fast_unique(ndarray[object] values):
/* "lib.pyx":291 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique(ndarray[object] values): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ static PyObject *__pyx_pf_3lib_30fast_unique(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_uniques = 0; PyObject *__pyx_v_table = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_stub = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique", 0); __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":291 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique(ndarray[object] values): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_k_tuple_118 = PyTuple_New(7); if (unlikely(!__pyx_k_tuple_118)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_118); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__uniques)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 3, ((PyObject *)__pyx_n_s__uniques)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__uniques)); __Pyx_INCREF(((PyObject *)__pyx_n_s__table)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 4, ((PyObject *)__pyx_n_s__table)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__table)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 5, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__stub)); PyTuple_SET_ITEM(__pyx_k_tuple_118, 6, ((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_118)); /* "lib.pyx":291 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique(ndarray[object] values): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_31fast_unique, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fast_unique, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_119 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__fast_unique, 291, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_119)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
292: cdef:
293: Py_ssize_t i, n = len(values)
/* "lib.pyx":293 * def fast_unique(ndarray[object] values): * cdef: * Py_ssize_t i, n = len(values) #<<<<<<<<<<<<<<* list uniques = [] * dict table = {} */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
294: list uniques = []
/* "lib.pyx":294 * cdef: * Py_ssize_t i, n = len(values) * list uniques = [] #<<<<<<<<<<<<<<* dict table = {} * object val, stub = 0 */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_uniques = __pyx_t_2; __pyx_t_2 = 0;
295: dict table = {}
/* "lib.pyx":295
* Py_ssize_t i, n = len(values)
* list uniques = []
* dict table = {} # <<<<<<<<<<<<<<
* object val, stub = 0
*
*/
__pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_v_table = __pyx_t_2;
__pyx_t_2 = 0;
296: object val, stub = 0
/* "lib.pyx":296
* list uniques = []
* dict table = {}
* object val, stub = 0 # <<<<<<<<<<<<<<
*
* for i from 0 <= i < n:
*/
__Pyx_INCREF(__pyx_int_0);
__pyx_v_stub = __pyx_int_0;
297:
298: for i from 0 <= i < n:
/* "lib.pyx":298 * object val, stub = 0 * * for i from 0<= i<n: #<<<<<<<<<<<<<<* val = values[i] * if val not in table: */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
299: val = values[i]
/* "lib.pyx":299
*
* for i from 0 <= i < n:
* val = values[i] # <<<<<<<<<<<<<<
* if val not in table:
* table[val] = stub
*/
__pyx_t_3 = __pyx_v_i;
__pyx_t_2 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_2);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
300: if val not in table:
/* "lib.pyx":300
* for i from 0 <= i < n:
* val = values[i]
* if val not in table: # <<<<<<<<<<<<<<
* table[val] = stub
* uniques.append(val)
*/
__pyx_t_4 = (__Pyx_PyDict_Contains(__pyx_v_val, ((PyObject *)__pyx_v_table), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_4) {
301: table[val] = stub
/* "lib.pyx":301
* val = values[i]
* if val not in table:
* table[val] = stub # <<<<<<<<<<<<<<
* uniques.append(val)
* try:
*/
if (PyDict_SetItem(((PyObject *)__pyx_v_table), __pyx_v_val, __pyx_v_stub) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
302: uniques.append(val)
/* "lib.pyx":302
* if val not in table:
* table[val] = stub
* uniques.append(val) # <<<<<<<<<<<<<<
* try:
* uniques.sort()
*/
__pyx_t_5 = PyList_Append(__pyx_v_uniques, __pyx_v_val); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
}
303: try:
/* "lib.pyx":303 * table[val] = stub * uniques.append(val) * try: #<<<<<<<<<<<<<<* uniques.sort() * except Exception: */ { __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); /*try:*/ {
304: uniques.sort()
/* "lib.pyx":304
* uniques.append(val)
* try:
* uniques.sort() # <<<<<<<<<<<<<<
* except Exception:
* pass
*/
__pyx_t_5 = PyList_Sort(((PyObject *)__pyx_v_uniques)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L13_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
305: except Exception:
/* "lib.pyx":305
* try:
* uniques.sort()
* except Exception: # <<<<<<<<<<<<<<
* pass
*
*/
__pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
if (__pyx_t_9) {
PyErr_Restore(0,0,0);
goto __pyx_L7_exception_handled;
}
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L7_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_L13_try_end:;
}
306: pass
307:
308: return uniques
/* "lib.pyx":308 * pass * * return uniques #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_uniques)); __pyx_r = ((PyObject *)__pyx_v_uniques); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.fast_unique", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_uniques); __Pyx_XDECREF(__pyx_v_table); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_stub); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_33fast_unique_multiple(PyObject *__pyx_self, PyObject *__pyx_v_arrays); /*proto*/ static PyMethodDef __pyx_mdef_3lib_33fast_unique_multiple = {__Pyx_NAMESTR("fast_unique_multiple"), (PyCFunction)__pyx_pw_3lib_33fast_unique_multiple, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_33fast_unique_multiple(PyObject *__pyx_self, PyObject *__pyx_v_arrays) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique_multiple (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arrays), (&PyList_Type), 1, "arrays", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_32fast_unique_multiple(__pyx_self, ((PyObject*)__pyx_v_arrays)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
309:
310: @cython.wraparound(False)
311: @cython.boundscheck(False)
312: def fast_unique_multiple(list arrays):
/* "lib.pyx":312 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple(list arrays): #<<<<<<<<<<<<<<* cdef: * ndarray[object] buf */ static PyObject *__pyx_pf_3lib_32fast_unique_multiple(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arrays) { PyArrayObject *__pyx_v_buf = 0; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_uniques = 0; PyObject *__pyx_v_table = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_stub = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_buf; __Pyx_Buffer __pyx_pybuffer_buf; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique_multiple", 0); __pyx_pybuffer_buf.pybuffer.buf = NULL; __pyx_pybuffer_buf.refcount = 0; __pyx_pybuffernd_buf.data = NULL; __pyx_pybuffernd_buf.rcbuffer = &__pyx_pybuffer_buf; /* "lib.pyx":312 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple(list arrays): #<<<<<<<<<<<<<<* cdef: * ndarray[object] buf */ __pyx_k_tuple_120 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_120)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_120); __Pyx_INCREF(((PyObject *)__pyx_n_s__arrays)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 0, ((PyObject *)__pyx_n_s__arrays)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arrays)); __Pyx_INCREF(((PyObject *)__pyx_n_s__buf)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 1, ((PyObject *)__pyx_n_s__buf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__buf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 2, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 4, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 5, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__uniques)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 6, ((PyObject *)__pyx_n_s__uniques)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__uniques)); __Pyx_INCREF(((PyObject *)__pyx_n_s__table)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 7, ((PyObject *)__pyx_n_s__table)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__table)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 8, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__stub)); PyTuple_SET_ITEM(__pyx_k_tuple_120, 9, ((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_120)); /* "lib.pyx":312 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple(list arrays): #<<<<<<<<<<<<<<* cdef: * ndarray[object] buf */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_33fast_unique_multiple, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_122, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_121 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_120, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_122, 312, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_121)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
313: cdef:
314: ndarray[object] buf
315: Py_ssize_t k = len(arrays)
/* "lib.pyx":315 * cdef: * ndarray[object] buf * Py_ssize_t k = len(arrays) #<<<<<<<<<<<<<<* Py_ssize_t i, j, n * list uniques = [] */ if (unlikely(((PyObject *)__pyx_v_arrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_arrays)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_k = __pyx_t_1;
316: Py_ssize_t i, j, n
317: list uniques = []
/* "lib.pyx":317 * Py_ssize_t k = len(arrays) * Py_ssize_t i, j, n * list uniques = [] #<<<<<<<<<<<<<<* dict table = {} * object val, stub = 0 */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_uniques = __pyx_t_2; __pyx_t_2 = 0;
318: dict table = {}
/* "lib.pyx":318
* Py_ssize_t i, j, n
* list uniques = []
* dict table = {} # <<<<<<<<<<<<<<
* object val, stub = 0
*
*/
__pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_v_table = __pyx_t_2;
__pyx_t_2 = 0;
319: object val, stub = 0
/* "lib.pyx":319
* list uniques = []
* dict table = {}
* object val, stub = 0 # <<<<<<<<<<<<<<
*
* for i from 0 <= i < k:
*/
__Pyx_INCREF(__pyx_int_0);
__pyx_v_stub = __pyx_int_0;
320:
321: for i from 0 <= i < k:
/* "lib.pyx":321 * object val, stub = 0 * * for i from 0<= i<k: #<<<<<<<<<<<<<<* buf = arrays[i] * n = len(buf) */ __pyx_t_1 = __pyx_v_k; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
322: buf = arrays[i]
/* "lib.pyx":322
*
* for i from 0 <= i < k:
* buf = arrays[i] # <<<<<<<<<<<<<<
* n = len(buf)
* for j from 0 <= j < n:
*/
if (unlikely(((PyObject *)__pyx_v_arrays) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
if (!(likely(((PyList_GET_ITEM(__pyx_v_arrays, __pyx_v_i)) == Py_None) || likely(__Pyx_TypeTest(PyList_GET_ITEM(__pyx_v_arrays, __pyx_v_i), __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_arrays, __pyx_v_i);
__Pyx_INCREF(__pyx_t_2);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_buf.rcbuffer->pybuffer);
__pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_buf.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
if (unlikely(__pyx_t_3 < 0)) {
PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_buf.rcbuffer->pybuffer, (PyObject*)__pyx_v_buf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
}
}
__pyx_pybuffernd_buf.diminfo[0].strides = __pyx_pybuffernd_buf.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_buf.diminfo[0].shape = __pyx_pybuffernd_buf.rcbuffer->pybuffer.shape[0];
if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_XDECREF(((PyObject *)__pyx_v_buf));
__pyx_v_buf = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
323: n = len(buf)
/* "lib.pyx":323
* for i from 0 <= i < k:
* buf = arrays[i]
* n = len(buf) # <<<<<<<<<<<<<<
* for j from 0 <= j < n:
* val = buf[j]
*/
__pyx_t_7 = PyObject_Length(((PyObject *)__pyx_v_buf)); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_n = __pyx_t_7;
324: for j from 0 <= j < n:
/* "lib.pyx":324
* buf = arrays[i]
* n = len(buf)
* for j from 0 <= j < n: # <<<<<<<<<<<<<<
* val = buf[j]
* if val not in table:
*/
__pyx_t_7 = __pyx_v_n;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_7; __pyx_v_j++) {
325: val = buf[j]
/* "lib.pyx":325
* n = len(buf)
* for j from 0 <= j < n:
* val = buf[j] # <<<<<<<<<<<<<<
* if val not in table:
* table[val] = stub
*/
__pyx_t_8 = __pyx_v_j;
__pyx_t_2 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_buf.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_buf.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_2);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
326: if val not in table:
/* "lib.pyx":326
* for j from 0 <= j < n:
* val = buf[j]
* if val not in table: # <<<<<<<<<<<<<<
* table[val] = stub
* uniques.append(val)
*/
__pyx_t_9 = (__Pyx_PyDict_Contains(__pyx_v_val, ((PyObject *)__pyx_v_table), Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_9) {
327: table[val] = stub
/* "lib.pyx":327
* val = buf[j]
* if val not in table:
* table[val] = stub # <<<<<<<<<<<<<<
* uniques.append(val)
* try:
*/
if (PyDict_SetItem(((PyObject *)__pyx_v_table), __pyx_v_val, __pyx_v_stub) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
328: uniques.append(val)
/* "lib.pyx":328
* if val not in table:
* table[val] = stub
* uniques.append(val) # <<<<<<<<<<<<<<
* try:
* uniques.sort()
*/
__pyx_t_10 = PyList_Append(__pyx_v_uniques, __pyx_v_val); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
}
}
329: try:
/* "lib.pyx":329 * table[val] = stub * uniques.append(val) * try: #<<<<<<<<<<<<<<* uniques.sort() * except Exception: */ { __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_4); /*try:*/ {
330: uniques.sort()
/* "lib.pyx":330
* uniques.append(val)
* try:
* uniques.sort() # <<<<<<<<<<<<<<
* except Exception:
* pass
*/
__pyx_t_10 = PyList_Sort(((PyObject *)__pyx_v_uniques)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L15_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
331: except Exception:
/* "lib.pyx":331
* try:
* uniques.sort()
* except Exception: # <<<<<<<<<<<<<<
* pass
*
*/
__pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
if (__pyx_t_3) {
PyErr_Restore(0,0,0);
goto __pyx_L9_exception_handled;
}
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
__pyx_L15_try_end:;
}
332: pass
333:
334: return uniques
/* "lib.pyx":334 * pass * * return uniques #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_uniques)); __pyx_r = ((PyObject *)__pyx_v_uniques); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_buf.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.fast_unique_multiple", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_buf.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_buf); __Pyx_XDECREF(__pyx_v_uniques); __Pyx_XDECREF(__pyx_v_table); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_stub); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_35fast_unique_multiple_list(PyObject *__pyx_self, PyObject *__pyx_v_lists); /*proto*/ static PyMethodDef __pyx_mdef_3lib_35fast_unique_multiple_list = {__Pyx_NAMESTR("fast_unique_multiple_list"), (PyCFunction)__pyx_pw_3lib_35fast_unique_multiple_list, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_35fast_unique_multiple_list(PyObject *__pyx_self, PyObject *__pyx_v_lists) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique_multiple_list (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lists), (&PyList_Type), 1, "lists", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_34fast_unique_multiple_list(__pyx_self, ((PyObject*)__pyx_v_lists)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
335:
336: @cython.wraparound(False)
337: @cython.boundscheck(False)
338: def fast_unique_multiple_list(list lists):
/* "lib.pyx":338 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple_list(list lists): #<<<<<<<<<<<<<<* cdef: * list buf */ static PyObject *__pyx_pf_3lib_34fast_unique_multiple_list(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lists) { PyObject *__pyx_v_buf = 0; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_uniques = 0; PyObject *__pyx_v_table = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_stub = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique_multiple_list", 0); /* "lib.pyx":338 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple_list(list lists): #<<<<<<<<<<<<<<* cdef: * list buf */ __pyx_k_tuple_123 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_123)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_123); __Pyx_INCREF(((PyObject *)__pyx_n_s__lists)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 0, ((PyObject *)__pyx_n_s__lists)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lists)); __Pyx_INCREF(((PyObject *)__pyx_n_s__buf)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 1, ((PyObject *)__pyx_n_s__buf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__buf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 2, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 4, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 5, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__uniques)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 6, ((PyObject *)__pyx_n_s__uniques)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__uniques)); __Pyx_INCREF(((PyObject *)__pyx_n_s__table)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 7, ((PyObject *)__pyx_n_s__table)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__table)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 8, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__stub)); PyTuple_SET_ITEM(__pyx_k_tuple_123, 9, ((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_123)); /* "lib.pyx":338 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple_list(list lists): #<<<<<<<<<<<<<<* cdef: * list buf */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_35fast_unique_multiple_list, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_125, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_124 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_125, 338, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_124)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
339: cdef:
340: list buf
341: Py_ssize_t k = len(lists)
/* "lib.pyx":341 * cdef: * list buf * Py_ssize_t k = len(lists) #<<<<<<<<<<<<<<* Py_ssize_t i, j, n * list uniques = [] */ if (unlikely(((PyObject *)__pyx_v_lists) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_lists)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_k = __pyx_t_1;
342: Py_ssize_t i, j, n
343: list uniques = []
/* "lib.pyx":343 * Py_ssize_t k = len(lists) * Py_ssize_t i, j, n * list uniques = [] #<<<<<<<<<<<<<<* dict table = {} * object val, stub = 0 */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_uniques = __pyx_t_2; __pyx_t_2 = 0;
344: dict table = {}
/* "lib.pyx":344
* Py_ssize_t i, j, n
* list uniques = []
* dict table = {} # <<<<<<<<<<<<<<
* object val, stub = 0
*
*/
__pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_v_table = __pyx_t_2;
__pyx_t_2 = 0;
345: object val, stub = 0
/* "lib.pyx":345
* list uniques = []
* dict table = {}
* object val, stub = 0 # <<<<<<<<<<<<<<
*
* for i from 0 <= i < k:
*/
__Pyx_INCREF(__pyx_int_0);
__pyx_v_stub = __pyx_int_0;
346:
347: for i from 0 <= i < k:
/* "lib.pyx":347 * object val, stub = 0 * * for i from 0<= i<k: #<<<<<<<<<<<<<<* buf = lists[i] * n = len(buf) */ __pyx_t_1 = __pyx_v_k; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
348: buf = lists[i]
/* "lib.pyx":348
*
* for i from 0 <= i < k:
* buf = lists[i] # <<<<<<<<<<<<<<
* n = len(buf)
* for j from 0 <= j < n:
*/
if (unlikely(((PyObject *)__pyx_v_lists) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
if (!(likely(PyList_CheckExact(PyList_GET_ITEM(__pyx_v_lists, __pyx_v_i)))||((PyList_GET_ITEM(__pyx_v_lists, __pyx_v_i)) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(PyList_GET_ITEM(__pyx_v_lists, __pyx_v_i))->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_lists, __pyx_v_i);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF(((PyObject *)__pyx_v_buf));
__pyx_v_buf = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
349: n = len(buf)
/* "lib.pyx":349
* for i from 0 <= i < k:
* buf = lists[i]
* n = len(buf) # <<<<<<<<<<<<<<
* for j from 0 <= j < n:
* val = buf[j]
*/
if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_3 = PyList_GET_SIZE(((PyObject *)__pyx_v_buf)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_n = __pyx_t_3;
350: for j from 0 <= j < n:
/* "lib.pyx":350
* buf = lists[i]
* n = len(buf)
* for j from 0 <= j < n: # <<<<<<<<<<<<<<
* val = buf[j]
* if val not in table:
*/
__pyx_t_3 = __pyx_v_n;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_3; __pyx_v_j++) {
351: val = buf[j]
/* "lib.pyx":351
* n = len(buf)
* for j from 0 <= j < n:
* val = buf[j] # <<<<<<<<<<<<<<
* if val not in table:
* table[val] = stub
*/
if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_buf, __pyx_v_j);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
352: if val not in table:
/* "lib.pyx":352
* for j from 0 <= j < n:
* val = buf[j]
* if val not in table: # <<<<<<<<<<<<<<
* table[val] = stub
* uniques.append(val)
*/
__pyx_t_4 = (__Pyx_PyDict_Contains(__pyx_v_val, ((PyObject *)__pyx_v_table), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_4) {
353: table[val] = stub
/* "lib.pyx":353
* val = buf[j]
* if val not in table:
* table[val] = stub # <<<<<<<<<<<<<<
* uniques.append(val)
* try:
*/
if (PyDict_SetItem(((PyObject *)__pyx_v_table), __pyx_v_val, __pyx_v_stub) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
354: uniques.append(val)
/* "lib.pyx":354
* if val not in table:
* table[val] = stub
* uniques.append(val) # <<<<<<<<<<<<<<
* try:
* uniques.sort()
*/
__pyx_t_5 = PyList_Append(__pyx_v_uniques, __pyx_v_val); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
}
}
355: try:
/* "lib.pyx":355 * table[val] = stub * uniques.append(val) * try: #<<<<<<<<<<<<<<* uniques.sort() * except Exception: */ { __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); /*try:*/ {
356: uniques.sort()
/* "lib.pyx":356
* uniques.append(val)
* try:
* uniques.sort() # <<<<<<<<<<<<<<
* except Exception:
* pass
*/
__pyx_t_5 = PyList_Sort(((PyObject *)__pyx_v_uniques)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L15_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
357: except Exception:
/* "lib.pyx":357
* try:
* uniques.sort()
* except Exception: # <<<<<<<<<<<<<<
* pass
*
*/
__pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
if (__pyx_t_9) {
PyErr_Restore(0,0,0);
goto __pyx_L9_exception_handled;
}
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_L15_try_end:;
}
358: pass
359:
360: return uniques
/* "lib.pyx":360 * pass * * return uniques #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_uniques)); __pyx_r = ((PyObject *)__pyx_v_uniques); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("lib.fast_unique_multiple_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_buf); __Pyx_XDECREF(__pyx_v_uniques); __Pyx_XDECREF(__pyx_v_table); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_stub); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_37fast_unique_multiple_list_gen(PyObject *__pyx_self, PyObject *__pyx_v_gen); /*proto*/ static PyMethodDef __pyx_mdef_3lib_37fast_unique_multiple_list_gen = {__Pyx_NAMESTR("fast_unique_multiple_list_gen"), (PyCFunction)__pyx_pw_3lib_37fast_unique_multiple_list_gen, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_37fast_unique_multiple_list_gen(PyObject *__pyx_self, PyObject *__pyx_v_gen) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique_multiple_list_gen (wrapper)", 0); __pyx_r = __pyx_pf_3lib_36fast_unique_multiple_list_gen(__pyx_self, ((PyObject *)__pyx_v_gen)); __Pyx_RefNannyFinishContext(); return __pyx_r; }
361:
362: @cython.wraparound(False)
363: @cython.boundscheck(False)
364: def fast_unique_multiple_list_gen(object gen):
/* "lib.pyx":364 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple_list_gen(object gen): #<<<<<<<<<<<<<<* cdef: * list buf */ static PyObject *__pyx_pf_3lib_36fast_unique_multiple_list_gen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gen) { PyObject *__pyx_v_buf = 0; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_uniques = 0; PyObject *__pyx_v_table = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_stub = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_unique_multiple_list_gen", 0); /* "lib.pyx":364 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple_list_gen(object gen): #<<<<<<<<<<<<<<* cdef: * list buf */ __pyx_k_tuple_126 = PyTuple_New(8); if (unlikely(!__pyx_k_tuple_126)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_126); __Pyx_INCREF(((PyObject *)__pyx_n_s__gen)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 0, ((PyObject *)__pyx_n_s__gen)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__gen)); __Pyx_INCREF(((PyObject *)__pyx_n_s__buf)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 1, ((PyObject *)__pyx_n_s__buf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__buf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 2, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__uniques)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 4, ((PyObject *)__pyx_n_s__uniques)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__uniques)); __Pyx_INCREF(((PyObject *)__pyx_n_s__table)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 5, ((PyObject *)__pyx_n_s__table)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__table)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 6, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__stub)); PyTuple_SET_ITEM(__pyx_k_tuple_126, 7, ((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__stub)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_126)); /* "lib.pyx":364 * @cython.wraparound(False) * @cython.boundscheck(False) * def fast_unique_multiple_list_gen(object gen): #<<<<<<<<<<<<<<* cdef: * list buf */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_37fast_unique_multiple_list_gen, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_128, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_127 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_128, 364, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_127)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
365: cdef:
366: list buf
367: Py_ssize_t j, n
368: list uniques = []
/* "lib.pyx":368 * list buf * Py_ssize_t j, n * list uniques = [] #<<<<<<<<<<<<<<* dict table = {} * object val, stub = 0 */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_uniques = __pyx_t_1; __pyx_t_1 = 0;
369: dict table = {}
/* "lib.pyx":369
* Py_ssize_t j, n
* list uniques = []
* dict table = {} # <<<<<<<<<<<<<<
* object val, stub = 0
*
*/
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_v_table = __pyx_t_1;
__pyx_t_1 = 0;
370: object val, stub = 0
/* "lib.pyx":370
* list uniques = []
* dict table = {}
* object val, stub = 0 # <<<<<<<<<<<<<<
*
* for buf in gen:
*/
__Pyx_INCREF(__pyx_int_0);
__pyx_v_stub = __pyx_int_0;
371:
372: for buf in gen:
/* "lib.pyx":372 * object val, stub = 0 * * for buf in gen: #<<<<<<<<<<<<<<* n = len(buf) * for j from 0<= j<n: */ if (PyList_CheckExact(__pyx_v_gen) || PyTuple_CheckExact(__pyx_v_gen)) { __pyx_t_1 = __pyx_v_gen; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_gen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; } for (;;) { if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_COMPILING_IN_CPYTHON __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { if (PyErr_Occurred()) { if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear(); else {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } break; } __Pyx_GOTREF(__pyx_t_4); } if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_XDECREF(((PyObject *)__pyx_v_buf)); __pyx_v_buf = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
373: n = len(buf)
/* "lib.pyx":373
*
* for buf in gen:
* n = len(buf) # <<<<<<<<<<<<<<
* for j from 0 <= j < n:
* val = buf[j]
*/
if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = PyList_GET_SIZE(((PyObject *)__pyx_v_buf)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_n = __pyx_t_5;
374: for j from 0 <= j < n:
/* "lib.pyx":374
* for buf in gen:
* n = len(buf)
* for j from 0 <= j < n: # <<<<<<<<<<<<<<
* val = buf[j]
* if val not in table:
*/
__pyx_t_5 = __pyx_v_n;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_5; __pyx_v_j++) {
375: val = buf[j]
/* "lib.pyx":375
* n = len(buf)
* for j from 0 <= j < n:
* val = buf[j] # <<<<<<<<<<<<<<
* if val not in table:
* table[val] = stub
*/
if (unlikely(((PyObject *)__pyx_v_buf) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_4 = PyList_GET_ITEM(__pyx_v_buf, __pyx_v_j);
__Pyx_INCREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_4;
__pyx_t_4 = 0;
376: if val not in table:
/* "lib.pyx":376
* for j from 0 <= j < n:
* val = buf[j]
* if val not in table: # <<<<<<<<<<<<<<
* table[val] = stub
* uniques.append(val)
*/
__pyx_t_6 = (__Pyx_PyDict_Contains(__pyx_v_val, ((PyObject *)__pyx_v_table), Py_NE)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_6) {
377: table[val] = stub
/* "lib.pyx":377
* val = buf[j]
* if val not in table:
* table[val] = stub # <<<<<<<<<<<<<<
* uniques.append(val)
*
*/
if (PyDict_SetItem(((PyObject *)__pyx_v_table), __pyx_v_val, __pyx_v_stub) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
378: uniques.append(val)
/* "lib.pyx":378
* if val not in table:
* table[val] = stub
* uniques.append(val) # <<<<<<<<<<<<<<
*
* try:
*/
__pyx_t_7 = PyList_Append(__pyx_v_uniques, __pyx_v_val); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
}
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
379:
380: try:
/* "lib.pyx":380 * uniques.append(val) * * try: #<<<<<<<<<<<<<<* uniques.sort() * except Exception: */ { __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); /*try:*/ {
381: uniques.sort()
/* "lib.pyx":381
*
* try:
* uniques.sort() # <<<<<<<<<<<<<<
* except Exception:
* pass
*/
__pyx_t_7 = PyList_Sort(((PyObject *)__pyx_v_uniques)); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
}
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L15_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
382: except Exception:
/* "lib.pyx":382
* try:
* uniques.sort()
* except Exception: # <<<<<<<<<<<<<<
* pass
*
*/
__pyx_t_11 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
if (__pyx_t_11) {
PyErr_Restore(0,0,0);
goto __pyx_L9_exception_handled;
}
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
goto __pyx_L1_error;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
__pyx_L15_try_end:;
}
383: pass
384:
385: return uniques
/* "lib.pyx":385 * pass * * return uniques #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_uniques)); __pyx_r = ((PyObject *)__pyx_v_uniques); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("lib.fast_unique_multiple_list_gen", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_buf); __Pyx_XDECREF(__pyx_v_uniques); __Pyx_XDECREF(__pyx_v_table); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_stub); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_39dicts_to_array(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_39dicts_to_array = {__Pyx_NAMESTR("dicts_to_array"), (PyCFunction)__pyx_pw_3lib_39dicts_to_array, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_39dicts_to_array(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_dicts = 0; PyObject *__pyx_v_columns = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("dicts_to_array (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dicts,&__pyx_n_s__columns,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dicts)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__columns)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("dicts_to_array", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dicts_to_array")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_dicts = ((PyObject*)values[0]); __pyx_v_columns = ((PyObject*)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("dicts_to_array", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.dicts_to_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dicts), (&PyList_Type), 1, "dicts", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_columns), (&PyList_Type), 1, "columns", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_38dicts_to_array(__pyx_self, __pyx_v_dicts, __pyx_v_columns); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
386:
387: @cython.wraparound(False)
388: @cython.boundscheck(False)
389: def dicts_to_array(list dicts, list columns):
/* "lib.pyx":389 * @cython.wraparound(False) * @cython.boundscheck(False) * def dicts_to_array(list dicts, list columns): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, j, k, n */ static PyObject *__pyx_pf_3lib_38dicts_to_array(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dicts, PyObject *__pyx_v_columns) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; PyObject *__pyx_v_row = 0; PyObject *__pyx_v_col = 0; PyObject *__pyx_v_onan = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("dicts_to_array", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; /* "lib.pyx":389 * @cython.wraparound(False) * @cython.boundscheck(False) * def dicts_to_array(list dicts, list columns): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, j, k, n */ __pyx_k_tuple_129 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_129)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_129); __Pyx_INCREF(((PyObject *)__pyx_n_s__dicts)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 0, ((PyObject *)__pyx_n_s__dicts)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__dicts)); __Pyx_INCREF(((PyObject *)__pyx_n_s__columns)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 1, ((PyObject *)__pyx_n_s__columns)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__columns)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 3, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 4, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 5, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__row)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 7, ((PyObject *)__pyx_n_s__row)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__row)); __Pyx_INCREF(((PyObject *)__pyx_n_s__col)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 8, ((PyObject *)__pyx_n_s__col)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__col)); __Pyx_INCREF(((PyObject *)__pyx_n_s__onan)); PyTuple_SET_ITEM(__pyx_k_tuple_129, 9, ((PyObject *)__pyx_n_s__onan)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__onan)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_129)); /* "lib.pyx":389 * @cython.wraparound(False) * @cython.boundscheck(False) * def dicts_to_array(list dicts, list columns): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, j, k, n */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_39dicts_to_array, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__dicts_to_array, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_130 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__dicts_to_array, 389, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_130)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
390: cdef:
391: Py_ssize_t i, j, k, n
392: ndarray[object, ndim=2] result
393: dict row
394: object col, onan = np.nan
/* "lib.pyx":394 * ndarray[object, ndim=2] result * dict row * object col, onan = np.nan #<<<<<<<<<<<<<<* * k = len(columns) */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_onan = __pyx_t_2; __pyx_t_2 = 0;
395:
396: k = len(columns)
/* "lib.pyx":396 * object col, onan = np.nan * * k = len(columns) #<<<<<<<<<<<<<<* n = len(dicts) * */ if (unlikely(((PyObject *)__pyx_v_columns) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_3 = PyList_GET_SIZE(((PyObject *)__pyx_v_columns)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_k = __pyx_t_3;
397: n = len(dicts)
/* "lib.pyx":397 * * k = len(columns) * n = len(dicts) #<<<<<<<<<<<<<<* * result = np.empty((n, k), dtype='O') */ if (unlikely(((PyObject *)__pyx_v_dicts) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_3 = PyList_GET_SIZE(((PyObject *)__pyx_v_dicts)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_3;
398:
399: result = np.empty((n, k), dtype='O')
/* "lib.pyx":399 * n = len(dicts) * * result = np.empty((n, k), dtype='O') #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_5)); __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_5)); if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__O))<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_result.diminfo[1].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_result.diminfo[1].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
400:
401: for i in range(n):
/* "lib.pyx":401 * result = np.empty((n, k), dtype='O') * * for i in range(n): #<<<<<<<<<<<<<<* row = dicts[i] * for j in range(k): */ __pyx_t_3 = __pyx_v_n; for (__pyx_t_11 = 0; __pyx_t_11<__pyx_t_3; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
402: row = dicts[i]
/* "lib.pyx":402
*
* for i in range(n):
* row = dicts[i] # <<<<<<<<<<<<<<
* for j in range(k):
* col = columns[j]
*/
if (unlikely(((PyObject *)__pyx_v_dicts) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
if (!(likely(PyDict_CheckExact(PyList_GET_ITEM(__pyx_v_dicts, __pyx_v_i)))||((PyList_GET_ITEM(__pyx_v_dicts, __pyx_v_i)) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(PyList_GET_ITEM(__pyx_v_dicts, __pyx_v_i))->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_dicts, __pyx_v_i);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF(((PyObject *)__pyx_v_row));
__pyx_v_row = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
403: for j in range(k):
/* "lib.pyx":403
* for i in range(n):
* row = dicts[i]
* for j in range(k): # <<<<<<<<<<<<<<
* col = columns[j]
* if col in row:
*/
__pyx_t_12 = __pyx_v_k;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_j = __pyx_t_13;
404: col = columns[j]
/* "lib.pyx":404
* row = dicts[i]
* for j in range(k):
* col = columns[j] # <<<<<<<<<<<<<<
* if col in row:
* result[i, j] = row[col]
*/
if (unlikely(((PyObject *)__pyx_v_columns) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_columns, __pyx_v_j);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_col);
__pyx_v_col = __pyx_t_2;
__pyx_t_2 = 0;
405: if col in row:
/* "lib.pyx":405
* for j in range(k):
* col = columns[j]
* if col in row: # <<<<<<<<<<<<<<
* result[i, j] = row[col]
* else:
*/
if (unlikely(((PyObject *)__pyx_v_row) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = (__Pyx_PyDict_Contains(__pyx_v_col, ((PyObject *)__pyx_v_row), Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_14) {
406: result[i, j] = row[col]
/* "lib.pyx":406
* col = columns[j]
* if col in row:
* result[i, j] = row[col] # <<<<<<<<<<<<<<
* else:
* result[i, j] = onan
*/
if (unlikely(((PyObject *)__pyx_v_row) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_row), __pyx_v_col); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_15 = __pyx_v_i;
__pyx_t_16 = __pyx_v_j;
__pyx_t_17 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_result.diminfo[1].strides);
__Pyx_GOTREF(*__pyx_t_17);
__Pyx_INCREF(__pyx_t_2); __Pyx_DECREF(*__pyx_t_17);
*__pyx_t_17 = __pyx_t_2;
__Pyx_GIVEREF(*__pyx_t_17);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L7;
}
/*else*/ {
407: else:
408: result[i, j] = onan
/* "lib.pyx":408
* result[i, j] = row[col]
* else:
* result[i, j] = onan # <<<<<<<<<<<<<<
*
* return result
*/
__pyx_t_18 = __pyx_v_i;
__pyx_t_19 = __pyx_v_j;
__pyx_t_17 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_19, __pyx_pybuffernd_result.diminfo[1].strides);
__Pyx_GOTREF(*__pyx_t_17);
__Pyx_INCREF(__pyx_v_onan); __Pyx_DECREF(*__pyx_t_17);
*__pyx_t_17 = __pyx_v_onan;
__Pyx_GIVEREF(*__pyx_t_17);
}
__pyx_L7:;
}
}
409:
410: return result
/* "lib.pyx":410 * result[i, j] = onan * * return result #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.dicts_to_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_row); __Pyx_XDECREF(__pyx_v_col); __Pyx_XDECREF(__pyx_v_onan); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_41fast_zip(PyObject *__pyx_self, PyObject *__pyx_v_ndarrays); /*proto*/ static char __pyx_doc_3lib_40fast_zip[] = "\n For zipping multiple ndarrays into an ndarray of tuples\n "; static PyMethodDef __pyx_mdef_3lib_41fast_zip = {__Pyx_NAMESTR("fast_zip"), (PyCFunction)__pyx_pw_3lib_41fast_zip, METH_O, __Pyx_DOCSTR(__pyx_doc_3lib_40fast_zip)}; static PyObject *__pyx_pw_3lib_41fast_zip(PyObject *__pyx_self, PyObject *__pyx_v_ndarrays) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_zip (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ndarrays), (&PyList_Type), 1, "ndarrays", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_40fast_zip(__pyx_self, ((PyObject*)__pyx_v_ndarrays)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
411:
412:
413: def fast_zip(list ndarrays):
/* "lib.pyx":413 * * * def fast_zip(list ndarrays): #<<<<<<<<<<<<<<* ''' * For zipping multiple ndarrays into an ndarray of tuples */ static PyObject *__pyx_pf_3lib_40fast_zip(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ndarrays) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; PyArrayIterObject *__pyx_v_it = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_tup = 0; PyObject *__pyx_v_arr = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_zip", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; /* "lib.pyx":413 * * * def fast_zip(list ndarrays): #<<<<<<<<<<<<<<* ''' * For zipping multiple ndarrays into an ndarray of tuples */ __pyx_k_tuple_131 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_131)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_131); __Pyx_INCREF(((PyObject *)__pyx_n_s__ndarrays)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 0, ((PyObject *)__pyx_n_s__ndarrays)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ndarrays)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 2, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 3, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 5, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__it)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 6, ((PyObject *)__pyx_n_s__it)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__it)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 7, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 8, ((PyObject *)__pyx_n_s__tup)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup)); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_131, 9, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_131)); /* "lib.pyx":413 * * * def fast_zip(list ndarrays): #<<<<<<<<<<<<<<* ''' * For zipping multiple ndarrays into an ndarray of tuples */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_41fast_zip, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fast_zip, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_132 = (PyObject*)__Pyx_PyCode_New(1, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__fast_zip, 413, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_132)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
414: '''
415: For zipping multiple ndarrays into an ndarray of tuples
416: '''
417: cdef:
418: Py_ssize_t i, j, k, n
419: ndarray[object] result
420: flatiter it
421: object val, tup
422:
423: k = len(ndarrays)
/* "lib.pyx":423 * object val, tup * * k = len(ndarrays) #<<<<<<<<<<<<<<* n = len(ndarrays[0]) * */ if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_ndarrays)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_k = __pyx_t_1;
424: n = len(ndarrays[0])
/* "lib.pyx":424 * * k = len(ndarrays) * n = len(ndarrays[0]) #<<<<<<<<<<<<<<* * result = np.empty(n, dtype=object) */ if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_ndarrays), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_n = __pyx_t_1;
425:
426: result = np.empty(n, dtype=object)
/* "lib.pyx":426 * n = len(ndarrays[0]) * * result = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* * # initialize tuples on first pass */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
427:
428: # initialize tuples on first pass
429: arr = ndarrays[0]
/* "lib.pyx":429 * * # initialize tuples on first pass * arr = ndarrays[0] #<<<<<<<<<<<<<<* it =<flatiter> PyArray_IterNew(arr) * for i in range(n): */ if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_5 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_ndarrays), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_v_arr = __pyx_t_5; __pyx_t_5 = 0;
430: it = <flatiter> PyArray_IterNew(arr)
/* "lib.pyx":430 * # initialize tuples on first pass * arr = ndarrays[0] * it =<flatiter> PyArray_IterNew(arr) #<<<<<<<<<<<<<<* for i in range(n): * val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) */ __pyx_t_5 = PyArray_IterNew(__pyx_v_arr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_it = ((PyArrayIterObject *)__pyx_t_2); __pyx_t_2 = 0;
431: for i in range(n):
/* "lib.pyx":431 * arr = ndarrays[0] * it =<flatiter> PyArray_IterNew(arr) * for i in range(n): #<<<<<<<<<<<<<<* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) * tup = PyTuple_New(k) */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_11 = 0; __pyx_t_11<__pyx_t_1; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
432: val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
/* "lib.pyx":432
* it = <flatiter> PyArray_IterNew(arr)
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) # <<<<<<<<<<<<<<
* tup = PyTuple_New(k)
*
*/
if (!(likely(((__pyx_v_arr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_arr, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = __pyx_v_arr;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = PyArray_GETITEM(((PyArrayObject *)__pyx_t_2), PyArray_ITER_DATA(__pyx_v_it)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_5;
__pyx_t_5 = 0;
433: tup = PyTuple_New(k)
/* "lib.pyx":433
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* tup = PyTuple_New(k) # <<<<<<<<<<<<<<
*
* PyTuple_SET_ITEM(tup, 0, val)
*/
__pyx_t_5 = ((PyObject *)PyTuple_New(__pyx_v_k)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_v_tup);
__pyx_v_tup = __pyx_t_5;
__pyx_t_5 = 0;
434:
435: PyTuple_SET_ITEM(tup, 0, val)
/* "lib.pyx":435
* tup = PyTuple_New(k)
*
* PyTuple_SET_ITEM(tup, 0, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
* result[i] = tup
*/
PyTuple_SET_ITEM(__pyx_v_tup, 0, __pyx_v_val);
436: Py_INCREF(val)
/* "lib.pyx":436
*
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
* result[i] = tup
* PyArray_ITER_NEXT(it)
*/
Py_INCREF(__pyx_v_val);
437: result[i] = tup
/* "lib.pyx":437
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val)
* result[i] = tup # <<<<<<<<<<<<<<
* PyArray_ITER_NEXT(it)
*
*/
__pyx_t_12 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_12 < 0) {
__pyx_t_12 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_13 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_13);
__Pyx_INCREF(__pyx_v_tup); __Pyx_DECREF(*__pyx_t_13);
*__pyx_t_13 = __pyx_v_tup;
__Pyx_GIVEREF(*__pyx_t_13);
438: PyArray_ITER_NEXT(it)
/* "lib.pyx":438
* Py_INCREF(val)
* result[i] = tup
* PyArray_ITER_NEXT(it) # <<<<<<<<<<<<<<
*
* for j in range(1, k):
*/
PyArray_ITER_NEXT(__pyx_v_it);
}
439:
440: for j in range(1, k):
/* "lib.pyx":440 * PyArray_ITER_NEXT(it) * * for j in range(1, k): #<<<<<<<<<<<<<<* arr = ndarrays[j] * it =<flatiter> PyArray_IterNew(arr) */ __pyx_t_1 = __pyx_v_k; for (__pyx_t_11 = 1; __pyx_t_11<__pyx_t_1; __pyx_t_11+=1) { __pyx_v_j = __pyx_t_11;
441: arr = ndarrays[j]
/* "lib.pyx":441
*
* for j in range(1, k):
* arr = ndarrays[j] # <<<<<<<<<<<<<<
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n:
*/
if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_ndarrays), __pyx_v_j, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_5) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_v_arr);
__pyx_v_arr = __pyx_t_5;
__pyx_t_5 = 0;
442: it = <flatiter> PyArray_IterNew(arr)
/* "lib.pyx":442
* for j in range(1, k):
* arr = ndarrays[j]
* it = <flatiter> PyArray_IterNew(arr) # <<<<<<<<<<<<<<
* if len(arr) != n:
* raise ValueError('all arrays must be same length')
*/
__pyx_t_5 = PyArray_IterNew(__pyx_v_arr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = __pyx_t_5;
__Pyx_INCREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_v_it));
__pyx_v_it = ((PyArrayIterObject *)__pyx_t_2);
__pyx_t_2 = 0;
443: if len(arr) != n:
/* "lib.pyx":443
* arr = ndarrays[j]
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n: # <<<<<<<<<<<<<<
* raise ValueError('all arrays must be same length')
*
*/
__pyx_t_14 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_15 = (__pyx_t_14 != __pyx_v_n);
if (__pyx_t_15) {
444: raise ValueError('all arrays must be same length')
/* "lib.pyx":444
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n:
* raise ValueError('all arrays must be same length') # <<<<<<<<<<<<<<
*
* for i in range(n):
*/
__pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
/* "lib.pyx":444
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n:
* raise ValueError('all arrays must be same length') # <<<<<<<<<<<<<<
*
* for i in range(n):
*/
__pyx_k_tuple_2 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_2);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_1));
PyTuple_SET_ITEM(__pyx_k_tuple_2, 0, ((PyObject *)__pyx_kp_s_1));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
445:
446: for i in range(n):
/* "lib.pyx":446
* raise ValueError('all arrays must be same length')
*
* for i in range(n): # <<<<<<<<<<<<<<
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* PyTuple_SET_ITEM(result[i], j, val)
*/
__pyx_t_14 = __pyx_v_n;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_14; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
447: val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
/* "lib.pyx":447
*
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(result[i], j, val)
* Py_INCREF(val)
*/
if (!(likely(((__pyx_v_arr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_arr, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = __pyx_v_arr;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = PyArray_GETITEM(((PyArrayObject *)__pyx_t_2), PyArray_ITER_DATA(__pyx_v_it)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_5;
__pyx_t_5 = 0;
448: PyTuple_SET_ITEM(result[i], j, val)
/* "lib.pyx":448
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* PyTuple_SET_ITEM(result[i], j, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
* PyArray_ITER_NEXT(it)
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_17 < 0) {
__pyx_t_17 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_17 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, __pyx_v_j, __pyx_v_val);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
449: Py_INCREF(val)
/* "lib.pyx":449
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* PyTuple_SET_ITEM(result[i], j, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
* PyArray_ITER_NEXT(it)
*
*/
Py_INCREF(__pyx_v_val);
450: PyArray_ITER_NEXT(it)
/* "lib.pyx":450
* PyTuple_SET_ITEM(result[i], j, val)
* Py_INCREF(val)
* PyArray_ITER_NEXT(it) # <<<<<<<<<<<<<<
*
* return result
*/
PyArray_ITER_NEXT(__pyx_v_it);
}
}
451:
452: return result
/* "lib.pyx":452 * PyArray_ITER_NEXT(it) * * return result #<<<<<<<<<<<<<<* * def get_reverse_indexer(ndarray[int64_t] indexer, Py_ssize_t length): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.fast_zip", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF((PyObject *)__pyx_v_it); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_arr); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_43get_reverse_indexer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_43get_reverse_indexer = {__Pyx_NAMESTR("get_reverse_indexer"), (PyCFunction)__pyx_pw_3lib_43get_reverse_indexer, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_43get_reverse_indexer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_indexer = 0; Py_ssize_t __pyx_v_length; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_reverse_indexer (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__indexer,&__pyx_n_s__length,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__length)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("get_reverse_indexer", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_reverse_indexer")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_indexer = ((PyArrayObject *)values[0]); __pyx_v_length = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_length == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("get_reverse_indexer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.get_reverse_indexer", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_42get_reverse_indexer(__pyx_self, __pyx_v_indexer, __pyx_v_length); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
453:
454: def get_reverse_indexer(ndarray[int64_t] indexer, Py_ssize_t length):
/* "lib.pyx":454 * return result * * def get_reverse_indexer(ndarray[int64_t] indexer, Py_ssize_t length): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(indexer) */ static PyObject *__pyx_pf_3lib_42get_reverse_indexer(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indexer, Py_ssize_t __pyx_v_length) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_rev_indexer = 0; __pyx_t_5numpy_int64_t __pyx_v_idx; __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer; __Pyx_Buffer __pyx_pybuffer_indexer; __Pyx_LocalBuf_ND __pyx_pybuffernd_rev_indexer; __Pyx_Buffer __pyx_pybuffer_rev_indexer; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_reverse_indexer", 0); __pyx_pybuffer_rev_indexer.pybuffer.buf = NULL; __pyx_pybuffer_rev_indexer.refcount = 0; __pyx_pybuffernd_rev_indexer.data = NULL; __pyx_pybuffernd_rev_indexer.rcbuffer = &__pyx_pybuffer_rev_indexer; __pyx_pybuffer_indexer.pybuffer.buf = NULL; __pyx_pybuffer_indexer.refcount = 0; __pyx_pybuffernd_indexer.data = NULL; __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":454 * return result * * def get_reverse_indexer(ndarray[int64_t] indexer, Py_ssize_t length): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(indexer) */ __pyx_k_tuple_133 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_133)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_133); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer)); PyTuple_SET_ITEM(__pyx_k_tuple_133, 0, ((PyObject *)__pyx_n_s__indexer)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer)); __Pyx_INCREF(((PyObject *)__pyx_n_s__length)); PyTuple_SET_ITEM(__pyx_k_tuple_133, 1, ((PyObject *)__pyx_n_s__length)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__length)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_133, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_133, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__rev_indexer)); PyTuple_SET_ITEM(__pyx_k_tuple_133, 4, ((PyObject *)__pyx_n_s__rev_indexer)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__rev_indexer)); __Pyx_INCREF(((PyObject *)__pyx_n_s__idx)); PyTuple_SET_ITEM(__pyx_k_tuple_133, 5, ((PyObject *)__pyx_n_s__idx)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__idx)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_133)); /* "lib.pyx":454 * return result * * def get_reverse_indexer(ndarray[int64_t] indexer, Py_ssize_t length): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(indexer) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_43get_reverse_indexer, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_reverse_indexer, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_134 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__get_reverse_indexer, 454, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_134)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
455: cdef:
456: Py_ssize_t i, n = len(indexer)
/* "lib.pyx":456 * def get_reverse_indexer(ndarray[int64_t] indexer, Py_ssize_t length): * cdef: * Py_ssize_t i, n = len(indexer) #<<<<<<<<<<<<<<* ndarray[int64_t] rev_indexer * int64_t idx */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
457: ndarray[int64_t] rev_indexer
458: int64_t idx
459:
460: rev_indexer = np.empty(length, dtype=np.int64)
/* "lib.pyx":460 * int64_t idx * * rev_indexer = np.empty(length, dtype=np.int64) #<<<<<<<<<<<<<<* rev_indexer.fill(-1) * for i in range(n): */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_rev_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_rev_indexer.diminfo[0].strides = __pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_rev_indexer.diminfo[0].shape = __pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_rev_indexer = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
461: rev_indexer.fill(-1)
/* "lib.pyx":461 * * rev_indexer = np.empty(length, dtype=np.int64) * rev_indexer.fill(-1) #<<<<<<<<<<<<<<* for i in range(n): * idx = indexer[i] */ __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_rev_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "lib.pyx":461 * * rev_indexer = np.empty(length, dtype=np.int64) * rev_indexer.fill(-1) #<<<<<<<<<<<<<<* for i in range(n): * idx = indexer[i] */ __pyx_k_tuple_3 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_3); __Pyx_INCREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_k_tuple_3, 0, __pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
462: for i in range(n):
/* "lib.pyx":462 * rev_indexer = np.empty(length, dtype=np.int64) * rev_indexer.fill(-1) * for i in range(n): #<<<<<<<<<<<<<<* idx = indexer[i] * if idx != -1: */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_12 = 0; __pyx_t_12<__pyx_t_1; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
463: idx = indexer[i]
/* "lib.pyx":463
* rev_indexer.fill(-1)
* for i in range(n):
* idx = indexer[i] # <<<<<<<<<<<<<<
* if idx != -1:
* rev_indexer[idx] = i
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_indexer.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_indexer.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_indexer.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_indexer.diminfo[0].strides));
464: if idx != -1:
/* "lib.pyx":464
* for i in range(n):
* idx = indexer[i]
* if idx != -1: # <<<<<<<<<<<<<<
* rev_indexer[idx] = i
*
*/
__pyx_t_14 = (__pyx_v_idx != -1);
if (__pyx_t_14) {
465: rev_indexer[idx] = i
/* "lib.pyx":465
* idx = indexer[i]
* if idx != -1:
* rev_indexer[idx] = i # <<<<<<<<<<<<<<
*
* return rev_indexer
*/
__pyx_t_15 = __pyx_v_idx;
__pyx_t_8 = -1;
if (__pyx_t_15 < 0) {
__pyx_t_15 += __pyx_pybuffernd_rev_indexer.diminfo[0].shape;
if (unlikely(__pyx_t_15 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_rev_indexer.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_rev_indexer.diminfo[0].strides) = __pyx_v_i;
goto __pyx_L5;
}
__pyx_L5:;
}
466:
467: return rev_indexer
/* "lib.pyx":467 * rev_indexer[idx] = i * * return rev_indexer #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_rev_indexer)); __pyx_r = ((PyObject *)__pyx_v_rev_indexer); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.get_reverse_indexer", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rev_indexer.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_rev_indexer); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_45has_infs_f4(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_45has_infs_f4 = {__Pyx_NAMESTR("has_infs_f4"), (PyCFunction)__pyx_pw_3lib_45has_infs_f4, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_45has_infs_f4(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("has_infs_f4 (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_44has_infs_f4(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
468:
469:
470: def has_infs_f4(ndarray[float32_t] arr):
/* "lib.pyx":470 * * * def has_infs_f4(ndarray[float32_t] arr): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ static PyObject *__pyx_pf_3lib_44has_infs_f4(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; __pyx_t_5numpy_float32_t __pyx_v_inf; __pyx_t_5numpy_float32_t __pyx_v_neginf; __pyx_t_5numpy_float32_t __pyx_v_val; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("has_infs_f4", 0); __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":470 * * * def has_infs_f4(ndarray[float32_t] arr): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ __pyx_k_tuple_135 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_135)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_135); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_135, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_135, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_135, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__inf)); PyTuple_SET_ITEM(__pyx_k_tuple_135, 3, ((PyObject *)__pyx_n_s__inf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__inf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__neginf)); PyTuple_SET_ITEM(__pyx_k_tuple_135, 4, ((PyObject *)__pyx_n_s__neginf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__neginf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_135, 5, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_135)); /* "lib.pyx":470 * * * def has_infs_f4(ndarray[float32_t] arr): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_45has_infs_f4, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__has_infs_f4, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_136 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__has_infs_f4, 470, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_136)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
471: cdef:
472: Py_ssize_t i, n = len(arr)
/* "lib.pyx":472 * def has_infs_f4(ndarray[float32_t] arr): * cdef: * Py_ssize_t i, n = len(arr) #<<<<<<<<<<<<<<* float32_t inf, neginf, val * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
473: float32_t inf, neginf, val
474:
475: inf = np.inf
/* "lib.pyx":475 * float32_t inf, neginf, val * * inf = np.inf #<<<<<<<<<<<<<<* neginf = -inf * */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__inf); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (npy_float32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_inf = __pyx_t_4;
476: neginf = -inf
/* "lib.pyx":476 * * inf = np.inf * neginf = -inf #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_v_neginf = (-__pyx_v_inf);
477:
478: for i in range(n):
/* "lib.pyx":478 * neginf = -inf * * for i in range(n): #<<<<<<<<<<<<<<* val = arr[i] * if val == inf or val == neginf: */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_5 = 0; __pyx_t_5<__pyx_t_1; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
479: val = arr[i]
/* "lib.pyx":479
*
* for i in range(n):
* val = arr[i] # <<<<<<<<<<<<<<
* if val == inf or val == neginf:
* return True
*/
__pyx_t_6 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_6 < 0) {
__pyx_t_6 += __pyx_pybuffernd_arr.diminfo[0].shape;
if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float32_t *, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_arr.diminfo[0].strides));
480: if val == inf or val == neginf:
/* "lib.pyx":480
* for i in range(n):
* val = arr[i]
* if val == inf or val == neginf: # <<<<<<<<<<<<<<
* return True
* return False
*/
__pyx_t_8 = (__pyx_v_val == __pyx_v_inf);
if (!__pyx_t_8) {
__pyx_t_9 = (__pyx_v_val == __pyx_v_neginf);
__pyx_t_10 = __pyx_t_9;
} else {
__pyx_t_10 = __pyx_t_8;
}
if (__pyx_t_10) {
481: return True
/* "lib.pyx":481
* val = arr[i]
* if val == inf or val == neginf:
* return True # <<<<<<<<<<<<<<
* return False
*
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
goto __pyx_L5;
}
__pyx_L5:;
}
482: return False
/* "lib.pyx":482 * if val == inf or val == neginf: * return True * return False #<<<<<<<<<<<<<<* * def has_infs_f8(ndarray[float64_t] arr): */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.has_infs_f4", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_47has_infs_f8(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static PyMethodDef __pyx_mdef_3lib_47has_infs_f8 = {__Pyx_NAMESTR("has_infs_f8"), (PyCFunction)__pyx_pw_3lib_47has_infs_f8, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_47has_infs_f8(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("has_infs_f8 (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_46has_infs_f8(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
483:
484: def has_infs_f8(ndarray[float64_t] arr):
/* "lib.pyx":484 * return False * * def has_infs_f8(ndarray[float64_t] arr): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ static PyObject *__pyx_pf_3lib_46has_infs_f8(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; __pyx_t_5numpy_float64_t __pyx_v_inf; __pyx_t_5numpy_float64_t __pyx_v_neginf; __pyx_t_5numpy_float64_t __pyx_v_val; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("has_infs_f8", 0); __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":484 * return False * * def has_infs_f8(ndarray[float64_t] arr): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ __pyx_k_tuple_137 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_137)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_137); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_137, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_137, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_137, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__inf)); PyTuple_SET_ITEM(__pyx_k_tuple_137, 3, ((PyObject *)__pyx_n_s__inf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__inf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__neginf)); PyTuple_SET_ITEM(__pyx_k_tuple_137, 4, ((PyObject *)__pyx_n_s__neginf)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__neginf)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_137, 5, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_137)); /* "lib.pyx":484 * return False * * def has_infs_f8(ndarray[float64_t] arr): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_47has_infs_f8, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__has_infs_f8, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_138 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__has_infs_f8, 484, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_138)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
485: cdef:
486: Py_ssize_t i, n = len(arr)
/* "lib.pyx":486 * def has_infs_f8(ndarray[float64_t] arr): * cdef: * Py_ssize_t i, n = len(arr) #<<<<<<<<<<<<<<* float64_t inf, neginf, val * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
487: float64_t inf, neginf, val
488:
489: inf = np.inf
/* "lib.pyx":489 * float64_t inf, neginf, val * * inf = np.inf #<<<<<<<<<<<<<<* neginf = -inf * */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__inf); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_inf = __pyx_t_4;
490: neginf = -inf
/* "lib.pyx":490 * * inf = np.inf * neginf = -inf #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_v_neginf = (-__pyx_v_inf);
491:
492: for i in range(n):
/* "lib.pyx":492 * neginf = -inf * * for i in range(n): #<<<<<<<<<<<<<<* val = arr[i] * if val == inf or val == neginf: */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_5 = 0; __pyx_t_5<__pyx_t_1; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
493: val = arr[i]
/* "lib.pyx":493
*
* for i in range(n):
* val = arr[i] # <<<<<<<<<<<<<<
* if val == inf or val == neginf:
* return True
*/
__pyx_t_6 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_6 < 0) {
__pyx_t_6 += __pyx_pybuffernd_arr.diminfo[0].shape;
if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_arr.diminfo[0].strides));
494: if val == inf or val == neginf:
/* "lib.pyx":494
* for i in range(n):
* val = arr[i]
* if val == inf or val == neginf: # <<<<<<<<<<<<<<
* return True
* return False
*/
__pyx_t_8 = (__pyx_v_val == __pyx_v_inf);
if (!__pyx_t_8) {
__pyx_t_9 = (__pyx_v_val == __pyx_v_neginf);
__pyx_t_10 = __pyx_t_9;
} else {
__pyx_t_10 = __pyx_t_8;
}
if (__pyx_t_10) {
495: return True
/* "lib.pyx":495
* val = arr[i]
* if val == inf or val == neginf:
* return True # <<<<<<<<<<<<<<
* return False
*
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
goto __pyx_L5;
}
__pyx_L5:;
}
496: return False
/* "lib.pyx":496 * if val == inf or val == neginf: * return True * return False #<<<<<<<<<<<<<<* * def convert_timestamps(ndarray values): */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.has_infs_f8", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_49convert_timestamps(PyObject *__pyx_self, PyObject *__pyx_v_values); /*proto*/ static PyMethodDef __pyx_mdef_3lib_49convert_timestamps = {__Pyx_NAMESTR("convert_timestamps"), (PyCFunction)__pyx_pw_3lib_49convert_timestamps, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_49convert_timestamps(PyObject *__pyx_self, PyObject *__pyx_v_values) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("convert_timestamps (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_48convert_timestamps(__pyx_self, ((PyArrayObject *)__pyx_v_values)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
497:
498: def convert_timestamps(ndarray values):
/* "lib.pyx":498 * return False * * def convert_timestamps(ndarray values): #<<<<<<<<<<<<<<* cdef: * object val, f, result */ static PyObject *__pyx_pf_3lib_48convert_timestamps(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values) { PyObject *__pyx_v_val = 0; PyObject *__pyx_v_f = 0; PyObject *__pyx_v_cache = 0; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_out = 0; PyObject *__pyx_v_datetime = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_out; __Pyx_Buffer __pyx_pybuffer_out; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("convert_timestamps", 0); __pyx_pybuffer_out.pybuffer.buf = NULL; __pyx_pybuffer_out.refcount = 0; __pyx_pybuffernd_out.data = NULL; __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; /* "lib.pyx":498 * return False * * def convert_timestamps(ndarray values): #<<<<<<<<<<<<<<* cdef: * object val, f, result */ __pyx_k_tuple_139 = PyTuple_New(9); if (unlikely(!__pyx_k_tuple_139)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_139); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 1, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__f)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 2, ((PyObject *)__pyx_n_s__f)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__f)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 3, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__cache)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 4, ((PyObject *)__pyx_n_s__cache)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cache)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 5, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 6, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__out)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 7, ((PyObject *)__pyx_n_s__out)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__out)); __Pyx_INCREF(((PyObject *)__pyx_n_s__datetime)); PyTuple_SET_ITEM(__pyx_k_tuple_139, 8, ((PyObject *)__pyx_n_s__datetime)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__datetime)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_139)); /* "lib.pyx":498 * return False * * def convert_timestamps(ndarray values): #<<<<<<<<<<<<<<* cdef: * object val, f, result */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_49convert_timestamps, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__convert_timestamps, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_140 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__convert_timestamps, 498, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_140)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
499: cdef:
500: object val, f, result
501: dict cache = {}
/* "lib.pyx":501
* cdef:
* object val, f, result
* dict cache = {} # <<<<<<<<<<<<<<
* Py_ssize_t i, n = len(values)
* ndarray[object] out
*/
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_v_cache = __pyx_t_1;
__pyx_t_1 = 0;
502: Py_ssize_t i, n = len(values)
/* "lib.pyx":502
* object val, f, result
* dict cache = {}
* Py_ssize_t i, n = len(values) # <<<<<<<<<<<<<<
* ndarray[object] out
*
*/
__pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_n = __pyx_t_2;
503: ndarray[object] out
504:
505: # for HDFStore, a bit temporary but...
506:
507: from datetime import datetime
/* "lib.pyx":507 * # for HDFStore, a bit temporary but... * * from datetime import datetime #<<<<<<<<<<<<<<* f = datetime.fromtimestamp * */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_n_s__datetime)); PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__datetime)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__datetime)); __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__datetime), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__datetime); if (__pyx_t_1 == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__datetime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v_datetime = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
508: f = datetime.fromtimestamp
/* "lib.pyx":508 * * from datetime import datetime * f = datetime.fromtimestamp #<<<<<<<<<<<<<<* * out = np.empty(n, dtype='O') */ __pyx_t_3 = PyObject_GetAttr(__pyx_v_datetime, __pyx_n_s__fromtimestamp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_v_f = __pyx_t_3; __pyx_t_3 = 0;
509:
510: out = np.empty(n, dtype='O')
/* "lib.pyx":510 * f = datetime.fromtimestamp * * out = np.empty(n, dtype='O') #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_3)); if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__O))<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __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]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_out = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
511:
512: for i in range(n):
/* "lib.pyx":512 * out = np.empty(n, dtype='O') * * for i in range(n): #<<<<<<<<<<<<<<* val = util.get_value_1d(values, i) * if val in cache: */ __pyx_t_2 = __pyx_v_n; for (__pyx_t_11 = 0; __pyx_t_11<__pyx_t_2; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
513: val = util.get_value_1d(values, i)
/* "lib.pyx":513
*
* for i in range(n):
* val = util.get_value_1d(values, i) # <<<<<<<<<<<<<<
* if val in cache:
* out[i] = cache[val]
*/
__pyx_t_5 = get_value_1d(__pyx_v_values, __pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_5;
__pyx_t_5 = 0;
514: if val in cache:
/* "lib.pyx":514
* for i in range(n):
* val = util.get_value_1d(values, i)
* if val in cache: # <<<<<<<<<<<<<<
* out[i] = cache[val]
* else:
*/
__pyx_t_12 = (__Pyx_PyDict_Contains(__pyx_v_val, ((PyObject *)__pyx_v_cache), Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_12) {
515: out[i] = cache[val]
/* "lib.pyx":515
* val = util.get_value_1d(values, i)
* if val in cache:
* out[i] = cache[val] # <<<<<<<<<<<<<<
* else:
* cache[val] = out[i] = f(val)
*/
__pyx_t_5 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_cache), __pyx_v_val); if (!__pyx_t_5) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_13 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_out.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_out.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_14);
__Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(*__pyx_t_14);
*__pyx_t_14 = __pyx_t_5;
__Pyx_GIVEREF(*__pyx_t_14);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L5;
}
/*else*/ {
516: else:
517: cache[val] = out[i] = f(val)
/* "lib.pyx":517
* out[i] = cache[val]
* else:
* cache[val] = out[i] = f(val) # <<<<<<<<<<<<<<
*
* return out
*/
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_val);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_val);
__Pyx_GIVEREF(__pyx_v_val);
__pyx_t_3 = PyObject_Call(__pyx_v_f, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
if (PyDict_SetItem(((PyObject *)__pyx_v_cache), __pyx_v_val, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_15 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_15 < 0) {
__pyx_t_15 += __pyx_pybuffernd_out.diminfo[0].shape;
if (unlikely(__pyx_t_15 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_out.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_14);
__Pyx_INCREF(__pyx_t_3); __Pyx_DECREF(*__pyx_t_14);
*__pyx_t_14 = __pyx_t_3;
__Pyx_GIVEREF(*__pyx_t_14);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__pyx_L5:;
}
518:
519: return out
/* "lib.pyx":519 * cache[val] = out[i] = f(val) * * return out #<<<<<<<<<<<<<<* * def maybe_indices_to_slice(ndarray[int64_t] indices): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_out)); __pyx_r = ((PyObject *)__pyx_v_out); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.convert_timestamps", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_f); __Pyx_XDECREF(__pyx_v_cache); __Pyx_XDECREF((PyObject *)__pyx_v_out); __Pyx_XDECREF(__pyx_v_datetime); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_51maybe_indices_to_slice(PyObject *__pyx_self, PyObject *__pyx_v_indices); /*proto*/ static PyMethodDef __pyx_mdef_3lib_51maybe_indices_to_slice = {__Pyx_NAMESTR("maybe_indices_to_slice"), (PyCFunction)__pyx_pw_3lib_51maybe_indices_to_slice, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_51maybe_indices_to_slice(PyObject *__pyx_self, PyObject *__pyx_v_indices) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("maybe_indices_to_slice (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_50maybe_indices_to_slice(__pyx_self, ((PyArrayObject *)__pyx_v_indices)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
520:
521: def maybe_indices_to_slice(ndarray[int64_t] indices):
/* "lib.pyx":521 * return out * * def maybe_indices_to_slice(ndarray[int64_t] indices): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(indices) */ static PyObject *__pyx_pf_3lib_50maybe_indices_to_slice(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indices) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; __Pyx_LocalBuf_ND __pyx_pybuffernd_indices; __Pyx_Buffer __pyx_pybuffer_indices; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("maybe_indices_to_slice", 0); __pyx_pybuffer_indices.pybuffer.buf = NULL; __pyx_pybuffer_indices.refcount = 0; __pyx_pybuffernd_indices.data = NULL; __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":521 * return out * * def maybe_indices_to_slice(ndarray[int64_t] indices): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(indices) */ __pyx_k_tuple_141 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_141)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_141); __Pyx_INCREF(((PyObject *)__pyx_n_s__indices)); PyTuple_SET_ITEM(__pyx_k_tuple_141, 0, ((PyObject *)__pyx_n_s__indices)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indices)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_141, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_141, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_141)); /* "lib.pyx":521 * return out * * def maybe_indices_to_slice(ndarray[int64_t] indices): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(indices) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_51maybe_indices_to_slice, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_143, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_142 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_143, 521, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_142)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
522: cdef:
523: Py_ssize_t i, n = len(indices)
/* "lib.pyx":523 * def maybe_indices_to_slice(ndarray[int64_t] indices): * cdef: * Py_ssize_t i, n = len(indices) #<<<<<<<<<<<<<<* * if n == 0: */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indices)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
524:
525: if n == 0:
/* "lib.pyx":525 * Py_ssize_t i, n = len(indices) * * if n == 0: #<<<<<<<<<<<<<<* return indices * */ __pyx_t_2 = (__pyx_v_n == 0); if (__pyx_t_2) {
526: return indices
/* "lib.pyx":526
*
* if n == 0:
* return indices # <<<<<<<<<<<<<<
*
* for i in range(1, n):
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_indices));
__pyx_r = ((PyObject *)__pyx_v_indices);
goto __pyx_L0;
goto __pyx_L3;
}
__pyx_L3:;
527:
528: for i in range(1, n):
/* "lib.pyx":528 * return indices * * for i in range(1, n): #<<<<<<<<<<<<<<* if indices[i] - indices[i - 1] != 1: * return indices */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_3 = 1; __pyx_t_3<__pyx_t_1; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3;
529: if indices[i] - indices[i - 1] != 1:
/* "lib.pyx":529
*
* for i in range(1, n):
* if indices[i] - indices[i - 1] != 1: # <<<<<<<<<<<<<<
* return indices
* return slice(indices[0], indices[n - 1] + 1)
*/
__pyx_t_4 = __pyx_v_i;
__pyx_t_5 = -1;
if (__pyx_t_4 < 0) {
__pyx_t_4 += __pyx_pybuffernd_indices.diminfo[0].shape;
if (unlikely(__pyx_t_4 < 0)) __pyx_t_5 = 0;
} else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_5 = 0;
if (unlikely(__pyx_t_5 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_5);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_6 = (__pyx_v_i - 1);
__pyx_t_5 = -1;
if (__pyx_t_6 < 0) {
__pyx_t_6 += __pyx_pybuffernd_indices.diminfo[0].shape;
if (unlikely(__pyx_t_6 < 0)) __pyx_t_5 = 0;
} else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_5 = 0;
if (unlikely(__pyx_t_5 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_5);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_indices.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_indices.diminfo[0].strides))) != 1);
if (__pyx_t_2) {
530: return indices
/* "lib.pyx":530
* for i in range(1, n):
* if indices[i] - indices[i - 1] != 1:
* return indices # <<<<<<<<<<<<<<
* return slice(indices[0], indices[n - 1] + 1)
*
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_indices));
__pyx_r = ((PyObject *)__pyx_v_indices);
goto __pyx_L0;
goto __pyx_L6;
}
__pyx_L6:;
}
531: return slice(indices[0], indices[n - 1] + 1)
/* "lib.pyx":531 * if indices[i] - indices[i - 1] != 1: * return indices * return slice(indices[0], indices[n - 1] + 1) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_7 = 0; __pyx_t_5 = -1; if (__pyx_t_7<0) { __pyx_t_7 += __pyx_pybuffernd_indices.diminfo[0].shape; if (unlikely(__pyx_t_7<0)) __pyx_t_5 = 0; } else if (unlikely(__pyx_t_7 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_5 = 0; if (unlikely(__pyx_t_5 != -1)) { __Pyx_RaiseBufferIndexError(__pyx_t_5); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_8 = __Pyx_PyInt_to_py_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_indices.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_v_n - 1); __pyx_t_5 = -1; if (__pyx_t_1<0) { __pyx_t_1 += __pyx_pybuffernd_indices.diminfo[0].shape; if (unlikely(__pyx_t_1<0)) __pyx_t_5 = 0; } else if (unlikely(__pyx_t_1 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_5 = 0; if (unlikely(__pyx_t_5 != -1)) { __Pyx_RaiseBufferIndexError(__pyx_t_5); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = __Pyx_PyInt_to_py_npy_int64(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_1, __pyx_pybuffernd_indices.diminfo[0].strides)) + 1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_9 = PyObject_Call(((PyObject *)((PyObject*)(&PySlice_Type))), ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.maybe_indices_to_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_53maybe_booleans_to_slice(PyObject *__pyx_self, PyObject *__pyx_v_mask); /*proto*/ static PyMethodDef __pyx_mdef_3lib_53maybe_booleans_to_slice = {__Pyx_NAMESTR("maybe_booleans_to_slice"), (PyCFunction)__pyx_pw_3lib_53maybe_booleans_to_slice, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_53maybe_booleans_to_slice(PyObject *__pyx_self, PyObject *__pyx_v_mask) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("maybe_booleans_to_slice (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_52maybe_booleans_to_slice(__pyx_self, ((PyArrayObject *)__pyx_v_mask)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
532:
533:
534: def maybe_booleans_to_slice(ndarray[uint8_t] mask):
/* "lib.pyx":534 * * * def maybe_booleans_to_slice(ndarray[uint8_t] mask): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(mask) */ static PyObject *__pyx_pf_3lib_52maybe_booleans_to_slice(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_start; Py_ssize_t __pyx_v_end; int __pyx_v_started; int __pyx_v_finished; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("maybe_booleans_to_slice", 0); __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":534 * * * def maybe_booleans_to_slice(ndarray[uint8_t] mask): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(mask) */ __pyx_k_tuple_144 = PyTuple_New(7); if (unlikely(!__pyx_k_tuple_144)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_144); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 0, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__start)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 3, ((PyObject *)__pyx_n_s__start)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__start)); __Pyx_INCREF(((PyObject *)__pyx_n_s__end)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 4, ((PyObject *)__pyx_n_s__end)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__end)); __Pyx_INCREF(((PyObject *)__pyx_n_s__started)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 5, ((PyObject *)__pyx_n_s__started)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__started)); __Pyx_INCREF(((PyObject *)__pyx_n_s__finished)); PyTuple_SET_ITEM(__pyx_k_tuple_144, 6, ((PyObject *)__pyx_n_s__finished)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__finished)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_144)); /* "lib.pyx":534 * * * def maybe_booleans_to_slice(ndarray[uint8_t] mask): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(mask) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_53maybe_booleans_to_slice, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_146, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_145 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_146, 534, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_145)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
535: cdef:
536: Py_ssize_t i, n = len(mask)
/* "lib.pyx":536 * def maybe_booleans_to_slice(ndarray[uint8_t] mask): * cdef: * Py_ssize_t i, n = len(mask) #<<<<<<<<<<<<<<* Py_ssize_t start, end * bint started = 0, finished = 0 */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_mask)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
537: Py_ssize_t start, end
538: bint started = 0, finished = 0
/* "lib.pyx":538 * Py_ssize_t i, n = len(mask) * Py_ssize_t start, end * bint started = 0, finished = 0 #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_v_started = 0; __pyx_v_finished = 0;
539:
540: for i in range(n):
/* "lib.pyx":540 * bint started = 0, finished = 0 * * for i in range(n): #<<<<<<<<<<<<<<* if mask[i]: * if finished: */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_2 = 0; __pyx_t_2<__pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2;
541: if mask[i]:
/* "lib.pyx":541
*
* for i in range(n):
* if mask[i]: # <<<<<<<<<<<<<<
* if finished:
* return mask.view(np.bool_)
*/
__pyx_t_3 = __pyx_v_i;
__pyx_t_4 = -1;
if (__pyx_t_3 < 0) {
__pyx_t_3 += __pyx_pybuffernd_mask.diminfo[0].shape;
if (unlikely(__pyx_t_3 < 0)) __pyx_t_4 = 0;
} else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_mask.diminfo[0].shape)) __pyx_t_4 = 0;
if (unlikely(__pyx_t_4 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_4);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_mask.diminfo[0].strides));
if (__pyx_t_5) {
542: if finished:
/* "lib.pyx":542
* for i in range(n):
* if mask[i]:
* if finished: # <<<<<<<<<<<<<<
* return mask.view(np.bool_)
* if not started:
*/
if (__pyx_v_finished) {
543: return mask.view(np.bool_)
/* "lib.pyx":543
* if mask[i]:
* if finished:
* return mask.view(np.bool_) # <<<<<<<<<<<<<<
* if not started:
* started = 1
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_mask), __pyx_n_s__view); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__bool_); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
__Pyx_GIVEREF(__pyx_t_8);
__pyx_t_8 = 0;
__pyx_t_8 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
goto __pyx_L6;
}
__pyx_L6:;
544: if not started:
/* "lib.pyx":544
* if finished:
* return mask.view(np.bool_)
* if not started: # <<<<<<<<<<<<<<
* started = 1
* start = i
*/
__pyx_t_9 = (!__pyx_v_started);
if (__pyx_t_9) {
545: started = 1
/* "lib.pyx":545
* return mask.view(np.bool_)
* if not started:
* started = 1 # <<<<<<<<<<<<<<
* start = i
* else:
*/
__pyx_v_started = 1;
546: start = i
/* "lib.pyx":546
* if not started:
* started = 1
* start = i # <<<<<<<<<<<<<<
* else:
* if finished:
*/
__pyx_v_start = __pyx_v_i;
goto __pyx_L7;
}
__pyx_L7:;
goto __pyx_L5;
}
/*else*/ {
547: else:
548: if finished:
/* "lib.pyx":548
* start = i
* else:
* if finished: # <<<<<<<<<<<<<<
* continue
*
*/
if (__pyx_v_finished) {
549: continue
/* "lib.pyx":549
* else:
* if finished:
* continue # <<<<<<<<<<<<<<
*
* if started:
*/
goto __pyx_L3_continue;
goto __pyx_L8;
}
__pyx_L8:;
550:
551: if started:
/* "lib.pyx":551
* continue
*
* if started: # <<<<<<<<<<<<<<
* end = i
* finished = 1
*/
if (__pyx_v_started) {
552: end = i
/* "lib.pyx":552
*
* if started:
* end = i # <<<<<<<<<<<<<<
* finished = 1
*
*/
__pyx_v_end = __pyx_v_i;
553: finished = 1
/* "lib.pyx":553
* if started:
* end = i
* finished = 1 # <<<<<<<<<<<<<<
*
* if not started:
*/
__pyx_v_finished = 1;
goto __pyx_L9;
}
__pyx_L9:;
}
__pyx_L5:;
__pyx_L3_continue:;
}
554:
555: if not started:
/* "lib.pyx":555 * finished = 1 * * if not started: #<<<<<<<<<<<<<<* return slice(0, 0) * if not finished: */ __pyx_t_9 = (!__pyx_v_started); if (__pyx_t_9) {
556: return slice(0, 0)
/* "lib.pyx":556
*
* if not started:
* return slice(0, 0) # <<<<<<<<<<<<<<
* if not finished:
* return slice(start, None)
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PySlice_Type))), ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
goto __pyx_L10;
}
__pyx_L10:;
/* "lib.pyx":556
*
* if not started:
* return slice(0, 0) # <<<<<<<<<<<<<<
* if not finished:
* return slice(start, None)
*/
__pyx_k_tuple_4 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_4);
__Pyx_INCREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, __pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
__Pyx_INCREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_k_tuple_4, 1, __pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
557: if not finished:
/* "lib.pyx":557 * if not started: * return slice(0, 0) * if not finished: #<<<<<<<<<<<<<<* return slice(start, None) * else: */ __pyx_t_9 = (!__pyx_v_finished); if (__pyx_t_9) {
558: return slice(start, None)
/* "lib.pyx":558
* return slice(0, 0)
* if not finished:
* return slice(start, None) # <<<<<<<<<<<<<<
* else:
* return slice(start, end)
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_start); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
__Pyx_GIVEREF(__pyx_t_8);
__Pyx_INCREF(Py_None);
PyTuple_SET_ITEM(__pyx_t_7, 1, Py_None);
__Pyx_GIVEREF(Py_None);
__pyx_t_8 = 0;
__pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PySlice_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
goto __pyx_L11;
}
/*else*/ {
559: else:
560: return slice(start, end)
/* "lib.pyx":560
* return slice(start, None)
* else:
* return slice(start, end) # <<<<<<<<<<<<<<
*
*
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_start); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = PyInt_FromSsize_t(__pyx_v_end); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
__Pyx_GIVEREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_7);
__pyx_t_8 = 0;
__pyx_t_7 = 0;
__pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PySlice_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
__pyx_r = __pyx_t_7;
__pyx_t_7 = 0;
goto __pyx_L0;
}
__pyx_L11:;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("lib.maybe_booleans_to_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
__pyx_L2:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_3lib_55scalar_compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_3lib_55scalar_compare = {__Pyx_NAMESTR("scalar_compare"), (PyCFunction)__pyx_pw_3lib_55scalar_compare, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pw_3lib_55scalar_compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_values = 0;
PyObject *__pyx_v_val = 0;
PyObject *__pyx_v_op = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("scalar_compare (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__val,&__pyx_n_s__op,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__val)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("scalar_compare", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("scalar_compare", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scalar_compare") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
}
__pyx_v_values = ((PyArrayObject *)values[0]);
__pyx_v_val = values[1];
__pyx_v_op = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("scalar_compare", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lib.scalar_compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_3lib_54scalar_compare(__pyx_self, __pyx_v_values, __pyx_v_val, __pyx_v_op);
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
561:
562:
563: @cython.wraparound(False)
564: @cython.boundscheck(False)
565: def scalar_compare(ndarray[object] values, object val, object op):
/* "lib.pyx":565 * @cython.wraparound(False) * @cython.boundscheck(False) * def scalar_compare(ndarray[object] values, object val, object op): #<<<<<<<<<<<<<<* import operator * cdef: */ static PyObject *__pyx_pf_3lib_54scalar_compare(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyObject *__pyx_v_val, PyObject *__pyx_v_op) { PyObject *__pyx_v_operator = NULL; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; int __pyx_v_flag; PyObject *__pyx_v_x = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("scalar_compare", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":565 * @cython.wraparound(False) * @cython.boundscheck(False) * def scalar_compare(ndarray[object] values, object val, object op): #<<<<<<<<<<<<<<* import operator * cdef: */ __pyx_k_tuple_147 = PyTuple_New(9); if (unlikely(!__pyx_k_tuple_147)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_147); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 1, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__op)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 2, ((PyObject *)__pyx_n_s__op)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__op)); __Pyx_INCREF(((PyObject *)__pyx_n_s__operator)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 3, ((PyObject *)__pyx_n_s__operator)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__operator)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 4, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 5, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__flag)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 7, ((PyObject *)__pyx_n_s__flag)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__flag)); __Pyx_INCREF(((PyObject *)__pyx_n_s__x)); PyTuple_SET_ITEM(__pyx_k_tuple_147, 8, ((PyObject *)__pyx_n_s__x)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__x)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_147)); /* "lib.pyx":565 * @cython.wraparound(False) * @cython.boundscheck(False) * def scalar_compare(ndarray[object] values, object val, object op): #<<<<<<<<<<<<<<* import operator * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_55scalar_compare, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__scalar_compare, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_148 = (PyObject*)__Pyx_PyCode_New(3, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__scalar_compare, 565, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_148)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
566: import operator
/* "lib.pyx":566 * @cython.boundscheck(False) * def scalar_compare(ndarray[object] values, object val, object op): * import operator #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__operator), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_operator = __pyx_t_1; __pyx_t_1 = 0;
567: cdef:
568: Py_ssize_t i, n = len(values)
/* "lib.pyx":568 * import operator * cdef: * Py_ssize_t i, n = len(values) #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] result * int flag */ __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_2;
569: ndarray[uint8_t, cast=True] result
570: int flag
571: object x
572:
573: if op is operator.lt:
/* "lib.pyx":573 * object x * * if op is operator.lt: #<<<<<<<<<<<<<<* flag = cpython.Py_LT * elif op is operator.le: */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__lt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_op == __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) {
574: flag = cpython.Py_LT
/* "lib.pyx":574
*
* if op is operator.lt:
* flag = cpython.Py_LT # <<<<<<<<<<<<<<
* elif op is operator.le:
* flag = cpython.Py_LE
*/
__pyx_v_flag = Py_LT;
goto __pyx_L3;
}
575: elif op is operator.le:
/* "lib.pyx":575 * if op is operator.lt: * flag = cpython.Py_LT * elif op is operator.le: #<<<<<<<<<<<<<<* flag = cpython.Py_LE * elif op is operator.gt: */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__le); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_op == __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) {
576: flag = cpython.Py_LE
/* "lib.pyx":576
* flag = cpython.Py_LT
* elif op is operator.le:
* flag = cpython.Py_LE # <<<<<<<<<<<<<<
* elif op is operator.gt:
* flag = cpython.Py_GT
*/
__pyx_v_flag = Py_LE;
goto __pyx_L3;
}
577: elif op is operator.gt:
/* "lib.pyx":577 * elif op is operator.le: * flag = cpython.Py_LE * elif op is operator.gt: #<<<<<<<<<<<<<<* flag = cpython.Py_GT * elif op is operator.ge: */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__gt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_op == __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) {
578: flag = cpython.Py_GT
/* "lib.pyx":578
* flag = cpython.Py_LE
* elif op is operator.gt:
* flag = cpython.Py_GT # <<<<<<<<<<<<<<
* elif op is operator.ge:
* flag = cpython.Py_GE
*/
__pyx_v_flag = Py_GT;
goto __pyx_L3;
}
579: elif op is operator.ge:
/* "lib.pyx":579 * elif op is operator.gt: * flag = cpython.Py_GT * elif op is operator.ge: #<<<<<<<<<<<<<<* flag = cpython.Py_GE * elif op is operator.eq: */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__ge); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_op == __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) {
580: flag = cpython.Py_GE
/* "lib.pyx":580
* flag = cpython.Py_GT
* elif op is operator.ge:
* flag = cpython.Py_GE # <<<<<<<<<<<<<<
* elif op is operator.eq:
* flag = cpython.Py_EQ
*/
__pyx_v_flag = Py_GE;
goto __pyx_L3;
}
581: elif op is operator.eq:
/* "lib.pyx":581 * elif op is operator.ge: * flag = cpython.Py_GE * elif op is operator.eq: #<<<<<<<<<<<<<<* flag = cpython.Py_EQ * elif op is operator.ne: */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__eq); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_op == __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) {
582: flag = cpython.Py_EQ
/* "lib.pyx":582
* flag = cpython.Py_GE
* elif op is operator.eq:
* flag = cpython.Py_EQ # <<<<<<<<<<<<<<
* elif op is operator.ne:
* flag = cpython.Py_NE
*/
__pyx_v_flag = Py_EQ;
goto __pyx_L3;
}
583: elif op is operator.ne:
/* "lib.pyx":583 * elif op is operator.eq: * flag = cpython.Py_EQ * elif op is operator.ne: #<<<<<<<<<<<<<<* flag = cpython.Py_NE * else: */ __pyx_t_1 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__ne); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_op == __pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_3) {
584: flag = cpython.Py_NE
/* "lib.pyx":584
* flag = cpython.Py_EQ
* elif op is operator.ne:
* flag = cpython.Py_NE # <<<<<<<<<<<<<<
* else:
* raise ValueError('Unrecognized operator')
*/
__pyx_v_flag = Py_NE;
goto __pyx_L3;
}
/*else*/ {
585: else:
586: raise ValueError('Unrecognized operator')
/* "lib.pyx":586
* flag = cpython.Py_NE
* else:
* raise ValueError('Unrecognized operator') # <<<<<<<<<<<<<<
*
* result = np.empty(n, dtype=bool).view(np.uint8)
*/
__pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L3:;
/* "lib.pyx":586
* flag = cpython.Py_NE
* else:
* raise ValueError('Unrecognized operator') # <<<<<<<<<<<<<<
*
* result = np.empty(n, dtype=bool).view(np.uint8)
*/
__pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_6);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_5));
PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, ((PyObject *)__pyx_kp_s_5));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
587:
588: result = np.empty(n, dtype=bool).view(np.uint8)
/* "lib.pyx":588
* raise ValueError('Unrecognized operator')
*
* result = np.empty(n, dtype=bool).view(np.uint8) # <<<<<<<<<<<<<<
*
* if flag == cpython.Py_NE:
*/
__pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject*)&PyBool_Type)) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__view); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__uint8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_5 = 0;
__pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_7 = ((PyArrayObject *)__pyx_t_5);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
__pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 1, __pyx_stack);
if (unlikely(__pyx_t_8 < 0)) {
PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 1, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
}
}
__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];
if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_7 = 0;
__pyx_v_result = ((PyArrayObject *)__pyx_t_5);
__pyx_t_5 = 0;
589:
590: if flag == cpython.Py_NE:
/* "lib.pyx":590 * result = np.empty(n, dtype=bool).view(np.uint8) * * if flag == cpython.Py_NE: #<<<<<<<<<<<<<<* for i in range(n): * x = values[i] */ __pyx_t_3 = (__pyx_v_flag == Py_NE); if (__pyx_t_3) {
591: for i in range(n):
/* "lib.pyx":591
*
* if flag == cpython.Py_NE:
* for i in range(n): # <<<<<<<<<<<<<<
* x = values[i]
* if _checknull(x):
*/
__pyx_t_2 = __pyx_v_n;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_2; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
592: x = values[i]
/* "lib.pyx":592
* if flag == cpython.Py_NE:
* for i in range(n):
* x = values[i] # <<<<<<<<<<<<<<
* if _checknull(x):
* result[i] = True
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
__Pyx_XDECREF(__pyx_v_x);
__pyx_v_x = __pyx_t_5;
__pyx_t_5 = 0;
593: if _checknull(x):
/* "lib.pyx":593
* for i in range(n):
* x = values[i]
* if _checknull(x): # <<<<<<<<<<<<<<
* result[i] = True
* else:
*/
__pyx_t_3 = __pyx_f_4util__checknull(__pyx_v_x);
if (__pyx_t_3) {
594: result[i] = True
/* "lib.pyx":594
* x = values[i]
* if _checknull(x):
* result[i] = True # <<<<<<<<<<<<<<
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, val, flag)
*/
__pyx_t_14 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_result.diminfo[0].strides) = 1;
goto __pyx_L7;
}
/*else*/ {
595: else:
596: result[i] = cpython.PyObject_RichCompareBool(x, val, flag)
/* "lib.pyx":596
* result[i] = True
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, val, flag) # <<<<<<<<<<<<<<
* else:
* for i in range(n):
*/
__pyx_t_3 = PyObject_RichCompareBool(__pyx_v_x, __pyx_v_val, __pyx_v_flag); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_15 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_t_3;
}
__pyx_L7:;
}
goto __pyx_L4;
}
/*else*/ {
597: else:
598: for i in range(n):
/* "lib.pyx":598
* result[i] = cpython.PyObject_RichCompareBool(x, val, flag)
* else:
* for i in range(n): # <<<<<<<<<<<<<<
* x = values[i]
* if _checknull(x):
*/
__pyx_t_2 = __pyx_v_n;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_2; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
599: x = values[i]
/* "lib.pyx":599
* else:
* for i in range(n):
* x = values[i] # <<<<<<<<<<<<<<
* if _checknull(x):
* result[i] = False
*/
__pyx_t_16 = __pyx_v_i;
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
__Pyx_XDECREF(__pyx_v_x);
__pyx_v_x = __pyx_t_5;
__pyx_t_5 = 0;
600: if _checknull(x):
/* "lib.pyx":600
* for i in range(n):
* x = values[i]
* if _checknull(x): # <<<<<<<<<<<<<<
* result[i] = False
* else:
*/
__pyx_t_3 = __pyx_f_4util__checknull(__pyx_v_x);
if (__pyx_t_3) {
601: result[i] = False
/* "lib.pyx":601
* x = values[i]
* if _checknull(x):
* result[i] = False # <<<<<<<<<<<<<<
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, val, flag)
*/
__pyx_t_17 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides) = 0;
goto __pyx_L10;
}
/*else*/ {
602: else:
603: result[i] = cpython.PyObject_RichCompareBool(x, val, flag)
/* "lib.pyx":603
* result[i] = False
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, val, flag) # <<<<<<<<<<<<<<
*
* return result.view(bool)
*/
__pyx_t_3 = PyObject_RichCompareBool(__pyx_v_x, __pyx_v_val, __pyx_v_flag); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_18 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_t_3;
}
__pyx_L10:;
}
}
__pyx_L4:;
604:
605: return result.view(bool)
/* "lib.pyx":605 * result[i] = cpython.PyObject_RichCompareBool(x, val, flag) * * return result.view(bool) #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject*)&PyBool_Type)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject*)&PyBool_Type)); __Pyx_GIVEREF(((PyObject*)&PyBool_Type)); __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.scalar_compare", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_operator); __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_x); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_57vec_compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_57vec_compare = {__Pyx_NAMESTR("vec_compare"), (PyCFunction)__pyx_pw_3lib_57vec_compare, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_57vec_compare(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_left = 0; PyArrayObject *__pyx_v_right = 0; PyObject *__pyx_v_op = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("vec_compare (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,&__pyx_n_s__op,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("vec_compare", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("vec_compare", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vec_compare")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_left = ((PyArrayObject *)values[0]); __pyx_v_right = ((PyArrayObject *)values[1]); __pyx_v_op = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("vec_compare", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.vec_compare", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_56vec_compare(__pyx_self, __pyx_v_left, __pyx_v_right, __pyx_v_op); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
606:
607: @cython.wraparound(False)
608: @cython.boundscheck(False)
609: def vec_compare(ndarray[object] left, ndarray[object] right, object op):
/* "lib.pyx":609 * @cython.wraparound(False) * @cython.boundscheck(False) * def vec_compare(ndarray[object] left, ndarray[object] right, object op): #<<<<<<<<<<<<<<* import operator * cdef: */ static PyObject *__pyx_pf_3lib_56vec_compare(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_left, PyArrayObject *__pyx_v_right, PyObject *__pyx_v_op) { PyObject *__pyx_v_operator = NULL; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; int __pyx_v_flag; PyObject *__pyx_v_x = NULL; PyObject *__pyx_v_y = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_left; __Pyx_Buffer __pyx_pybuffer_left; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; __Pyx_LocalBuf_ND __pyx_pybuffernd_right; __Pyx_Buffer __pyx_pybuffer_right; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("vec_compare", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_left.pybuffer.buf = NULL; __pyx_pybuffer_left.refcount = 0; __pyx_pybuffernd_left.data = NULL; __pyx_pybuffernd_left.rcbuffer = &__pyx_pybuffer_left; __pyx_pybuffer_right.pybuffer.buf = NULL; __pyx_pybuffer_right.refcount = 0; __pyx_pybuffernd_right.data = NULL; __pyx_pybuffernd_right.rcbuffer = &__pyx_pybuffer_right; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_left.rcbuffer->pybuffer, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_left.diminfo[0].strides = __pyx_pybuffernd_left.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_left.diminfo[0].shape = __pyx_pybuffernd_left.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_right.rcbuffer->pybuffer, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_right.diminfo[0].strides = __pyx_pybuffernd_right.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_right.diminfo[0].shape = __pyx_pybuffernd_right.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":609 * @cython.wraparound(False) * @cython.boundscheck(False) * def vec_compare(ndarray[object] left, ndarray[object] right, object op): #<<<<<<<<<<<<<<* import operator * cdef: */ __pyx_k_tuple_149 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_149)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_149); __Pyx_INCREF(((PyObject *)__pyx_n_s__left)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 0, ((PyObject *)__pyx_n_s__left)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__left)); __Pyx_INCREF(((PyObject *)__pyx_n_s__right)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 1, ((PyObject *)__pyx_n_s__right)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__right)); __Pyx_INCREF(((PyObject *)__pyx_n_s__op)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 2, ((PyObject *)__pyx_n_s__op)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__op)); __Pyx_INCREF(((PyObject *)__pyx_n_s__operator)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 3, ((PyObject *)__pyx_n_s__operator)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__operator)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 4, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 5, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__flag)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 7, ((PyObject *)__pyx_n_s__flag)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__flag)); __Pyx_INCREF(((PyObject *)__pyx_n_s__x)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 8, ((PyObject *)__pyx_n_s__x)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__x)); __Pyx_INCREF(((PyObject *)__pyx_n_s__y)); PyTuple_SET_ITEM(__pyx_k_tuple_149, 9, ((PyObject *)__pyx_n_s__y)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__y)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_149)); /* "lib.pyx":609 * @cython.wraparound(False) * @cython.boundscheck(False) * def vec_compare(ndarray[object] left, ndarray[object] right, object op): #<<<<<<<<<<<<<<* import operator * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_57vec_compare, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__vec_compare, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_150 = (PyObject*)__Pyx_PyCode_New(3, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__vec_compare, 609, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_150)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
610: import operator
/* "lib.pyx":610 * @cython.boundscheck(False) * def vec_compare(ndarray[object] left, ndarray[object] right, object op): * import operator #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(left) */ __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__operator), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_operator = __pyx_t_1; __pyx_t_1 = 0;
611: cdef:
612: Py_ssize_t i, n = len(left)
/* "lib.pyx":612 * import operator * cdef: * Py_ssize_t i, n = len(left) #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] result * int flag */ __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_2;
613: ndarray[uint8_t, cast=True] result
614: int flag
615:
616: if n != len(right):
/* "lib.pyx":616 * int flag * * if n != len(right): #<<<<<<<<<<<<<<* raise ValueError('Arrays were different lengths: %d vs %d' * % (n, len(right))) */ __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = (__pyx_v_n != __pyx_t_2); if (__pyx_t_3) {
617: raise ValueError('Arrays were different lengths: %d vs %d'
618: % (n, len(right)))
/* "lib.pyx":618
* if n != len(right):
* raise ValueError('Arrays were different lengths: %d vs %d'
* % (n, len(right))) # <<<<<<<<<<<<<<
*
* if op is operator.lt:
*/
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_4 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_1 = 0;
__pyx_t_4 = 0;
__pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
__Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__pyx_t_4 = 0;
__pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
619:
620: if op is operator.lt:
/* "lib.pyx":620 * % (n, len(right))) * * if op is operator.lt: #<<<<<<<<<<<<<<* flag = cpython.Py_LT * elif op is operator.le: */ __pyx_t_4 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__lt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_op == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
621: flag = cpython.Py_LT
/* "lib.pyx":621
*
* if op is operator.lt:
* flag = cpython.Py_LT # <<<<<<<<<<<<<<
* elif op is operator.le:
* flag = cpython.Py_LE
*/
__pyx_v_flag = Py_LT;
goto __pyx_L4;
}
622: elif op is operator.le:
/* "lib.pyx":622 * if op is operator.lt: * flag = cpython.Py_LT * elif op is operator.le: #<<<<<<<<<<<<<<* flag = cpython.Py_LE * elif op is operator.gt: */ __pyx_t_4 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__le); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_op == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
623: flag = cpython.Py_LE
/* "lib.pyx":623
* flag = cpython.Py_LT
* elif op is operator.le:
* flag = cpython.Py_LE # <<<<<<<<<<<<<<
* elif op is operator.gt:
* flag = cpython.Py_GT
*/
__pyx_v_flag = Py_LE;
goto __pyx_L4;
}
624: elif op is operator.gt:
/* "lib.pyx":624 * elif op is operator.le: * flag = cpython.Py_LE * elif op is operator.gt: #<<<<<<<<<<<<<<* flag = cpython.Py_GT * elif op is operator.ge: */ __pyx_t_4 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__gt); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_op == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
625: flag = cpython.Py_GT
/* "lib.pyx":625
* flag = cpython.Py_LE
* elif op is operator.gt:
* flag = cpython.Py_GT # <<<<<<<<<<<<<<
* elif op is operator.ge:
* flag = cpython.Py_GE
*/
__pyx_v_flag = Py_GT;
goto __pyx_L4;
}
626: elif op is operator.ge:
/* "lib.pyx":626 * elif op is operator.gt: * flag = cpython.Py_GT * elif op is operator.ge: #<<<<<<<<<<<<<<* flag = cpython.Py_GE * elif op is operator.eq: */ __pyx_t_4 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__ge); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_op == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
627: flag = cpython.Py_GE
/* "lib.pyx":627
* flag = cpython.Py_GT
* elif op is operator.ge:
* flag = cpython.Py_GE # <<<<<<<<<<<<<<
* elif op is operator.eq:
* flag = cpython.Py_EQ
*/
__pyx_v_flag = Py_GE;
goto __pyx_L4;
}
628: elif op is operator.eq:
/* "lib.pyx":628 * elif op is operator.ge: * flag = cpython.Py_GE * elif op is operator.eq: #<<<<<<<<<<<<<<* flag = cpython.Py_EQ * elif op is operator.ne: */ __pyx_t_4 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__eq); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_op == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
629: flag = cpython.Py_EQ
/* "lib.pyx":629
* flag = cpython.Py_GE
* elif op is operator.eq:
* flag = cpython.Py_EQ # <<<<<<<<<<<<<<
* elif op is operator.ne:
* flag = cpython.Py_NE
*/
__pyx_v_flag = Py_EQ;
goto __pyx_L4;
}
630: elif op is operator.ne:
/* "lib.pyx":630 * elif op is operator.eq: * flag = cpython.Py_EQ * elif op is operator.ne: #<<<<<<<<<<<<<<* flag = cpython.Py_NE * else: */ __pyx_t_4 = PyObject_GetAttr(__pyx_v_operator, __pyx_n_s__ne); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = (__pyx_v_op == __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) {
631: flag = cpython.Py_NE
/* "lib.pyx":631
* flag = cpython.Py_EQ
* elif op is operator.ne:
* flag = cpython.Py_NE # <<<<<<<<<<<<<<
* else:
* raise ValueError('Unrecognized operator')
*/
__pyx_v_flag = Py_NE;
goto __pyx_L4;
}
/*else*/ {
632: else:
633: raise ValueError('Unrecognized operator')
/* "lib.pyx":633
* flag = cpython.Py_NE
* else:
* raise ValueError('Unrecognized operator') # <<<<<<<<<<<<<<
*
* result = np.empty(n, dtype=bool).view(np.uint8)
*/
__pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L4:;
/* "lib.pyx":633
* flag = cpython.Py_NE
* else:
* raise ValueError('Unrecognized operator') # <<<<<<<<<<<<<<
*
* result = np.empty(n, dtype=bool).view(np.uint8)
*/
__pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_8);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_5));
PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, ((PyObject *)__pyx_kp_s_5));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
634:
635: result = np.empty(n, dtype=bool).view(np.uint8)
/* "lib.pyx":635
* raise ValueError('Unrecognized operator')
*
* result = np.empty(n, dtype=bool).view(np.uint8) # <<<<<<<<<<<<<<
*
* if flag == cpython.Py_NE:
*/
__pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), ((PyObject*)&PyBool_Type)) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__pyx_t_4 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__view); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__uint8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_7 = ((PyArrayObject *)__pyx_t_1);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
__pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 1, __pyx_stack);
if (unlikely(__pyx_t_8 < 0)) {
PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 1, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
}
}
__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];
if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_7 = 0;
__pyx_v_result = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
636:
637: if flag == cpython.Py_NE:
/* "lib.pyx":637 * result = np.empty(n, dtype=bool).view(np.uint8) * * if flag == cpython.Py_NE: #<<<<<<<<<<<<<<* for i in range(n): * x = left[i] */ __pyx_t_3 = (__pyx_v_flag == Py_NE); if (__pyx_t_3) {
638: for i in range(n):
/* "lib.pyx":638
*
* if flag == cpython.Py_NE:
* for i in range(n): # <<<<<<<<<<<<<<
* x = left[i]
* y = right[i]
*/
__pyx_t_2 = __pyx_v_n;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_2; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
639: x = left[i]
/* "lib.pyx":639
* if flag == cpython.Py_NE:
* for i in range(n):
* x = left[i] # <<<<<<<<<<<<<<
* y = right[i]
*
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_left.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_left.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_1);
__Pyx_XDECREF(__pyx_v_x);
__pyx_v_x = __pyx_t_1;
__pyx_t_1 = 0;
640: y = right[i]
/* "lib.pyx":640
* for i in range(n):
* x = left[i]
* y = right[i] # <<<<<<<<<<<<<<
*
* if _checknull(x) or _checknull(y):
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_right.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_right.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_1);
__Pyx_XDECREF(__pyx_v_y);
__pyx_v_y = __pyx_t_1;
__pyx_t_1 = 0;
641:
642: if _checknull(x) or _checknull(y):
/* "lib.pyx":642
* y = right[i]
*
* if _checknull(x) or _checknull(y): # <<<<<<<<<<<<<<
* result[i] = True
* else:
*/
__pyx_t_3 = __pyx_f_4util__checknull(__pyx_v_x);
if (!__pyx_t_3) {
__pyx_t_15 = __pyx_f_4util__checknull(__pyx_v_y);
__pyx_t_16 = __pyx_t_15;
} else {
__pyx_t_16 = __pyx_t_3;
}
if (__pyx_t_16) {
643: result[i] = True
/* "lib.pyx":643
*
* if _checknull(x) or _checknull(y):
* result[i] = True # <<<<<<<<<<<<<<
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, y, flag)
*/
__pyx_t_17 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides) = 1;
goto __pyx_L8;
}
/*else*/ {
644: else:
645: result[i] = cpython.PyObject_RichCompareBool(x, y, flag)
/* "lib.pyx":645
* result[i] = True
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, y, flag) # <<<<<<<<<<<<<<
* else:
* for i in range(n):
*/
__pyx_t_16 = PyObject_RichCompareBool(__pyx_v_x, __pyx_v_y, __pyx_v_flag); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_18 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_t_16;
}
__pyx_L8:;
}
goto __pyx_L5;
}
/*else*/ {
646: else:
647: for i in range(n):
/* "lib.pyx":647
* result[i] = cpython.PyObject_RichCompareBool(x, y, flag)
* else:
* for i in range(n): # <<<<<<<<<<<<<<
* x = left[i]
* y = right[i]
*/
__pyx_t_2 = __pyx_v_n;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_2; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
648: x = left[i]
/* "lib.pyx":648
* else:
* for i in range(n):
* x = left[i] # <<<<<<<<<<<<<<
* y = right[i]
*
*/
__pyx_t_19 = __pyx_v_i;
__pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_left.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_left.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_1);
__Pyx_XDECREF(__pyx_v_x);
__pyx_v_x = __pyx_t_1;
__pyx_t_1 = 0;
649: y = right[i]
/* "lib.pyx":649
* for i in range(n):
* x = left[i]
* y = right[i] # <<<<<<<<<<<<<<
*
* if _checknull(x) or _checknull(y):
*/
__pyx_t_20 = __pyx_v_i;
__pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_right.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_right.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_1);
__Pyx_XDECREF(__pyx_v_y);
__pyx_v_y = __pyx_t_1;
__pyx_t_1 = 0;
650:
651: if _checknull(x) or _checknull(y):
/* "lib.pyx":651
* y = right[i]
*
* if _checknull(x) or _checknull(y): # <<<<<<<<<<<<<<
* result[i] = False
* else:
*/
__pyx_t_16 = __pyx_f_4util__checknull(__pyx_v_x);
if (!__pyx_t_16) {
__pyx_t_3 = __pyx_f_4util__checknull(__pyx_v_y);
__pyx_t_15 = __pyx_t_3;
} else {
__pyx_t_15 = __pyx_t_16;
}
if (__pyx_t_15) {
652: result[i] = False
/* "lib.pyx":652
*
* if _checknull(x) or _checknull(y):
* result[i] = False # <<<<<<<<<<<<<<
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, y, flag)
*/
__pyx_t_21 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_result.diminfo[0].strides) = 0;
goto __pyx_L11;
}
/*else*/ {
653: else:
654: result[i] = cpython.PyObject_RichCompareBool(x, y, flag)
/* "lib.pyx":654
* result[i] = False
* else:
* result[i] = cpython.PyObject_RichCompareBool(x, y, flag) # <<<<<<<<<<<<<<
*
* return result.view(bool)
*/
__pyx_t_15 = PyObject_RichCompareBool(__pyx_v_x, __pyx_v_y, __pyx_v_flag); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_22 = __pyx_v_i;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_t_15;
}
__pyx_L11:;
}
}
__pyx_L5:;
655:
656: return result.view(bool)
/* "lib.pyx":656 * result[i] = cpython.PyObject_RichCompareBool(x, y, flag) * * return result.view(bool) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject*)&PyBool_Type)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject*)&PyBool_Type)); __Pyx_GIVEREF(((PyObject*)&PyBool_Type)); __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_left.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_right.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.vec_compare", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_left.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_right.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_operator); __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_x); __Pyx_XDECREF(__pyx_v_y); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_59scalar_binop(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_59scalar_binop = {__Pyx_NAMESTR("scalar_binop"), (PyCFunction)__pyx_pw_3lib_59scalar_binop, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_59scalar_binop(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_op = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("scalar_binop (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__val,&__pyx_n_s__op,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__val)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("scalar_binop", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("scalar_binop", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "scalar_binop")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_val = values[1]; __pyx_v_op = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("scalar_binop", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.scalar_binop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_58scalar_binop(__pyx_self, __pyx_v_values, __pyx_v_val, __pyx_v_op); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
657:
658:
659: @cython.wraparound(False)
660: @cython.boundscheck(False)
661: def scalar_binop(ndarray[object] values, object val, object op):
/* "lib.pyx":661 * @cython.wraparound(False) * @cython.boundscheck(False) * def scalar_binop(ndarray[object] values, object val, object op): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ static PyObject *__pyx_pf_3lib_58scalar_binop(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyObject *__pyx_v_val, PyObject *__pyx_v_op) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; PyObject *__pyx_v_x = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("scalar_binop", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":661 * @cython.wraparound(False) * @cython.boundscheck(False) * def scalar_binop(ndarray[object] values, object val, object op): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_k_tuple_151 = PyTuple_New(7); if (unlikely(!__pyx_k_tuple_151)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_151); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 1, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__op)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 2, ((PyObject *)__pyx_n_s__op)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__op)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 5, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__x)); PyTuple_SET_ITEM(__pyx_k_tuple_151, 6, ((PyObject *)__pyx_n_s__x)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__x)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_151)); /* "lib.pyx":661 * @cython.wraparound(False) * @cython.boundscheck(False) * def scalar_binop(ndarray[object] values, object val, object op): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_59scalar_binop, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__scalar_binop, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_152 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__scalar_binop, 661, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_152)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
662: cdef:
663: Py_ssize_t i, n = len(values)
/* "lib.pyx":663 * def scalar_binop(ndarray[object] values, object val, object op): * cdef: * Py_ssize_t i, n = len(values) #<<<<<<<<<<<<<<* ndarray[object] result * object x */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
664: ndarray[object] result
665: object x
666:
667: result = np.empty(n, dtype=object)
/* "lib.pyx":667 * object x * * result = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
668:
669: for i in range(n):
/* "lib.pyx":669 * result = np.empty(n, dtype=object) * * for i in range(n): #<<<<<<<<<<<<<<* x = values[i] * if util._checknull(x): */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_11 = 0; __pyx_t_11<__pyx_t_1; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
670: x = values[i]
/* "lib.pyx":670
*
* for i in range(n):
* x = values[i] # <<<<<<<<<<<<<<
* if util._checknull(x):
* result[i] = x
*/
__pyx_t_12 = __pyx_v_i;
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
__Pyx_XDECREF(__pyx_v_x);
__pyx_v_x = __pyx_t_5;
__pyx_t_5 = 0;
671: if util._checknull(x):
/* "lib.pyx":671
* for i in range(n):
* x = values[i]
* if util._checknull(x): # <<<<<<<<<<<<<<
* result[i] = x
* else:
*/
__pyx_t_13 = __pyx_f_4util__checknull(__pyx_v_x);
if (__pyx_t_13) {
672: result[i] = x
/* "lib.pyx":672
* x = values[i]
* if util._checknull(x):
* result[i] = x # <<<<<<<<<<<<<<
* else:
* result[i] = op(x, val)
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_15 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_15);
__Pyx_INCREF(__pyx_v_x); __Pyx_DECREF(*__pyx_t_15);
*__pyx_t_15 = __pyx_v_x;
__Pyx_GIVEREF(*__pyx_t_15);
goto __pyx_L5;
}
/*else*/ {
673: else:
674: result[i] = op(x, val)
/* "lib.pyx":674
* result[i] = x
* else:
* result[i] = op(x, val) # <<<<<<<<<<<<<<
*
* return maybe_convert_bool(result)
*/
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_x);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
__Pyx_INCREF(__pyx_v_val);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_val);
__Pyx_GIVEREF(__pyx_v_val);
__pyx_t_2 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__pyx_t_16 = __pyx_v_i;
__pyx_t_15 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_15);
__Pyx_INCREF(__pyx_t_2); __Pyx_DECREF(*__pyx_t_15);
*__pyx_t_15 = __pyx_t_2;
__Pyx_GIVEREF(*__pyx_t_15);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__pyx_L5:;
}
675:
676: return maybe_convert_bool(result)
/* "lib.pyx":676 * result[i] = op(x, val) * * return maybe_convert_bool(result) #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__maybe_convert_bool); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_v_result)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_result)); __Pyx_GIVEREF(((PyObject *)__pyx_v_result)); __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.scalar_binop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_x); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_61vec_binop(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_61vec_binop = {__Pyx_NAMESTR("vec_binop"), (PyCFunction)__pyx_pw_3lib_61vec_binop, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_61vec_binop(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_left = 0; PyArrayObject *__pyx_v_right = 0; PyObject *__pyx_v_op = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("vec_binop (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,&__pyx_n_s__op,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("vec_binop", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("vec_binop", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vec_binop")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_left = ((PyArrayObject *)values[0]); __pyx_v_right = ((PyArrayObject *)values[1]); __pyx_v_op = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("vec_binop", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.vec_binop", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_60vec_binop(__pyx_self, __pyx_v_left, __pyx_v_right, __pyx_v_op); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
677:
678: @cython.wraparound(False)
679: @cython.boundscheck(False)
680: def vec_binop(ndarray[object] left, ndarray[object] right, object op):
/* "lib.pyx":680 * @cython.wraparound(False) * @cython.boundscheck(False) * def vec_binop(ndarray[object] left, ndarray[object] right, object op): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(left) */ static PyObject *__pyx_pf_3lib_60vec_binop(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_left, PyArrayObject *__pyx_v_right, PyObject *__pyx_v_op) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; PyObject *__pyx_v_x = NULL; PyObject *__pyx_v_y = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_left; __Pyx_Buffer __pyx_pybuffer_left; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; __Pyx_LocalBuf_ND __pyx_pybuffernd_right; __Pyx_Buffer __pyx_pybuffer_right; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("vec_binop", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_left.pybuffer.buf = NULL; __pyx_pybuffer_left.refcount = 0; __pyx_pybuffernd_left.data = NULL; __pyx_pybuffernd_left.rcbuffer = &__pyx_pybuffer_left; __pyx_pybuffer_right.pybuffer.buf = NULL; __pyx_pybuffer_right.refcount = 0; __pyx_pybuffernd_right.data = NULL; __pyx_pybuffernd_right.rcbuffer = &__pyx_pybuffer_right; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_left.rcbuffer->pybuffer, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_left.diminfo[0].strides = __pyx_pybuffernd_left.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_left.diminfo[0].shape = __pyx_pybuffernd_left.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_right.rcbuffer->pybuffer, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_right.diminfo[0].strides = __pyx_pybuffernd_right.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_right.diminfo[0].shape = __pyx_pybuffernd_right.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":680 * @cython.wraparound(False) * @cython.boundscheck(False) * def vec_binop(ndarray[object] left, ndarray[object] right, object op): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(left) */ __pyx_k_tuple_153 = PyTuple_New(8); if (unlikely(!__pyx_k_tuple_153)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_153); __Pyx_INCREF(((PyObject *)__pyx_n_s__left)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 0, ((PyObject *)__pyx_n_s__left)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__left)); __Pyx_INCREF(((PyObject *)__pyx_n_s__right)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 1, ((PyObject *)__pyx_n_s__right)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__right)); __Pyx_INCREF(((PyObject *)__pyx_n_s__op)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 2, ((PyObject *)__pyx_n_s__op)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__op)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 5, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__x)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 6, ((PyObject *)__pyx_n_s__x)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__x)); __Pyx_INCREF(((PyObject *)__pyx_n_s__y)); PyTuple_SET_ITEM(__pyx_k_tuple_153, 7, ((PyObject *)__pyx_n_s__y)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__y)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_153)); /* "lib.pyx":680 * @cython.wraparound(False) * @cython.boundscheck(False) * def vec_binop(ndarray[object] left, ndarray[object] right, object op): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(left) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_61vec_binop, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__vec_binop, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_154 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__vec_binop, 680, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_154)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
681: cdef:
682: Py_ssize_t i, n = len(left)
/* "lib.pyx":682 * def vec_binop(ndarray[object] left, ndarray[object] right, object op): * cdef: * Py_ssize_t i, n = len(left) #<<<<<<<<<<<<<<* ndarray[object] result * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
683: ndarray[object] result
684:
685: if n != len(right):
/* "lib.pyx":685 * ndarray[object] result * * if n != len(right): #<<<<<<<<<<<<<<* raise ValueError('Arrays were different lengths: %d vs %d' * % (n, len(right))) */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = (__pyx_v_n != __pyx_t_1); if (__pyx_t_2) {
686: raise ValueError('Arrays were different lengths: %d vs %d'
687: % (n, len(right)))
/* "lib.pyx":687
* if n != len(right):
* raise ValueError('Arrays were different lengths: %d vs %d'
* % (n, len(right))) # <<<<<<<<<<<<<<
*
* result = np.empty(n, dtype=object)
*/
__pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_4 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
__Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__pyx_t_4 = 0;
__pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
688:
689: result = np.empty(n, dtype=object)
/* "lib.pyx":689 * % (n, len(right))) * * result = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
690:
691: for i in range(n):
/* "lib.pyx":691 * result = np.empty(n, dtype=object) * * for i in range(n): #<<<<<<<<<<<<<<* x = left[i] * y = right[i] */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_12 = 0; __pyx_t_12<__pyx_t_1; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
692: x = left[i]
/* "lib.pyx":692
*
* for i in range(n):
* x = left[i] # <<<<<<<<<<<<<<
* y = right[i]
* try:
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_left.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_left.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__Pyx_XDECREF(__pyx_v_x);
__pyx_v_x = __pyx_t_6;
__pyx_t_6 = 0;
693: y = right[i]
/* "lib.pyx":693
* for i in range(n):
* x = left[i]
* y = right[i] # <<<<<<<<<<<<<<
* try:
* result[i] = op(x, y)
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_right.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_right.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__Pyx_XDECREF(__pyx_v_y);
__pyx_v_y = __pyx_t_6;
__pyx_t_6 = 0;
694: try:
/* "lib.pyx":694
* x = left[i]
* y = right[i]
* try: # <<<<<<<<<<<<<<
* result[i] = op(x, y)
* except TypeError:
*/
{
__Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_9);
/*try:*/ {
695: result[i] = op(x, y)
/* "lib.pyx":695
* y = right[i]
* try:
* result[i] = op(x, y) # <<<<<<<<<<<<<<
* except TypeError:
* if util._checknull(x):
*/
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_x);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
__Pyx_INCREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
__pyx_t_4 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
__pyx_t_15 = __pyx_v_i;
__pyx_t_16 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_16);
__Pyx_INCREF(__pyx_t_4); __Pyx_DECREF(*__pyx_t_16);
*__pyx_t_16 = __pyx_t_4;
__Pyx_GIVEREF(*__pyx_t_16);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L13_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
696: except TypeError:
/* "lib.pyx":696
* try:
* result[i] = op(x, y)
* except TypeError: # <<<<<<<<<<<<<<
* if util._checknull(x):
* result[i] = x
*/
__pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
if (__pyx_t_8) {
__Pyx_AddTraceback("lib.vec_binop", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_3);
697: if util._checknull(x):
/* "lib.pyx":697
* result[i] = op(x, y)
* except TypeError:
* if util._checknull(x): # <<<<<<<<<<<<<<
* result[i] = x
* elif util._checknull(y):
*/
__pyx_t_2 = __pyx_f_4util__checknull(__pyx_v_x);
if (__pyx_t_2) {
698: result[i] = x
/* "lib.pyx":698
* except TypeError:
* if util._checknull(x):
* result[i] = x # <<<<<<<<<<<<<<
* elif util._checknull(y):
* result[i] = y
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_16 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_16);
__Pyx_INCREF(__pyx_v_x); __Pyx_DECREF(*__pyx_t_16);
*__pyx_t_16 = __pyx_v_x;
__Pyx_GIVEREF(*__pyx_t_16);
goto __pyx_L16;
}
699: elif util._checknull(y):
/* "lib.pyx":699
* if util._checknull(x):
* result[i] = x
* elif util._checknull(y): # <<<<<<<<<<<<<<
* result[i] = y
* else:
*/
__pyx_t_2 = __pyx_f_4util__checknull(__pyx_v_y);
if (__pyx_t_2) {
700: result[i] = y
/* "lib.pyx":700
* result[i] = x
* elif util._checknull(y):
* result[i] = y # <<<<<<<<<<<<<<
* else:
* raise
*/
__pyx_t_18 = __pyx_v_i;
__pyx_t_16 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_16);
__Pyx_INCREF(__pyx_v_y); __Pyx_DECREF(*__pyx_t_16);
*__pyx_t_16 = __pyx_v_y;
__Pyx_GIVEREF(*__pyx_t_16);
goto __pyx_L16;
}
/*else*/ {
701: else:
702: raise
/* "lib.pyx":702
* result[i] = y
* else:
* raise # <<<<<<<<<<<<<<
*
* return maybe_convert_bool(result)
*/
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_6, __pyx_t_3);
__pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_3 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
}
__pyx_L16:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L7_exception_handled;
}
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L7_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
__pyx_L13_try_end:;
}
}
703:
704: return maybe_convert_bool(result)
/* "lib.pyx":704 * raise * * return maybe_convert_bool(result) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__maybe_convert_bool); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_v_result)); PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_result)); __Pyx_GIVEREF(((PyObject *)__pyx_v_result)); __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_left.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_right.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.vec_binop", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_left.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_right.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF(__pyx_v_x); __Pyx_XDECREF(__pyx_v_y); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_63astype_intsafe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_63astype_intsafe = {__Pyx_NAMESTR("astype_intsafe"), (PyCFunction)__pyx_pw_3lib_63astype_intsafe, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_63astype_intsafe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_arr = 0; PyObject *__pyx_v_new_dtype = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("astype_intsafe (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arr,&__pyx_n_s__new_dtype,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_dtype)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("astype_intsafe", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "astype_intsafe")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_arr = ((PyArrayObject *)values[0]); __pyx_v_new_dtype = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("astype_intsafe", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.astype_intsafe", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_62astype_intsafe(__pyx_self, __pyx_v_arr, __pyx_v_new_dtype); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
705:
706:
707: def astype_intsafe(ndarray[object] arr, new_dtype):
/* "lib.pyx":707 * * * def astype_intsafe(ndarray[object] arr, new_dtype): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ static PyObject *__pyx_pf_3lib_62astype_intsafe(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_new_dtype) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("astype_intsafe", 0); __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":707 * * * def astype_intsafe(ndarray[object] arr, new_dtype): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ __pyx_k_tuple_155 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_155)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_155); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_155, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__new_dtype)); PyTuple_SET_ITEM(__pyx_k_tuple_155, 1, ((PyObject *)__pyx_n_s__new_dtype)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__new_dtype)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_155, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_155, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_155, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_155)); /* "lib.pyx":707 * * * def astype_intsafe(ndarray[object] arr, new_dtype): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(arr) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_63astype_intsafe, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__astype_intsafe, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_156 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__astype_intsafe, 707, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_156)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
708: cdef:
709: Py_ssize_t i, n = len(arr)
/* "lib.pyx":709 * def astype_intsafe(ndarray[object] arr, new_dtype): * cdef: * Py_ssize_t i, n = len(arr) #<<<<<<<<<<<<<<* ndarray result * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
710: ndarray result
711:
712: result = np.empty(n, dtype=new_dtype)
/* "lib.pyx":712 * ndarray result * * result = np.empty(n, dtype=new_dtype) #<<<<<<<<<<<<<<* for i in range(n): * util.set_value_at(result, i, arr[i]) */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_v_new_dtype)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_result = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
713: for i in range(n):
/* "lib.pyx":713 * * result = np.empty(n, dtype=new_dtype) * for i in range(n): #<<<<<<<<<<<<<<* util.set_value_at(result, i, arr[i]) * */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_6 = 0; __pyx_t_6<__pyx_t_1; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6;
714: util.set_value_at(result, i, arr[i])
/* "lib.pyx":714
* result = np.empty(n, dtype=new_dtype)
* for i in range(n):
* util.set_value_at(result, i, arr[i]) # <<<<<<<<<<<<<<
*
* return result
*/
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_7 < 0) {
__pyx_t_7 += __pyx_pybuffernd_arr.diminfo[0].shape;
if (unlikely(__pyx_t_7 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_7 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_2);
__pyx_t_4 = __pyx_f_4util_set_value_at(__pyx_v_result, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
715:
716: return result
/* "lib.pyx":716 * util.set_value_at(result, i, arr[i]) * * return result #<<<<<<<<<<<<<<* * def clean_index_list(list obj): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.astype_intsafe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_65clean_index_list(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/ static char __pyx_doc_3lib_64clean_index_list[] = "\n Utility used in pandas.core.index._ensure_index\n "; static PyMethodDef __pyx_mdef_3lib_65clean_index_list = {__Pyx_NAMESTR("clean_index_list"), (PyCFunction)__pyx_pw_3lib_65clean_index_list, METH_O, __Pyx_DOCSTR(__pyx_doc_3lib_64clean_index_list)}; static PyObject *__pyx_pw_3lib_65clean_index_list(PyObject *__pyx_self, PyObject *__pyx_v_obj) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clean_index_list (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), (&PyList_Type), 1, "obj", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_64clean_index_list(__pyx_self, ((PyObject*)__pyx_v_obj)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
717:
718: def clean_index_list(list obj):
/* "lib.pyx":718 * return result * * def clean_index_list(list obj): #<<<<<<<<<<<<<<* ''' * Utility used in pandas.core.index._ensure_index */ static PyObject *__pyx_pf_3lib_64clean_index_list(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) { PyArrayObject *__pyx_v_converted = 0; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_v = 0; int __pyx_v_all_arrays; __Pyx_LocalBuf_ND __pyx_pybuffernd_converted; __Pyx_Buffer __pyx_pybuffer_converted; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("clean_index_list", 0); __pyx_pybuffer_converted.pybuffer.buf = NULL; __pyx_pybuffer_converted.refcount = 0; __pyx_pybuffernd_converted.data = NULL; __pyx_pybuffernd_converted.rcbuffer = &__pyx_pybuffer_converted; /* "lib.pyx":718 * return result * * def clean_index_list(list obj): #<<<<<<<<<<<<<<* ''' * Utility used in pandas.core.index._ensure_index */ __pyx_k_tuple_157 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_157)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_157); __Pyx_INCREF(((PyObject *)__pyx_n_s__obj)); PyTuple_SET_ITEM(__pyx_k_tuple_157, 0, ((PyObject *)__pyx_n_s__obj)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__obj)); __Pyx_INCREF(((PyObject *)__pyx_n_s__converted)); PyTuple_SET_ITEM(__pyx_k_tuple_157, 1, ((PyObject *)__pyx_n_s__converted)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__converted)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_157, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_157, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__v)); PyTuple_SET_ITEM(__pyx_k_tuple_157, 4, ((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__v)); __Pyx_INCREF(((PyObject *)__pyx_n_s__all_arrays)); PyTuple_SET_ITEM(__pyx_k_tuple_157, 5, ((PyObject *)__pyx_n_s__all_arrays)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__all_arrays)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_157)); /* "lib.pyx":718 * return result * * def clean_index_list(list obj): #<<<<<<<<<<<<<<* ''' * Utility used in pandas.core.index._ensure_index */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_65clean_index_list, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__clean_index_list, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_158 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__clean_index_list, 718, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_158)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
719: '''
720: Utility used in pandas.core.index._ensure_index
721: '''
722: cdef:
723: ndarray[object] converted
724: Py_ssize_t i, n = len(obj)
/* "lib.pyx":724 * cdef: * ndarray[object] converted * Py_ssize_t i, n = len(obj) #<<<<<<<<<<<<<<* object v * bint all_arrays = 1 */ if (unlikely(((PyObject *)__pyx_v_obj) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_obj)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
725: object v
726: bint all_arrays = 1
/* "lib.pyx":726 * Py_ssize_t i, n = len(obj) * object v * bint all_arrays = 1 #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_v_all_arrays = 1;
727:
728: for i in range(n):
/* "lib.pyx":728 * bint all_arrays = 1 * * for i in range(n): #<<<<<<<<<<<<<<* v = obj[i] * if not (PyList_Check(v) or np.PyArray_Check(v)): */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_2 = 0; __pyx_t_2<__pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2;
729: v = obj[i]
/* "lib.pyx":729
*
* for i in range(n):
* v = obj[i] # <<<<<<<<<<<<<<
* if not (PyList_Check(v) or np.PyArray_Check(v)):
* all_arrays = 0
*/
if (unlikely(((PyObject *)__pyx_v_obj) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_obj), __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_3) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_3;
__pyx_t_3 = 0;
730: if not (PyList_Check(v) or np.PyArray_Check(v)):
/* "lib.pyx":730
* for i in range(n):
* v = obj[i]
* if not (PyList_Check(v) or np.PyArray_Check(v)): # <<<<<<<<<<<<<<
* all_arrays = 0
* break
*/
__pyx_t_4 = PyList_Check(__pyx_v_v);
if (!__pyx_t_4) {
__pyx_t_5 = PyArray_Check(__pyx_v_v);
__pyx_t_6 = __pyx_t_5;
} else {
__pyx_t_6 = __pyx_t_4;
}
__pyx_t_4 = (!__pyx_t_6);
if (__pyx_t_4) {
731: all_arrays = 0
/* "lib.pyx":731
* v = obj[i]
* if not (PyList_Check(v) or np.PyArray_Check(v)):
* all_arrays = 0 # <<<<<<<<<<<<<<
* break
*
*/
__pyx_v_all_arrays = 0;
732: break
/* "lib.pyx":732
* if not (PyList_Check(v) or np.PyArray_Check(v)):
* all_arrays = 0
* break # <<<<<<<<<<<<<<
*
* if all_arrays:
*/
goto __pyx_L4_break;
goto __pyx_L5;
}
__pyx_L5:;
}
__pyx_L4_break:;
733:
734: if all_arrays:
/* "lib.pyx":734 * break * * if all_arrays: #<<<<<<<<<<<<<<* return obj, all_arrays * */ if (__pyx_v_all_arrays) {
735: return obj, all_arrays
/* "lib.pyx":735
*
* if all_arrays:
* return obj, all_arrays # <<<<<<<<<<<<<<
*
* converted = np.empty(n, dtype=object)
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_all_arrays); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(((PyObject *)__pyx_v_obj));
PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_obj));
__Pyx_GIVEREF(((PyObject *)__pyx_v_obj));
PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_3);
__pyx_t_3 = 0;
__pyx_r = ((PyObject *)__pyx_t_7);
__pyx_t_7 = 0;
goto __pyx_L0;
goto __pyx_L6;
}
__pyx_L6:;
736:
737: converted = np.empty(n, dtype=object)
/* "lib.pyx":737 * return obj, all_arrays * * converted = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* for i in range(n): * v = obj[i] */ __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_7)); if (PyDict_SetItem(__pyx_t_7, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_8), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0; if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_10 = ((PyArrayObject *)__pyx_t_9); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_converted.rcbuffer->pybuffer); __pyx_t_11 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_converted.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_11<0)) { PyErr_Fetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_converted.rcbuffer->pybuffer, (PyObject*)__pyx_v_converted, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_14); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_12, __pyx_t_13, __pyx_t_14); } } __pyx_pybuffernd_converted.diminfo[0].strides = __pyx_pybuffernd_converted.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_converted.diminfo[0].shape = __pyx_pybuffernd_converted.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_11<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_10 = 0; __pyx_v_converted = ((PyArrayObject *)__pyx_t_9); __pyx_t_9 = 0;
738: for i in range(n):
/* "lib.pyx":738 * * converted = np.empty(n, dtype=object) * for i in range(n): #<<<<<<<<<<<<<<* v = obj[i] * if PyList_Check(v) or np.PyArray_Check(v): */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_2 = 0; __pyx_t_2<__pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2;
739: v = obj[i]
/* "lib.pyx":739
* converted = np.empty(n, dtype=object)
* for i in range(n):
* v = obj[i] # <<<<<<<<<<<<<<
* if PyList_Check(v) or np.PyArray_Check(v):
* converted[i] = tuple(v)
*/
if (unlikely(((PyObject *)__pyx_v_obj) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_9 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_obj), __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_9) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_9;
__pyx_t_9 = 0;
740: if PyList_Check(v) or np.PyArray_Check(v):
/* "lib.pyx":740
* for i in range(n):
* v = obj[i]
* if PyList_Check(v) or np.PyArray_Check(v): # <<<<<<<<<<<<<<
* converted[i] = tuple(v)
* else:
*/
__pyx_t_4 = PyList_Check(__pyx_v_v);
if (!__pyx_t_4) {
__pyx_t_6 = PyArray_Check(__pyx_v_v);
__pyx_t_5 = __pyx_t_6;
} else {
__pyx_t_5 = __pyx_t_4;
}
if (__pyx_t_5) {
741: converted[i] = tuple(v)
/* "lib.pyx":741
* v = obj[i]
* if PyList_Check(v) or np.PyArray_Check(v):
* converted[i] = tuple(v) # <<<<<<<<<<<<<<
* else:
* converted[i] = v
*/
__pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_INCREF(__pyx_v_v);
PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_v);
__Pyx_GIVEREF(__pyx_v_v);
__pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
__pyx_t_15 = __pyx_v_i;
__pyx_t_11 = -1;
if (__pyx_t_15 < 0) {
__pyx_t_15 += __pyx_pybuffernd_converted.diminfo[0].shape;
if (unlikely(__pyx_t_15 < 0)) __pyx_t_11 = 0;
} else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_converted.diminfo[0].shape)) __pyx_t_11 = 0;
if (unlikely(__pyx_t_11 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_11);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_16 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_converted.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_converted.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_16);
__Pyx_INCREF(__pyx_t_7); __Pyx_DECREF(*__pyx_t_16);
*__pyx_t_16 = __pyx_t_7;
__Pyx_GIVEREF(*__pyx_t_16);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L9;
}
/*else*/ {
742: else:
743: converted[i] = v
/* "lib.pyx":743
* converted[i] = tuple(v)
* else:
* converted[i] = v # <<<<<<<<<<<<<<
*
* return maybe_convert_objects(converted), 0
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_11 = -1;
if (__pyx_t_17 < 0) {
__pyx_t_17 += __pyx_pybuffernd_converted.diminfo[0].shape;
if (unlikely(__pyx_t_17 < 0)) __pyx_t_11 = 0;
} else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_converted.diminfo[0].shape)) __pyx_t_11 = 0;
if (unlikely(__pyx_t_11 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_11);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_16 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_converted.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_converted.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_16);
__Pyx_INCREF(__pyx_v_v); __Pyx_DECREF(*__pyx_t_16);
*__pyx_t_16 = __pyx_v_v;
__Pyx_GIVEREF(*__pyx_t_16);
}
__pyx_L9:;
}
744:
745: return maybe_convert_objects(converted), 0
/* "lib.pyx":745 * converted[i] = v * * return maybe_convert_objects(converted), 0 #<<<<<<<<<<<<<<* * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_v_converted)); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_v_converted)); __Pyx_GIVEREF(((PyObject *)__pyx_v_converted)); __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __Pyx_INCREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); __pyx_t_8 = 0; __pyx_r = ((PyObject *)__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_converted.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.clean_index_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_converted.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_converted); __Pyx_XDECREF(__pyx_v_v); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_67max_len_string_array(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/ static char __pyx_doc_3lib_66max_len_string_array[] = " return the maximum size of elements in a 1-dim string array "; static PyMethodDef __pyx_mdef_3lib_67max_len_string_array = {__Pyx_NAMESTR("max_len_string_array"), (PyCFunction)__pyx_pw_3lib_67max_len_string_array, METH_O, __Pyx_DOCSTR(__pyx_doc_3lib_66max_len_string_array)}; static PyObject *__pyx_pw_3lib_67max_len_string_array(PyObject *__pyx_self, PyObject *__pyx_v_arr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("max_len_string_array (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_66max_len_string_array(__pyx_self, ((PyArrayObject *)__pyx_v_arr)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
746:
747: @cython.boundscheck(False)
748: @cython.wraparound(False)
749: def max_len_string_array(ndarray[object, ndim=1] arr):
/* "lib.pyx":749 * @cython.boundscheck(False) * @cython.wraparound(False) * def max_len_string_array(ndarray[object, ndim=1] arr): #<<<<<<<<<<<<<<* """ return the maximum size of elements in a 1-dim string array """ * cdef: */ static PyObject *__pyx_pf_3lib_66max_len_string_array(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr) { int __pyx_v_i; int __pyx_v_m; int __pyx_v_l; PyObject *__pyx_v_length = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_arr; __Pyx_Buffer __pyx_pybuffer_arr; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("max_len_string_array", 0); __pyx_pybuffer_arr.pybuffer.buf = NULL; __pyx_pybuffer_arr.refcount = 0; __pyx_pybuffernd_arr.data = NULL; __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":749 * @cython.boundscheck(False) * @cython.wraparound(False) * def max_len_string_array(ndarray[object, ndim=1] arr): #<<<<<<<<<<<<<<* """ return the maximum size of elements in a 1-dim string array """ * cdef: */ __pyx_k_tuple_159 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_159)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_159); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_159, 0, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_159, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__m)); PyTuple_SET_ITEM(__pyx_k_tuple_159, 2, ((PyObject *)__pyx_n_s__m)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__m)); __Pyx_INCREF(((PyObject *)__pyx_n_s__l)); PyTuple_SET_ITEM(__pyx_k_tuple_159, 3, ((PyObject *)__pyx_n_s__l)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__l)); __Pyx_INCREF(((PyObject *)__pyx_n_s__length)); PyTuple_SET_ITEM(__pyx_k_tuple_159, 4, ((PyObject *)__pyx_n_s__length)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__length)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_159)); /* "lib.pyx":749 * @cython.boundscheck(False) * @cython.wraparound(False) * def max_len_string_array(ndarray[object, ndim=1] arr): #<<<<<<<<<<<<<<* """ return the maximum size of elements in a 1-dim string array """ * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_67max_len_string_array, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_161, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_160 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_161, 749, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_160)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
750: """ return the maximum size of elements in a 1-dim string array """
751: cdef:
752: int i, m, l
753: length = arr.shape[0]
/* "lib.pyx":753 * cdef: * int i, m, l * length = arr.shape[0] #<<<<<<<<<<<<<<* * m = 0 */ __pyx_t_1 = __Pyx_PyInt_to_py_Py_intptr_t((__pyx_v_arr->dimensions[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_v_length = __pyx_t_1; __pyx_t_1 = 0;
754:
755: m = 0
/* "lib.pyx":755 * length = arr.shape[0] * * m = 0 #<<<<<<<<<<<<<<* for i from 0<= i<length: * l = len(arr[i]) */ __pyx_v_m = 0;
756: for i from 0 <= i < length:
/* "lib.pyx":756 * * m = 0 * for i from 0<= i<length: #<<<<<<<<<<<<<<* l = len(arr[i]) * */ __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_v_length); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;} for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_2; __pyx_v_i++) {
757: l = len(arr[i])
/* "lib.pyx":757
* m = 0
* for i from 0 <= i < length:
* l = len(arr[i]) # <<<<<<<<<<<<<<
*
* if l > m:
*/
__pyx_t_3 = __pyx_v_i;
__pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_1);
__pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_l = __pyx_t_4;
758:
759: if l > m:
/* "lib.pyx":759
* l = len(arr[i])
*
* if l > m: # <<<<<<<<<<<<<<
* m = l
*
*/
__pyx_t_5 = (__pyx_v_l > __pyx_v_m);
if (__pyx_t_5) {
760: m = l
/* "lib.pyx":760
*
* if l > m:
* m = l # <<<<<<<<<<<<<<
*
* return m
*/
__pyx_v_m = __pyx_v_l;
goto __pyx_L5;
}
__pyx_L5:;
}
761:
762: return m
/* "lib.pyx":762 * m = l * * return m #<<<<<<<<<<<<<<* * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromLong(__pyx_v_m); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.max_len_string_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_length); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_69array_replace_from_nan_rep(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_68array_replace_from_nan_rep[] = " replace the values in the array with replacement if they are nan_rep; return the same array "; static PyMethodDef __pyx_mdef_3lib_69array_replace_from_nan_rep = {__Pyx_NAMESTR("array_replace_from_nan_rep"), (PyCFunction)__pyx_pw_3lib_69array_replace_from_nan_rep, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_68array_replace_from_nan_rep)}; static PyObject *__pyx_pw_3lib_69array_replace_from_nan_rep(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_arr = 0; PyObject *__pyx_v_nan_rep = 0; PyObject *__pyx_v_replace = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("array_replace_from_nan_rep (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arr,&__pyx_n_s__nan_rep,&__pyx_n_s__replace,0}; PyObject* values[3] = {0,0,0};
763:
764: @cython.boundscheck(False)
765: @cython.wraparound(False)
766: def array_replace_from_nan_rep(ndarray[object, ndim=1] arr, object nan_rep, object replace = None):
/* "lib.pyx":766
* @cython.boundscheck(False)
* @cython.wraparound(False)
* def array_replace_from_nan_rep(ndarray[object, ndim=1] arr, object nan_rep, object replace = None): # <<<<<<<<<<<<<<
* """ replace the values in the array with replacement if they are nan_rep; return the same array """
*
*/
values[2] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nan_rep)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("array_replace_from_nan_rep", 0, 2, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (kw_args > 0) {
PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__replace);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "array_replace_from_nan_rep") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_arr = ((PyArrayObject *)values[0]);
__pyx_v_nan_rep = values[1];
__pyx_v_replace = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("array_replace_from_nan_rep", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lib.array_replace_from_nan_rep", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_3lib_68array_replace_from_nan_rep(__pyx_self, __pyx_v_arr, __pyx_v_nan_rep, __pyx_v_replace);
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_3lib_68array_replace_from_nan_rep(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_nan_rep, PyObject *__pyx_v_replace) {
int __pyx_v_length;
int __pyx_v_i;
__Pyx_LocalBuf_ND __pyx_pybuffernd_arr;
__Pyx_Buffer __pyx_pybuffer_arr;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("array_replace_from_nan_rep", 0);
__Pyx_INCREF(__pyx_v_replace);
__pyx_pybuffer_arr.pybuffer.buf = NULL;
__pyx_pybuffer_arr.refcount = 0;
__pyx_pybuffernd_arr.data = NULL;
__pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr;
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0];
/* "lib.pyx":766
* @cython.boundscheck(False)
* @cython.wraparound(False)
* def array_replace_from_nan_rep(ndarray[object, ndim=1] arr, object nan_rep, object replace = None): # <<<<<<<<<<<<<<
* """ replace the values in the array with replacement if they are nan_rep; return the same array """
*
*/
__pyx_k_tuple_162 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_162)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_162);
__Pyx_INCREF(((PyObject *)__pyx_n_s__arr));
PyTuple_SET_ITEM(__pyx_k_tuple_162, 0, ((PyObject *)__pyx_n_s__arr));
__Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr));
__Pyx_INCREF(((PyObject *)__pyx_n_s__nan_rep));
PyTuple_SET_ITEM(__pyx_k_tuple_162, 1, ((PyObject *)__pyx_n_s__nan_rep));
__Pyx_GIVEREF(((PyObject *)__pyx_n_s__nan_rep));
__Pyx_INCREF(((PyObject *)__pyx_n_s__replace));
PyTuple_SET_ITEM(__pyx_k_tuple_162, 2, ((PyObject *)__pyx_n_s__replace));
__Pyx_GIVEREF(((PyObject *)__pyx_n_s__replace));
__Pyx_INCREF(((PyObject *)__pyx_n_s__length));
PyTuple_SET_ITEM(__pyx_k_tuple_162, 3, ((PyObject *)__pyx_n_s__length));
__Pyx_GIVEREF(((PyObject *)__pyx_n_s__length));
__Pyx_INCREF(((PyObject *)__pyx_n_s__i));
PyTuple_SET_ITEM(__pyx_k_tuple_162, 4, ((PyObject *)__pyx_n_s__i));
__Pyx_GIVEREF(((PyObject *)__pyx_n_s__i));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_162));
/* "lib.pyx":766
* @cython.boundscheck(False)
* @cython.wraparound(False)
* def array_replace_from_nan_rep(ndarray[object, ndim=1] arr, object nan_rep, object replace = None): # <<<<<<<<<<<<<<
* """ replace the values in the array with replacement if they are nan_rep; return the same array """
*
*/
__pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_69array_replace_from_nan_rep, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
if (PyObject_SetAttr(__pyx_m, __pyx_n_s_164, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_k_codeobj_163 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_162, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_164, 766, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_163)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
767: """ replace the values in the array with replacement if they are nan_rep; return the same array """
768:
769: cdef int length = arr.shape[0]
/* "lib.pyx":769 * """ replace the values in the array with replacement if they are nan_rep; return the same array """ * * cdef int length = arr.shape[0] #<<<<<<<<<<<<<<* cdef int i = 0 * if replace is None: */ __pyx_v_length = (__pyx_v_arr->dimensions[0]);
770: cdef int i = 0
/* "lib.pyx":770 * * cdef int length = arr.shape[0] * cdef int i = 0 #<<<<<<<<<<<<<<* if replace is None: * replace = np.nan */ __pyx_v_i = 0;
771: if replace is None:
/* "lib.pyx":771 * cdef int length = arr.shape[0] * cdef int i = 0 * if replace is None: #<<<<<<<<<<<<<<* replace = np.nan * */ __pyx_t_1 = (__pyx_v_replace == Py_None); if (__pyx_t_1) {
772: replace = np.nan
/* "lib.pyx":772
* cdef int i = 0
* if replace is None:
* replace = np.nan # <<<<<<<<<<<<<<
*
* for i from 0 <= i < length:
*/
__pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_v_replace);
__pyx_v_replace = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L3;
}
__pyx_L3:;
773:
774: for i from 0 <= i < length:
/* "lib.pyx":774 * replace = np.nan * * for i from 0<= i<length: #<<<<<<<<<<<<<<* if arr[i] == nan_rep: * arr[i] = replace */ __pyx_t_4 = __pyx_v_length; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_4; __pyx_v_i++) {
775: if arr[i] == nan_rep:
/* "lib.pyx":775
*
* for i from 0 <= i < length:
* if arr[i] == nan_rep: # <<<<<<<<<<<<<<
* arr[i] = replace
*
*/
__pyx_t_5 = __pyx_v_i;
__pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_3);
__pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_v_nan_rep, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_1) {
776: arr[i] = replace
/* "lib.pyx":776
* for i from 0 <= i < length:
* if arr[i] == nan_rep:
* arr[i] = replace # <<<<<<<<<<<<<<
*
* return arr
*/
__pyx_t_6 = __pyx_v_i;
__pyx_t_7 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_arr.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_7);
__Pyx_INCREF(__pyx_v_replace); __Pyx_DECREF(*__pyx_t_7);
*__pyx_t_7 = __pyx_v_replace;
__Pyx_GIVEREF(*__pyx_t_7);
goto __pyx_L6;
}
__pyx_L6:;
}
777:
778: return arr
/* "lib.pyx":778 * arr[i] = replace * * return arr #<<<<<<<<<<<<<<* * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_arr)); __pyx_r = ((PyObject *)__pyx_v_arr); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.array_replace_from_nan_rep", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_replace); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_71create_hdf_rows_2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_70create_hdf_rows_2d[] = " return a list of objects ready to be converted to rec-array format "; static PyMethodDef __pyx_mdef_3lib_71create_hdf_rows_2d = {__Pyx_NAMESTR("create_hdf_rows_2d"), (PyCFunction)__pyx_pw_3lib_71create_hdf_rows_2d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_70create_hdf_rows_2d)}; static PyObject *__pyx_pw_3lib_71create_hdf_rows_2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_indexer0 = 0; PyArrayObject *__pyx_v_mask = 0; PyArrayObject *__pyx_v_searchable = 0; PyObject *__pyx_v_values = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_hdf_rows_2d (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__indexer0,&__pyx_n_s__mask,&__pyx_n_s__searchable,&__pyx_n_s__values,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer0)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_2d", 1, 4, 4, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__searchable)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_2d", 1, 4, 4, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_2d", 1, 4, 4, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_hdf_rows_2d")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_indexer0 = ((PyArrayObject *)values[0]); __pyx_v_mask = ((PyArrayObject *)values[1]); __pyx_v_searchable = ((PyArrayObject *)values[2]); __pyx_v_values = ((PyObject*)values[3]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("create_hdf_rows_2d", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.create_hdf_rows_2d", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer0), __pyx_ptype_5numpy_ndarray, 1, "indexer0", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_searchable), __pyx_ptype_5numpy_ndarray, 1, "searchable", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), (&PyList_Type), 1, "values", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_70create_hdf_rows_2d(__pyx_self, __pyx_v_indexer0, __pyx_v_mask, __pyx_v_searchable, __pyx_v_values); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
779:
780: @cython.boundscheck(False)
781: @cython.wraparound(False)
782: def create_hdf_rows_2d(ndarray indexer0,
/* "lib.pyx":782 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_2d(ndarray indexer0, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=1] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ static PyObject *__pyx_pf_3lib_70create_hdf_rows_2d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indexer0, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_searchable, PyObject *__pyx_v_values) { int __pyx_v_i; int __pyx_v_b; int __pyx_v_n_indexer0; int __pyx_v_n_blocks; int __pyx_v_tup_size; PyObject *__pyx_v_l = 0; PyObject *__pyx_v_tup = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_v = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; __Pyx_LocalBuf_ND __pyx_pybuffernd_searchable; __Pyx_Buffer __pyx_pybuffer_searchable; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_hdf_rows_2d", 0); __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; __pyx_pybuffer_searchable.pybuffer.buf = NULL; __pyx_pybuffer_searchable.refcount = 0; __pyx_pybuffernd_searchable.data = NULL; __pyx_pybuffernd_searchable.rcbuffer = &__pyx_pybuffer_searchable; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer, (PyObject*)__pyx_v_searchable, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_searchable.diminfo[0].strides = __pyx_pybuffernd_searchable.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_searchable.diminfo[0].shape = __pyx_pybuffernd_searchable.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":782 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_2d(ndarray indexer0, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=1] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ __pyx_k_tuple_165 = PyTuple_New(13); if (unlikely(!__pyx_k_tuple_165)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_165); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer0)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 0, ((PyObject *)__pyx_n_s__indexer0)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer0)); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 1, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__searchable)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 2, ((PyObject *)__pyx_n_s__searchable)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__searchable)); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 3, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 4, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__b)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 5, ((PyObject *)__pyx_n_s__b)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_indexer0)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 6, ((PyObject *)__pyx_n_s__n_indexer0)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_indexer0)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_blocks)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 7, ((PyObject *)__pyx_n_s__n_blocks)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_blocks)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup_size)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 8, ((PyObject *)__pyx_n_s__tup_size)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup_size)); __Pyx_INCREF(((PyObject *)__pyx_n_s__l)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 9, ((PyObject *)__pyx_n_s__l)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__l)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 10, ((PyObject *)__pyx_n_s__tup)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 11, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__v)); PyTuple_SET_ITEM(__pyx_k_tuple_165, 12, ((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_165)); /* "lib.pyx":782 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_2d(ndarray indexer0, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=1] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_71create_hdf_rows_2d, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create_hdf_rows_2d, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_166 = (PyObject*)__Pyx_PyCode_New(4, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__create_hdf_rows_2d, 782, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_166)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
783: ndarray[np.uint8_t, ndim=1] mask,
784: ndarray[np.uint8_t, ndim=1] searchable,
785: list values):
786: """ return a list of objects ready to be converted to rec-array format """
787:
788: cdef:
789: int i, b, n_indexer0, n_blocks, tup_size
790: list l
791: object tup, val, v
792:
793: n_indexer0 = indexer0.shape[0]
/* "lib.pyx":793 * object tup, val, v * * n_indexer0 = indexer0.shape[0] #<<<<<<<<<<<<<<* n_blocks = len(values) * tup_size = n_blocks+1 */ __pyx_v_n_indexer0 = (__pyx_v_indexer0->dimensions[0]);
794: n_blocks = len(values)
/* "lib.pyx":794 * * n_indexer0 = indexer0.shape[0] * n_blocks = len(values) #<<<<<<<<<<<<<<* tup_size = n_blocks+1 * l = [] */ if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n_blocks = __pyx_t_1;
795: tup_size = n_blocks+1
/* "lib.pyx":795 * n_indexer0 = indexer0.shape[0] * n_blocks = len(values) * tup_size = n_blocks+1 #<<<<<<<<<<<<<<* l = [] * */ __pyx_v_tup_size = (__pyx_v_n_blocks + 1);
796: l = []
/* "lib.pyx":796 * n_blocks = len(values) * tup_size = n_blocks+1 * l = [] #<<<<<<<<<<<<<<* * for i from 0<= i<n_indexer0: */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_l = __pyx_t_2; __pyx_t_2 = 0;
797:
798: for i from 0 <= i < n_indexer0:
/* "lib.pyx":798 * l = [] * * for i from 0<= i<n_indexer0: #<<<<<<<<<<<<<<* * if not mask[i]: */ __pyx_t_3 = __pyx_v_n_indexer0; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_3; __pyx_v_i++) {
799:
800: if not mask[i]:
/* "lib.pyx":800
* for i from 0 <= i < n_indexer0:
*
* if not mask[i]: # <<<<<<<<<<<<<<
*
* tup = PyTuple_New(tup_size)
*/
__pyx_t_4 = __pyx_v_i;
__pyx_t_5 = (!(*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_mask.diminfo[0].strides)));
if (__pyx_t_5) {
801:
802: tup = PyTuple_New(tup_size)
/* "lib.pyx":802
* if not mask[i]:
*
* tup = PyTuple_New(tup_size) # <<<<<<<<<<<<<<
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val)
*/
__pyx_t_2 = ((PyObject *)PyTuple_New(__pyx_v_tup_size)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_tup);
__pyx_v_tup = __pyx_t_2;
__pyx_t_2 = 0;
803: val = indexer0[i]
/* "lib.pyx":803
*
* tup = PyTuple_New(tup_size)
* val = indexer0[i] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val)
*/
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indexer0), __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
804: PyTuple_SET_ITEM(tup, 0, val)
/* "lib.pyx":804
* tup = PyTuple_New(tup_size)
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, 0, __pyx_v_val);
805: Py_INCREF(val)
/* "lib.pyx":805
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* for b from 0 <= b < n_blocks:
*/
Py_INCREF(__pyx_v_val);
806:
807: for b from 0 <= b < n_blocks:
/* "lib.pyx":807
* Py_INCREF(val)
*
* for b from 0 <= b < n_blocks: # <<<<<<<<<<<<<<
*
* v = values[b][:, i]
*/
__pyx_t_6 = __pyx_v_n_blocks;
for (__pyx_v_b = 0; __pyx_v_b < __pyx_t_6; __pyx_v_b++) {
808:
809: v = values[b][:, i]
/* "lib.pyx":809
* for b from 0 <= b < n_blocks:
*
* v = values[b][:, i] # <<<<<<<<<<<<<<
* if searchable[b]:
* v = v[0]
*/
if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_k_slice_10);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_k_slice_10);
__Pyx_GIVEREF(__pyx_k_slice_10);
PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = PyObject_GetItem(PyList_GET_ITEM(__pyx_v_values, __pyx_v_b), ((PyObject *)__pyx_t_7)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_2;
__pyx_t_2 = 0;
/* "lib.pyx":809
* for b from 0 <= b < n_blocks:
*
* v = values[b][:, i] # <<<<<<<<<<<<<<
* if searchable[b]:
* v = v[0]
*/
__pyx_k_slice_10 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_slice_10);
__Pyx_GIVEREF(__pyx_k_slice_10);
810: if searchable[b]:
/* "lib.pyx":810
*
* v = values[b][:, i]
* if searchable[b]: # <<<<<<<<<<<<<<
* v = v[0]
* PyTuple_SET_ITEM(tup, b+1, v)
*/
__pyx_t_8 = __pyx_v_b;
__pyx_t_9 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_searchable.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_searchable.diminfo[0].strides));
if (__pyx_t_9) {
811: v = v[0]
/* "lib.pyx":811
* v = values[b][:, i]
* if searchable[b]:
* v = v[0] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, b+1, v)
* Py_INCREF(v)
*/
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L8;
}
__pyx_L8:;
812: PyTuple_SET_ITEM(tup, b+1, v)
/* "lib.pyx":812
* if searchable[b]:
* v = v[0]
* PyTuple_SET_ITEM(tup, b+1, v) # <<<<<<<<<<<<<<
* Py_INCREF(v)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, (__pyx_v_b + 1), __pyx_v_v);
813: Py_INCREF(v)
/* "lib.pyx":813
* v = v[0]
* PyTuple_SET_ITEM(tup, b+1, v)
* Py_INCREF(v) # <<<<<<<<<<<<<<
*
* l.append(tup)
*/
Py_INCREF(__pyx_v_v);
}
814:
815: l.append(tup)
/* "lib.pyx":815
* Py_INCREF(v)
*
* l.append(tup) # <<<<<<<<<<<<<<
*
* return l
*/
__pyx_t_10 = PyList_Append(__pyx_v_l, __pyx_v_tup); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
}
816:
817: return l
/* "lib.pyx":817 * l.append(tup) * * return l #<<<<<<<<<<<<<<* * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_l)); __pyx_r = ((PyObject *)__pyx_v_l); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_7); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.create_hdf_rows_2d", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_l); __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_v); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_73create_hdf_rows_3d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_72create_hdf_rows_3d[] = " return a list of objects ready to be converted to rec-array format "; static PyMethodDef __pyx_mdef_3lib_73create_hdf_rows_3d = {__Pyx_NAMESTR("create_hdf_rows_3d"), (PyCFunction)__pyx_pw_3lib_73create_hdf_rows_3d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_72create_hdf_rows_3d)}; static PyObject *__pyx_pw_3lib_73create_hdf_rows_3d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_indexer0 = 0; PyArrayObject *__pyx_v_indexer1 = 0; PyArrayObject *__pyx_v_mask = 0; PyArrayObject *__pyx_v_searchable = 0; PyObject *__pyx_v_values = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_hdf_rows_3d (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__indexer0,&__pyx_n_s__indexer1,&__pyx_n_s__mask,&__pyx_n_s__searchable,&__pyx_n_s__values,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer0)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer1)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_3d", 1, 5, 5, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_3d", 1, 5, 5, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__searchable)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_3d", 1, 5, 5, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_3d", 1, 5, 5, 4); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_hdf_rows_3d")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_indexer0 = ((PyArrayObject *)values[0]); __pyx_v_indexer1 = ((PyArrayObject *)values[1]); __pyx_v_mask = ((PyArrayObject *)values[2]); __pyx_v_searchable = ((PyArrayObject *)values[3]); __pyx_v_values = ((PyObject*)values[4]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("create_hdf_rows_3d", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.create_hdf_rows_3d", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer0), __pyx_ptype_5numpy_ndarray, 1, "indexer0", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer1), __pyx_ptype_5numpy_ndarray, 1, "indexer1", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_searchable), __pyx_ptype_5numpy_ndarray, 1, "searchable", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), (&PyList_Type), 1, "values", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_72create_hdf_rows_3d(__pyx_self, __pyx_v_indexer0, __pyx_v_indexer1, __pyx_v_mask, __pyx_v_searchable, __pyx_v_values); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
818:
819: @cython.boundscheck(False)
820: @cython.wraparound(False)
821: def create_hdf_rows_3d(ndarray indexer0, ndarray indexer1,
/* "lib.pyx":821 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_3d(ndarray indexer0, ndarray indexer1, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=2] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ static PyObject *__pyx_pf_3lib_72create_hdf_rows_3d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indexer0, PyArrayObject *__pyx_v_indexer1, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_searchable, PyObject *__pyx_v_values) { int __pyx_v_i; int __pyx_v_j; int __pyx_v_b; int __pyx_v_n_indexer0; int __pyx_v_n_indexer1; int __pyx_v_n_blocks; int __pyx_v_tup_size; PyObject *__pyx_v_l = 0; PyObject *__pyx_v_tup = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_v = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; __Pyx_LocalBuf_ND __pyx_pybuffernd_searchable; __Pyx_Buffer __pyx_pybuffer_searchable; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_hdf_rows_3d", 0); __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; __pyx_pybuffer_searchable.pybuffer.buf = NULL; __pyx_pybuffer_searchable.refcount = 0; __pyx_pybuffernd_searchable.data = NULL; __pyx_pybuffernd_searchable.rcbuffer = &__pyx_pybuffer_searchable; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_mask.diminfo[1].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_mask.diminfo[1].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer, (PyObject*)__pyx_v_searchable, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_searchable.diminfo[0].strides = __pyx_pybuffernd_searchable.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_searchable.diminfo[0].shape = __pyx_pybuffernd_searchable.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":821 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_3d(ndarray indexer0, ndarray indexer1, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=2] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ __pyx_k_tuple_167 = PyTuple_New(16); if (unlikely(!__pyx_k_tuple_167)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_167); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer0)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 0, ((PyObject *)__pyx_n_s__indexer0)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer0)); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer1)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 1, ((PyObject *)__pyx_n_s__indexer1)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer1)); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 2, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__searchable)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 3, ((PyObject *)__pyx_n_s__searchable)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__searchable)); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 4, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 5, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 6, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__b)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 7, ((PyObject *)__pyx_n_s__b)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_indexer0)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 8, ((PyObject *)__pyx_n_s__n_indexer0)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_indexer0)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_indexer1)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 9, ((PyObject *)__pyx_n_s__n_indexer1)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_indexer1)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_blocks)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 10, ((PyObject *)__pyx_n_s__n_blocks)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_blocks)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup_size)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 11, ((PyObject *)__pyx_n_s__tup_size)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup_size)); __Pyx_INCREF(((PyObject *)__pyx_n_s__l)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 12, ((PyObject *)__pyx_n_s__l)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__l)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 13, ((PyObject *)__pyx_n_s__tup)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 14, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__v)); PyTuple_SET_ITEM(__pyx_k_tuple_167, 15, ((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_167)); /* "lib.pyx":821 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_3d(ndarray indexer0, ndarray indexer1, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=2] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_73create_hdf_rows_3d, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create_hdf_rows_3d, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_168 = (PyObject*)__Pyx_PyCode_New(5, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__create_hdf_rows_3d, 821, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_168)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
822: ndarray[np.uint8_t, ndim=2] mask,
823: ndarray[np.uint8_t, ndim=1] searchable,
824: list values):
825: """ return a list of objects ready to be converted to rec-array format """
826:
827: cdef:
828: int i, j, b, n_indexer0, n_indexer1, n_blocks, tup_size
829: list l
830: object tup, val, v
831:
832: n_indexer0 = indexer0.shape[0]
/* "lib.pyx":832 * object tup, val, v * * n_indexer0 = indexer0.shape[0] #<<<<<<<<<<<<<<* n_indexer1 = indexer1.shape[0] * n_blocks = len(values) */ __pyx_v_n_indexer0 = (__pyx_v_indexer0->dimensions[0]);
833: n_indexer1 = indexer1.shape[0]
/* "lib.pyx":833 * * n_indexer0 = indexer0.shape[0] * n_indexer1 = indexer1.shape[0] #<<<<<<<<<<<<<<* n_blocks = len(values) * tup_size = n_blocks+2 */ __pyx_v_n_indexer1 = (__pyx_v_indexer1->dimensions[0]);
834: n_blocks = len(values)
/* "lib.pyx":834 * n_indexer0 = indexer0.shape[0] * n_indexer1 = indexer1.shape[0] * n_blocks = len(values) #<<<<<<<<<<<<<<* tup_size = n_blocks+2 * l = [] */ if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n_blocks = __pyx_t_1;
835: tup_size = n_blocks+2
/* "lib.pyx":835 * n_indexer1 = indexer1.shape[0] * n_blocks = len(values) * tup_size = n_blocks+2 #<<<<<<<<<<<<<<* l = [] * for i from 0<= i<n_indexer0: */ __pyx_v_tup_size = (__pyx_v_n_blocks + 2);
836: l = []
/* "lib.pyx":836 * n_blocks = len(values) * tup_size = n_blocks+2 * l = [] #<<<<<<<<<<<<<<* for i from 0<= i<n_indexer0: * */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_l = __pyx_t_2; __pyx_t_2 = 0;
837: for i from 0 <= i < n_indexer0:
/* "lib.pyx":837 * tup_size = n_blocks+2 * l = [] * for i from 0<= i<n_indexer0: #<<<<<<<<<<<<<<* * for j from 0<= j<n_indexer1: */ __pyx_t_3 = __pyx_v_n_indexer0; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_3; __pyx_v_i++) {
838:
839: for j from 0 <= j < n_indexer1:
/* "lib.pyx":839
* for i from 0 <= i < n_indexer0:
*
* for j from 0 <= j < n_indexer1: # <<<<<<<<<<<<<<
*
* if not mask[i, j]:
*/
__pyx_t_4 = __pyx_v_n_indexer1;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) {
840:
841: if not mask[i, j]:
/* "lib.pyx":841
* for j from 0 <= j < n_indexer1:
*
* if not mask[i, j]: # <<<<<<<<<<<<<<
*
* tup = PyTuple_New(tup_size)
*/
__pyx_t_5 = __pyx_v_i;
__pyx_t_6 = __pyx_v_j;
__pyx_t_7 = (!(*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_mask.diminfo[0].strides, __pyx_t_6, __pyx_pybuffernd_mask.diminfo[1].strides)));
if (__pyx_t_7) {
842:
843: tup = PyTuple_New(tup_size)
/* "lib.pyx":843
* if not mask[i, j]:
*
* tup = PyTuple_New(tup_size) # <<<<<<<<<<<<<<
*
* val = indexer0[i]
*/
__pyx_t_2 = ((PyObject *)PyTuple_New(__pyx_v_tup_size)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_tup);
__pyx_v_tup = __pyx_t_2;
__pyx_t_2 = 0;
844:
845: val = indexer0[i]
/* "lib.pyx":845
* tup = PyTuple_New(tup_size)
*
* val = indexer0[i] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val)
*/
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indexer0), __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
846: PyTuple_SET_ITEM(tup, 0, val)
/* "lib.pyx":846
*
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, 0, __pyx_v_val);
847: Py_INCREF(val)
/* "lib.pyx":847
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* val = indexer1[j]
*/
Py_INCREF(__pyx_v_val);
848:
849: val = indexer1[j]
/* "lib.pyx":849
* Py_INCREF(val)
*
* val = indexer1[j] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, 1, val)
* Py_INCREF(val)
*/
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indexer1), __pyx_v_j, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
850: PyTuple_SET_ITEM(tup, 1, val)
/* "lib.pyx":850
*
* val = indexer1[j]
* PyTuple_SET_ITEM(tup, 1, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, 1, __pyx_v_val);
851: Py_INCREF(val)
/* "lib.pyx":851
* val = indexer1[j]
* PyTuple_SET_ITEM(tup, 1, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* for b from 0 <= b < n_blocks:
*/
Py_INCREF(__pyx_v_val);
852:
853: for b from 0 <= b < n_blocks:
/* "lib.pyx":853
* Py_INCREF(val)
*
* for b from 0 <= b < n_blocks: # <<<<<<<<<<<<<<
*
* v = values[b][:, i, j]
*/
__pyx_t_8 = __pyx_v_n_blocks;
for (__pyx_v_b = 0; __pyx_v_b < __pyx_t_8; __pyx_v_b++) {
854:
855: v = values[b][:, i, j]
/* "lib.pyx":855
* for b from 0 <= b < n_blocks:
*
* v = values[b][:, i, j] # <<<<<<<<<<<<<<
* if searchable[b]:
* v = v[0]
*/
if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_9 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_k_slice_11);
PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_k_slice_11);
__Pyx_GIVEREF(__pyx_k_slice_11);
PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9);
__Pyx_GIVEREF(__pyx_t_9);
__pyx_t_2 = 0;
__pyx_t_9 = 0;
__pyx_t_9 = PyObject_GetItem(PyList_GET_ITEM(__pyx_v_values, __pyx_v_b), ((PyObject *)__pyx_t_10)); if (!__pyx_t_9) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_9;
__pyx_t_9 = 0;
/* "lib.pyx":855
* for b from 0 <= b < n_blocks:
*
* v = values[b][:, i, j] # <<<<<<<<<<<<<<
* if searchable[b]:
* v = v[0]
*/
__pyx_k_slice_11 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_slice_11);
__Pyx_GIVEREF(__pyx_k_slice_11);
856: if searchable[b]:
/* "lib.pyx":856
*
* v = values[b][:, i, j]
* if searchable[b]: # <<<<<<<<<<<<<<
* v = v[0]
* PyTuple_SET_ITEM(tup, b+2, v)
*/
__pyx_t_11 = __pyx_v_b;
__pyx_t_12 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_searchable.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_searchable.diminfo[0].strides));
if (__pyx_t_12) {
857: v = v[0]
/* "lib.pyx":857
* v = values[b][:, i, j]
* if searchable[b]:
* v = v[0] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, b+2, v)
* Py_INCREF(v)
*/
__pyx_t_9 = __Pyx_GetItemInt(__pyx_v_v, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L10;
}
__pyx_L10:;
858: PyTuple_SET_ITEM(tup, b+2, v)
/* "lib.pyx":858
* if searchable[b]:
* v = v[0]
* PyTuple_SET_ITEM(tup, b+2, v) # <<<<<<<<<<<<<<
* Py_INCREF(v)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, (__pyx_v_b + 2), __pyx_v_v);
859: Py_INCREF(v)
/* "lib.pyx":859
* v = v[0]
* PyTuple_SET_ITEM(tup, b+2, v)
* Py_INCREF(v) # <<<<<<<<<<<<<<
*
* l.append(tup)
*/
Py_INCREF(__pyx_v_v);
}
860:
861: l.append(tup)
/* "lib.pyx":861
* Py_INCREF(v)
*
* l.append(tup) # <<<<<<<<<<<<<<
*
* return l
*/
__pyx_t_13 = PyList_Append(__pyx_v_l, __pyx_v_tup); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
}
}
862:
863: return l
/* "lib.pyx":863 * l.append(tup) * * return l #<<<<<<<<<<<<<<* * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_l)); __pyx_r = ((PyObject *)__pyx_v_l); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.create_hdf_rows_3d", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_l); __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_v); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_75create_hdf_rows_4d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_74create_hdf_rows_4d[] = " return a list of objects ready to be converted to rec-array format "; static PyMethodDef __pyx_mdef_3lib_75create_hdf_rows_4d = {__Pyx_NAMESTR("create_hdf_rows_4d"), (PyCFunction)__pyx_pw_3lib_75create_hdf_rows_4d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_74create_hdf_rows_4d)}; static PyObject *__pyx_pw_3lib_75create_hdf_rows_4d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_indexer0 = 0; PyArrayObject *__pyx_v_indexer1 = 0; PyArrayObject *__pyx_v_indexer2 = 0; PyArrayObject *__pyx_v_mask = 0; PyArrayObject *__pyx_v_searchable = 0; PyObject *__pyx_v_values = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_hdf_rows_4d (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__indexer0,&__pyx_n_s__indexer1,&__pyx_n_s__indexer2,&__pyx_n_s__mask,&__pyx_n_s__searchable,&__pyx_n_s__values,0}; PyObject* values[6] = {0,0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer0)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer1)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_4d", 1, 6, 6, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_4d", 1, 6, 6, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_4d", 1, 6, 6, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__searchable)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_4d", 1, 6, 6, 4); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_hdf_rows_4d", 1, 6, 6, 5); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_hdf_rows_4d")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 6) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); values[5] = PyTuple_GET_ITEM(__pyx_args, 5); } __pyx_v_indexer0 = ((PyArrayObject *)values[0]); __pyx_v_indexer1 = ((PyArrayObject *)values[1]); __pyx_v_indexer2 = ((PyArrayObject *)values[2]); __pyx_v_mask = ((PyArrayObject *)values[3]); __pyx_v_searchable = ((PyArrayObject *)values[4]); __pyx_v_values = ((PyObject*)values[5]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("create_hdf_rows_4d", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.create_hdf_rows_4d", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer0), __pyx_ptype_5numpy_ndarray, 1, "indexer0", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer1), __pyx_ptype_5numpy_ndarray, 1, "indexer1", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer2), __pyx_ptype_5numpy_ndarray, 1, "indexer2", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_searchable), __pyx_ptype_5numpy_ndarray, 1, "searchable", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), (&PyList_Type), 1, "values", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_74create_hdf_rows_4d(__pyx_self, __pyx_v_indexer0, __pyx_v_indexer1, __pyx_v_indexer2, __pyx_v_mask, __pyx_v_searchable, __pyx_v_values); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
864:
865: @cython.boundscheck(False)
866: @cython.wraparound(False)
867: def create_hdf_rows_4d(ndarray indexer0, ndarray indexer1, ndarray indexer2,
/* "lib.pyx":867 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_4d(ndarray indexer0, ndarray indexer1, ndarray indexer2, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=3] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ static PyObject *__pyx_pf_3lib_74create_hdf_rows_4d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indexer0, PyArrayObject *__pyx_v_indexer1, PyArrayObject *__pyx_v_indexer2, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_searchable, PyObject *__pyx_v_values) { int __pyx_v_i; int __pyx_v_j; int __pyx_v_k; int __pyx_v_b; int __pyx_v_n_indexer0; int __pyx_v_n_indexer1; int __pyx_v_n_indexer2; int __pyx_v_n_blocks; int __pyx_v_tup_size; PyObject *__pyx_v_l = 0; PyObject *__pyx_v_tup = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_v = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; __Pyx_LocalBuf_ND __pyx_pybuffernd_searchable; __Pyx_Buffer __pyx_pybuffer_searchable; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_hdf_rows_4d", 0); __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; __pyx_pybuffer_searchable.pybuffer.buf = NULL; __pyx_pybuffer_searchable.refcount = 0; __pyx_pybuffernd_searchable.data = NULL; __pyx_pybuffernd_searchable.rcbuffer = &__pyx_pybuffer_searchable; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_mask.diminfo[1].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_mask.diminfo[1].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_mask.diminfo[2].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_mask.diminfo[2].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[2]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer, (PyObject*)__pyx_v_searchable, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_searchable.diminfo[0].strides = __pyx_pybuffernd_searchable.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_searchable.diminfo[0].shape = __pyx_pybuffernd_searchable.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":867 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_4d(ndarray indexer0, ndarray indexer1, ndarray indexer2, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=3] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ __pyx_k_tuple_169 = PyTuple_New(19); if (unlikely(!__pyx_k_tuple_169)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_169); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer0)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 0, ((PyObject *)__pyx_n_s__indexer0)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer0)); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer1)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 1, ((PyObject *)__pyx_n_s__indexer1)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer1)); __Pyx_INCREF(((PyObject *)__pyx_n_s__indexer2)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 2, ((PyObject *)__pyx_n_s__indexer2)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__indexer2)); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 3, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__searchable)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 4, ((PyObject *)__pyx_n_s__searchable)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__searchable)); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 5, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 6, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 7, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 8, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__b)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 9, ((PyObject *)__pyx_n_s__b)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_indexer0)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 10, ((PyObject *)__pyx_n_s__n_indexer0)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_indexer0)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_indexer1)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 11, ((PyObject *)__pyx_n_s__n_indexer1)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_indexer1)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_indexer2)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 12, ((PyObject *)__pyx_n_s__n_indexer2)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_indexer2)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n_blocks)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 13, ((PyObject *)__pyx_n_s__n_blocks)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n_blocks)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup_size)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 14, ((PyObject *)__pyx_n_s__tup_size)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup_size)); __Pyx_INCREF(((PyObject *)__pyx_n_s__l)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 15, ((PyObject *)__pyx_n_s__l)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__l)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 16, ((PyObject *)__pyx_n_s__tup)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 17, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__v)); PyTuple_SET_ITEM(__pyx_k_tuple_169, 18, ((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__v)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_169)); /* "lib.pyx":867 * @cython.boundscheck(False) * @cython.wraparound(False) * def create_hdf_rows_4d(ndarray indexer0, ndarray indexer1, ndarray indexer2, #<<<<<<<<<<<<<<* ndarray[np.uint8_t, ndim=3] mask, * ndarray[np.uint8_t, ndim=1] searchable, */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_75create_hdf_rows_4d, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create_hdf_rows_4d, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_170 = (PyObject*)__Pyx_PyCode_New(6, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__create_hdf_rows_4d, 867, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_170)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
868: ndarray[np.uint8_t, ndim=3] mask,
869: ndarray[np.uint8_t, ndim=1] searchable,
870: list values):
871: """ return a list of objects ready to be converted to rec-array format """
872:
873: cdef:
874: int i, j, k, b, n_indexer0, n_indexer1, n_indexer2, n_blocks, tup_size
875: list l
876: object tup, val, v
877:
878: n_indexer0 = indexer0.shape[0]
/* "lib.pyx":878 * object tup, val, v * * n_indexer0 = indexer0.shape[0] #<<<<<<<<<<<<<<* n_indexer1 = indexer1.shape[0] * n_indexer2 = indexer2.shape[0] */ __pyx_v_n_indexer0 = (__pyx_v_indexer0->dimensions[0]);
879: n_indexer1 = indexer1.shape[0]
/* "lib.pyx":879 * * n_indexer0 = indexer0.shape[0] * n_indexer1 = indexer1.shape[0] #<<<<<<<<<<<<<<* n_indexer2 = indexer2.shape[0] * n_blocks = len(values) */ __pyx_v_n_indexer1 = (__pyx_v_indexer1->dimensions[0]);
880: n_indexer2 = indexer2.shape[0]
/* "lib.pyx":880 * n_indexer0 = indexer0.shape[0] * n_indexer1 = indexer1.shape[0] * n_indexer2 = indexer2.shape[0] #<<<<<<<<<<<<<<* n_blocks = len(values) * tup_size = n_blocks+3 */ __pyx_v_n_indexer2 = (__pyx_v_indexer2->dimensions[0]);
881: n_blocks = len(values)
/* "lib.pyx":881 * n_indexer1 = indexer1.shape[0] * n_indexer2 = indexer2.shape[0] * n_blocks = len(values) #<<<<<<<<<<<<<<* tup_size = n_blocks+3 * l = [] */ if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n_blocks = __pyx_t_1;
882: tup_size = n_blocks+3
/* "lib.pyx":882 * n_indexer2 = indexer2.shape[0] * n_blocks = len(values) * tup_size = n_blocks+3 #<<<<<<<<<<<<<<* l = [] * for i from 0<= i<n_indexer0: */ __pyx_v_tup_size = (__pyx_v_n_blocks + 3);
883: l = []
/* "lib.pyx":883 * n_blocks = len(values) * tup_size = n_blocks+3 * l = [] #<<<<<<<<<<<<<<* for i from 0<= i<n_indexer0: * */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_v_l = __pyx_t_2; __pyx_t_2 = 0;
884: for i from 0 <= i < n_indexer0:
/* "lib.pyx":884 * tup_size = n_blocks+3 * l = [] * for i from 0<= i<n_indexer0: #<<<<<<<<<<<<<<* * for j from 0<= j<n_indexer1: */ __pyx_t_3 = __pyx_v_n_indexer0; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_3; __pyx_v_i++) {
885:
886: for j from 0 <= j < n_indexer1:
/* "lib.pyx":886
* for i from 0 <= i < n_indexer0:
*
* for j from 0 <= j < n_indexer1: # <<<<<<<<<<<<<<
*
* for k from 0 <= k < n_indexer2:
*/
__pyx_t_4 = __pyx_v_n_indexer1;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_4; __pyx_v_j++) {
887:
888: for k from 0 <= k < n_indexer2:
/* "lib.pyx":888
* for j from 0 <= j < n_indexer1:
*
* for k from 0 <= k < n_indexer2: # <<<<<<<<<<<<<<
*
* if not mask[i, j, k]:
*/
__pyx_t_5 = __pyx_v_n_indexer2;
for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_5; __pyx_v_k++) {
889:
890: if not mask[i, j, k]:
/* "lib.pyx":890
* for k from 0 <= k < n_indexer2:
*
* if not mask[i, j, k]: # <<<<<<<<<<<<<<
*
* tup = PyTuple_New(tup_size)
*/
__pyx_t_6 = __pyx_v_i;
__pyx_t_7 = __pyx_v_j;
__pyx_t_8 = __pyx_v_k;
__pyx_t_9 = (!(*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_mask.diminfo[0].strides, __pyx_t_7, __pyx_pybuffernd_mask.diminfo[1].strides, __pyx_t_8, __pyx_pybuffernd_mask.diminfo[2].strides)));
if (__pyx_t_9) {
891:
892: tup = PyTuple_New(tup_size)
/* "lib.pyx":892
* if not mask[i, j, k]:
*
* tup = PyTuple_New(tup_size) # <<<<<<<<<<<<<<
*
* val = indexer0[i]
*/
__pyx_t_2 = ((PyObject *)PyTuple_New(__pyx_v_tup_size)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_tup);
__pyx_v_tup = __pyx_t_2;
__pyx_t_2 = 0;
893:
894: val = indexer0[i]
/* "lib.pyx":894
* tup = PyTuple_New(tup_size)
*
* val = indexer0[i] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val)
*/
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indexer0), __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
895: PyTuple_SET_ITEM(tup, 0, val)
/* "lib.pyx":895
*
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, 0, __pyx_v_val);
896: Py_INCREF(val)
/* "lib.pyx":896
* val = indexer0[i]
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* val = indexer1[j]
*/
Py_INCREF(__pyx_v_val);
897:
898: val = indexer1[j]
/* "lib.pyx":898
* Py_INCREF(val)
*
* val = indexer1[j] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, 1, val)
* Py_INCREF(val)
*/
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indexer1), __pyx_v_j, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
899: PyTuple_SET_ITEM(tup, 1, val)
/* "lib.pyx":899
*
* val = indexer1[j]
* PyTuple_SET_ITEM(tup, 1, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, 1, __pyx_v_val);
900: Py_INCREF(val)
/* "lib.pyx":900
* val = indexer1[j]
* PyTuple_SET_ITEM(tup, 1, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* val = indexer2[k]
*/
Py_INCREF(__pyx_v_val);
901:
902: val = indexer2[k]
/* "lib.pyx":902
* Py_INCREF(val)
*
* val = indexer2[k] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, 2, val)
* Py_INCREF(val)
*/
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indexer2), __pyx_v_k, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_2;
__pyx_t_2 = 0;
903: PyTuple_SET_ITEM(tup, 2, val)
/* "lib.pyx":903
*
* val = indexer2[k]
* PyTuple_SET_ITEM(tup, 2, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, 2, __pyx_v_val);
904: Py_INCREF(val)
/* "lib.pyx":904
* val = indexer2[k]
* PyTuple_SET_ITEM(tup, 2, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* for b from 0 <= b < n_blocks:
*/
Py_INCREF(__pyx_v_val);
905:
906: for b from 0 <= b < n_blocks:
/* "lib.pyx":906
* Py_INCREF(val)
*
* for b from 0 <= b < n_blocks: # <<<<<<<<<<<<<<
*
* v = values[b][:, i, j, k]
*/
__pyx_t_10 = __pyx_v_n_blocks;
for (__pyx_v_b = 0; __pyx_v_b < __pyx_t_10; __pyx_v_b++) {
907:
908: v = values[b][:, i, j, k]
/* "lib.pyx":908
* for b from 0 <= b < n_blocks:
*
* v = values[b][:, i, j, k] # <<<<<<<<<<<<<<
* if searchable[b]:
* v = v[0]
*/
if (unlikely(((PyObject *)__pyx_v_values) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_11 = PyInt_FromLong(__pyx_v_j); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = PyInt_FromLong(__pyx_v_k); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = PyTuple_New(4); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_13);
__Pyx_INCREF(__pyx_k_slice_12);
PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_k_slice_12);
__Pyx_GIVEREF(__pyx_k_slice_12);
PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_11);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_t_12);
__Pyx_GIVEREF(__pyx_t_12);
__pyx_t_2 = 0;
__pyx_t_11 = 0;
__pyx_t_12 = 0;
__pyx_t_12 = PyObject_GetItem(PyList_GET_ITEM(__pyx_v_values, __pyx_v_b), ((PyObject *)__pyx_t_13)); if (!__pyx_t_12) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_12;
__pyx_t_12 = 0;
/* "lib.pyx":908
* for b from 0 <= b < n_blocks:
*
* v = values[b][:, i, j, k] # <<<<<<<<<<<<<<
* if searchable[b]:
* v = v[0]
*/
__pyx_k_slice_12 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_slice_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_slice_12);
__Pyx_GIVEREF(__pyx_k_slice_12);
909: if searchable[b]:
/* "lib.pyx":909
*
* v = values[b][:, i, j, k]
* if searchable[b]: # <<<<<<<<<<<<<<
* v = v[0]
* PyTuple_SET_ITEM(tup, b+3, v)
*/
__pyx_t_14 = __pyx_v_b;
__pyx_t_15 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_searchable.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_searchable.diminfo[0].strides));
if (__pyx_t_15) {
910: v = v[0]
/* "lib.pyx":910
* v = values[b][:, i, j, k]
* if searchable[b]:
* v = v[0] # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, b+3, v)
* Py_INCREF(v)
*/
__pyx_t_12 = __Pyx_GetItemInt(__pyx_v_v, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_12) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_v_v);
__pyx_v_v = __pyx_t_12;
__pyx_t_12 = 0;
goto __pyx_L12;
}
__pyx_L12:;
911: PyTuple_SET_ITEM(tup, b+3, v)
/* "lib.pyx":911
* if searchable[b]:
* v = v[0]
* PyTuple_SET_ITEM(tup, b+3, v) # <<<<<<<<<<<<<<
* Py_INCREF(v)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, (__pyx_v_b + 3), __pyx_v_v);
912: Py_INCREF(v)
/* "lib.pyx":912
* v = v[0]
* PyTuple_SET_ITEM(tup, b+3, v)
* Py_INCREF(v) # <<<<<<<<<<<<<<
*
* l.append(tup)
*/
Py_INCREF(__pyx_v_v);
}
913:
914: l.append(tup)
/* "lib.pyx":914
* Py_INCREF(v)
*
* l.append(tup) # <<<<<<<<<<<<<<
*
* return l
*/
__pyx_t_16 = PyList_Append(__pyx_v_l, __pyx_v_tup); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L9;
}
__pyx_L9:;
}
}
}
915:
916: return l
/* "lib.pyx":916 * l.append(tup) * * return l #<<<<<<<<<<<<<<* * #------------------------------------------------------------------------------- */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_l)); __pyx_r = ((PyObject *)__pyx_v_l); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.create_hdf_rows_4d", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_searchable.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_l); __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_v); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_77arrmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_77arrmap = {__Pyx_NAMESTR("arrmap"), (PyCFunction)__pyx_pw_3lib_77arrmap, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_77arrmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_index = 0; PyObject *__pyx_v_func = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("arrmap (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__func,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("arrmap", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "arrmap")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_index = ((PyArrayObject *)values[0]); __pyx_v_func = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("arrmap", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.arrmap", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_76arrmap(__pyx_self, __pyx_v_index, __pyx_v_func); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
917:
918: #-------------------------------------------------------------------------------
919: # Groupby-related functions
920:
921: @cython.boundscheck(False)
922: def arrmap(ndarray[object] index, object func):
/* "lib.pyx":922 * * @cython.boundscheck(False) * def arrmap(ndarray[object] index, object func): #<<<<<<<<<<<<<<* cdef int length = index.shape[0] * cdef int i = 0 */ static PyObject *__pyx_pf_3lib_76arrmap(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_index, PyObject *__pyx_v_func) { int __pyx_v_length; int __pyx_v_i; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_index; __Pyx_Buffer __pyx_pybuffer_index; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("arrmap", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_index.pybuffer.buf = NULL; __pyx_pybuffer_index.refcount = 0; __pyx_pybuffernd_index.data = NULL; __pyx_pybuffernd_index.rcbuffer = &__pyx_pybuffer_index; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_index.rcbuffer->pybuffer, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_index.diminfo[0].strides = __pyx_pybuffernd_index.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_index.diminfo[0].shape = __pyx_pybuffernd_index.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":922 * * @cython.boundscheck(False) * def arrmap(ndarray[object] index, object func): #<<<<<<<<<<<<<<* cdef int length = index.shape[0] * cdef int i = 0 */ __pyx_k_tuple_171 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_171)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_171); __Pyx_INCREF(((PyObject *)__pyx_n_s__index)); PyTuple_SET_ITEM(__pyx_k_tuple_171, 0, ((PyObject *)__pyx_n_s__index)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__index)); __Pyx_INCREF(((PyObject *)__pyx_n_s__func)); PyTuple_SET_ITEM(__pyx_k_tuple_171, 1, ((PyObject *)__pyx_n_s__func)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__func)); __Pyx_INCREF(((PyObject *)__pyx_n_s__length)); PyTuple_SET_ITEM(__pyx_k_tuple_171, 2, ((PyObject *)__pyx_n_s__length)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__length)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_171, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_171, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_171)); /* "lib.pyx":922 * * @cython.boundscheck(False) * def arrmap(ndarray[object] index, object func): #<<<<<<<<<<<<<<* cdef int length = index.shape[0] * cdef int i = 0 */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_77arrmap, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__arrmap, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_172 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__arrmap, 922, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_172)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
923: cdef int length = index.shape[0]
/* "lib.pyx":923 * @cython.boundscheck(False) * def arrmap(ndarray[object] index, object func): * cdef int length = index.shape[0] #<<<<<<<<<<<<<<* cdef int i = 0 * */ __pyx_v_length = (__pyx_v_index->dimensions[0]);
924: cdef int i = 0
/* "lib.pyx":924 * def arrmap(ndarray[object] index, object func): * cdef int length = index.shape[0] * cdef int i = 0 #<<<<<<<<<<<<<<* * cdef ndarray[object] result = np.empty(length, dtype=np.object_) */ __pyx_v_i = 0;
925:
926: cdef ndarray[object] result = np.empty(length, dtype=np.object_)
/* "lib.pyx":926 * cdef int i = 0 * * cdef ndarray[object] result = np.empty(length, dtype=np.object_) #<<<<<<<<<<<<<<* * for i from 0<= i<length: */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromLong(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__object_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_result.rcbuffer->pybuffer.buf = NULL; {__pyx_filename = __pyx_f[2]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; } } __pyx_t_6 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
927:
928: for i from 0 <= i < length:
/* "lib.pyx":928 * cdef ndarray[object] result = np.empty(length, dtype=np.object_) * * for i from 0<= i<length: #<<<<<<<<<<<<<<* result[i] = func(index[i]) * */ __pyx_t_7 = __pyx_v_length; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_7; __pyx_v_i++) {
929: result[i] = func(index[i])
/* "lib.pyx":929
*
* for i from 0 <= i < length:
* result[i] = func(index[i]) # <<<<<<<<<<<<<<
*
* return result
*/
__pyx_t_8 = __pyx_v_i;
if (__pyx_t_8 < 0) __pyx_t_8 += __pyx_pybuffernd_index.diminfo[0].shape;
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_index.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_index.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_5 = 0;
__pyx_t_5 = PyObject_Call(__pyx_v_func, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__pyx_t_9 = __pyx_v_i;
if (__pyx_t_9 < 0) __pyx_t_9 += __pyx_pybuffernd_result.diminfo[0].shape;
__pyx_t_10 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_10);
__Pyx_INCREF(__pyx_t_5); __Pyx_DECREF(*__pyx_t_10);
*__pyx_t_10 = __pyx_t_5;
__Pyx_GIVEREF(*__pyx_t_10);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
930:
931: return result
/* "lib.pyx":931 * result[i] = func(index[i]) * * return result #<<<<<<<<<<<<<<* * @cython.wraparound(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_index.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.arrmap", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_index.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_79is_lexsorted(PyObject *__pyx_self, PyObject *__pyx_v_list_of_arrays); /*proto*/ static PyMethodDef __pyx_mdef_3lib_79is_lexsorted = {__Pyx_NAMESTR("is_lexsorted"), (PyCFunction)__pyx_pw_3lib_79is_lexsorted, METH_O, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_79is_lexsorted(PyObject *__pyx_self, PyObject *__pyx_v_list_of_arrays) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_lexsorted (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_list_of_arrays), (&PyList_Type), 1, "list_of_arrays", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_78is_lexsorted(__pyx_self, ((PyObject*)__pyx_v_list_of_arrays)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
932:
933: @cython.wraparound(False)
934: @cython.boundscheck(False)
935: def is_lexsorted(list list_of_arrays):
/* "lib.pyx":935 * @cython.wraparound(False) * @cython.boundscheck(False) * def is_lexsorted(list list_of_arrays): #<<<<<<<<<<<<<<* cdef: * int i */ static PyObject *__pyx_pf_3lib_78is_lexsorted(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_list_of_arrays) { int __pyx_v_i; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_nlevels; __pyx_t_5numpy_int64_t __pyx_v_k; __pyx_t_5numpy_int64_t __pyx_v_cur; __pyx_t_5numpy_int64_t __pyx_v_pre; PyArrayObject *__pyx_v_arr = 0; __pyx_t_5numpy_int64_t **__pyx_v_vecs; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("is_lexsorted", 0); /* "lib.pyx":935 * @cython.wraparound(False) * @cython.boundscheck(False) * def is_lexsorted(list list_of_arrays): #<<<<<<<<<<<<<<* cdef: * int i */ __pyx_k_tuple_173 = PyTuple_New(9); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_173); __Pyx_INCREF(((PyObject *)__pyx_n_s__list_of_arrays)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 0, ((PyObject *)__pyx_n_s__list_of_arrays)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__list_of_arrays)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 1, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 2, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__nlevels)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 3, ((PyObject *)__pyx_n_s__nlevels)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__nlevels)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 4, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__cur)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 5, ((PyObject *)__pyx_n_s__cur)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cur)); __Pyx_INCREF(((PyObject *)__pyx_n_s__pre)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 6, ((PyObject *)__pyx_n_s__pre)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pre)); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 7, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_INCREF(((PyObject *)__pyx_n_s__vecs)); PyTuple_SET_ITEM(__pyx_k_tuple_173, 8, ((PyObject *)__pyx_n_s__vecs)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vecs)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_173)); /* "lib.pyx":935 * @cython.wraparound(False) * @cython.boundscheck(False) * def is_lexsorted(list list_of_arrays): #<<<<<<<<<<<<<<* cdef: * int i */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_79is_lexsorted, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_lexsorted, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_174 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__is_lexsorted, 935, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_174)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
936: cdef:
937: int i
938: Py_ssize_t n, nlevels
939: int64_t k, cur, pre
940: ndarray arr
941:
942: nlevels = len(list_of_arrays)
/* "lib.pyx":942 * ndarray arr * * nlevels = len(list_of_arrays) #<<<<<<<<<<<<<<* n = len(list_of_arrays[0]) * */ if (unlikely(((PyObject *)__pyx_v_list_of_arrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_list_of_arrays)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_nlevels = __pyx_t_1;
943: n = len(list_of_arrays[0])
/* "lib.pyx":943 * * nlevels = len(list_of_arrays) * n = len(list_of_arrays[0]) #<<<<<<<<<<<<<<* * cdef int64_t **vecs =<int64_t**> malloc(nlevels * sizeof(int64_t*)) */ if (unlikely(((PyObject *)__pyx_v_list_of_arrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_2 = PyList_GET_ITEM(__pyx_v_list_of_arrays, 0); __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_n = __pyx_t_1;
944:
945: cdef int64_t **vecs = <int64_t**> malloc(nlevels * sizeof(int64_t*))
/* "lib.pyx":945 * n = len(list_of_arrays[0]) * * cdef int64_t **vecs =<int64_t**> malloc(nlevels * sizeof(int64_t*)) #<<<<<<<<<<<<<<* for i from 0<= i<nlevels: * # vecs[i] =<int64_t *> (<ndarray> list_of_arrays[i]).data */ __pyx_v_vecs = ((__pyx_t_5numpy_int64_t **)malloc((__pyx_v_nlevels * (sizeof(__pyx_t_5numpy_int64_t *)))));
946: for i from 0 <= i < nlevels:
/* "lib.pyx":946 * * cdef int64_t **vecs =<int64_t**> malloc(nlevels * sizeof(int64_t*)) * for i from 0<= i<nlevels: #<<<<<<<<<<<<<<* # vecs[i] =<int64_t *> (<ndarray> list_of_arrays[i]).data * */ __pyx_t_1 = __pyx_v_nlevels; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
947: # vecs[i] = <int64_t *> (<ndarray> list_of_arrays[i]).data
948:
949: arr = list_of_arrays[i]
/* "lib.pyx":949
* # vecs[i] = <int64_t *> (<ndarray> list_of_arrays[i]).data
*
* arr = list_of_arrays[i] # <<<<<<<<<<<<<<
* vecs[i] = <int64_t *> arr.data
* # assume uniqueness??
*/
if (unlikely(((PyObject *)__pyx_v_list_of_arrays) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
if (!(likely(((PyList_GET_ITEM(__pyx_v_list_of_arrays, __pyx_v_i)) == Py_None) || likely(__Pyx_TypeTest(PyList_GET_ITEM(__pyx_v_list_of_arrays, __pyx_v_i), __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = PyList_GET_ITEM(__pyx_v_list_of_arrays, __pyx_v_i);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF(((PyObject *)__pyx_v_arr));
__pyx_v_arr = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
950: vecs[i] = <int64_t *> arr.data
/* "lib.pyx":950
*
* arr = list_of_arrays[i]
* vecs[i] = <int64_t *> arr.data # <<<<<<<<<<<<<<
* # assume uniqueness??
*
*/
(__pyx_v_vecs[__pyx_v_i]) = ((__pyx_t_5numpy_int64_t *)__pyx_v_arr->data);
}
951: # assume uniqueness??
952:
953: for i from 1 <= i < n:
/* "lib.pyx":953 * # assume uniqueness?? * * for i from 1<= i<n: #<<<<<<<<<<<<<<* for k from 0<= k<nlevels: * cur = vecs[k][i] */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 1; __pyx_v_i<__pyx_t_1; __pyx_v_i++) {
954: for k from 0 <= k < nlevels:
/* "lib.pyx":954
*
* for i from 1 <= i < n:
* for k from 0 <= k < nlevels: # <<<<<<<<<<<<<<
* cur = vecs[k][i]
* pre = vecs[k][i-1]
*/
__pyx_t_3 = __pyx_v_nlevels;
for (__pyx_v_k = 0; __pyx_v_k < __pyx_t_3; __pyx_v_k++) {
955: cur = vecs[k][i]
/* "lib.pyx":955
* for i from 1 <= i < n:
* for k from 0 <= k < nlevels:
* cur = vecs[k][i] # <<<<<<<<<<<<<<
* pre = vecs[k][i-1]
* if cur == pre:
*/
__pyx_v_cur = ((__pyx_v_vecs[__pyx_v_k])[__pyx_v_i]);
956: pre = vecs[k][i-1]
/* "lib.pyx":956
* for k from 0 <= k < nlevels:
* cur = vecs[k][i]
* pre = vecs[k][i-1] # <<<<<<<<<<<<<<
* if cur == pre:
* continue
*/
__pyx_v_pre = ((__pyx_v_vecs[__pyx_v_k])[(__pyx_v_i - 1)]);
957: if cur == pre:
/* "lib.pyx":957
* cur = vecs[k][i]
* pre = vecs[k][i-1]
* if cur == pre: # <<<<<<<<<<<<<<
* continue
* elif cur > pre:
*/
__pyx_t_4 = (__pyx_v_cur == __pyx_v_pre);
if (__pyx_t_4) {
958: continue
/* "lib.pyx":958
* pre = vecs[k][i-1]
* if cur == pre:
* continue # <<<<<<<<<<<<<<
* elif cur > pre:
* break
*/
goto __pyx_L7_continue;
goto __pyx_L9;
}
959: elif cur > pre:
/* "lib.pyx":959
* if cur == pre:
* continue
* elif cur > pre: # <<<<<<<<<<<<<<
* break
* else:
*/
__pyx_t_4 = (__pyx_v_cur > __pyx_v_pre);
if (__pyx_t_4) {
960: break
/* "lib.pyx":960
* continue
* elif cur > pre:
* break # <<<<<<<<<<<<<<
* else:
* return False
*/
goto __pyx_L8_break;
goto __pyx_L9;
}
/*else*/ {
961: else:
962: return False
/* "lib.pyx":962
* break
* else:
* return False # <<<<<<<<<<<<<<
* free(vecs)
* return True
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
}
__pyx_L9:;
__pyx_L7_continue:;
}
__pyx_L8_break:;
}
963: free(vecs)
/* "lib.pyx":963 * else: * return False * free(vecs) #<<<<<<<<<<<<<<* return True * */ free(__pyx_v_vecs);
964: return True
/* "lib.pyx":964 * return False * free(vecs) * return True #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("lib.is_lexsorted", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_arr); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_81generate_bins_dt64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_80generate_bins_dt64[] = "\n Int64 (datetime64) version of generic python version in groupby.py\n "; static PyMethodDef __pyx_mdef_3lib_81generate_bins_dt64 = {__Pyx_NAMESTR("generate_bins_dt64"), (PyCFunction)__pyx_pw_3lib_81generate_bins_dt64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_80generate_bins_dt64)}; static PyObject *__pyx_pw_3lib_81generate_bins_dt64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; PyArrayObject *__pyx_v_binner = 0; PyObject *__pyx_v_closed = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("generate_bins_dt64 (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__binner,&__pyx_n_s__closed,0}; PyObject* values[3] = {0,0,0}; values[2] = ((PyObject *)__pyx_n_s__left); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__binner)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("generate_bins_dt64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__closed); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "generate_bins_dt64")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_binner = ((PyArrayObject *)values[1]); __pyx_v_closed = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("generate_bins_dt64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.generate_bins_dt64", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_binner), __pyx_ptype_5numpy_ndarray, 1, "binner", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_80generate_bins_dt64(__pyx_self, __pyx_v_values, __pyx_v_binner, __pyx_v_closed); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
965:
966:
967:
968: # TODO: could do even better if we know something about the data. eg, index has
969: # 1-min data, binner has 5-min data, then bins are just strides in index. This
970: # is a general, O(max(len(values), len(binner))) method.
971:
972: @cython.boundscheck(False)
973: @cython.wraparound(False)
974: def generate_bins_dt64(ndarray[int64_t] values, ndarray[int64_t] binner,
/* "lib.pyx":974 * @cython.boundscheck(False) * @cython.wraparound(False) * def generate_bins_dt64(ndarray[int64_t] values, ndarray[int64_t] binner, #<<<<<<<<<<<<<<* object closed='left'): * """ */ static PyObject *__pyx_pf_3lib_80generate_bins_dt64(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_binner, PyObject *__pyx_v_closed) { Py_ssize_t __pyx_v_lenidx; Py_ssize_t __pyx_v_lenbin; Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_bc; PyArrayObject *__pyx_v_bins = 0; CYTHON_UNUSED __pyx_t_5numpy_int64_t __pyx_v_l_bin; __pyx_t_5numpy_int64_t __pyx_v_r_bin; int __pyx_v_right_closed; __Pyx_LocalBuf_ND __pyx_pybuffernd_binner; __Pyx_Buffer __pyx_pybuffer_binner; __Pyx_LocalBuf_ND __pyx_pybuffernd_bins; __Pyx_Buffer __pyx_pybuffer_bins; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("generate_bins_dt64", 0); __pyx_pybuffer_bins.pybuffer.buf = NULL; __pyx_pybuffer_bins.refcount = 0; __pyx_pybuffernd_bins.data = NULL; __pyx_pybuffernd_bins.rcbuffer = &__pyx_pybuffer_bins; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; __pyx_pybuffer_binner.pybuffer.buf = NULL; __pyx_pybuffer_binner.refcount = 0; __pyx_pybuffernd_binner.data = NULL; __pyx_pybuffernd_binner.rcbuffer = &__pyx_pybuffer_binner; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_binner.rcbuffer->pybuffer, (PyObject*)__pyx_v_binner, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_binner.diminfo[0].strides = __pyx_pybuffernd_binner.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_binner.diminfo[0].shape = __pyx_pybuffernd_binner.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":974 * @cython.boundscheck(False) * @cython.wraparound(False) * def generate_bins_dt64(ndarray[int64_t] values, ndarray[int64_t] binner, #<<<<<<<<<<<<<<* object closed='left'): * """ */ __pyx_k_tuple_175 = PyTuple_New(13); if (unlikely(!__pyx_k_tuple_175)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_175); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__binner)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 1, ((PyObject *)__pyx_n_s__binner)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__binner)); __Pyx_INCREF(((PyObject *)__pyx_n_s__closed)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 2, ((PyObject *)__pyx_n_s__closed)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__closed)); __Pyx_INCREF(((PyObject *)__pyx_n_s__lenidx)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 3, ((PyObject *)__pyx_n_s__lenidx)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lenidx)); __Pyx_INCREF(((PyObject *)__pyx_n_s__lenbin)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 4, ((PyObject *)__pyx_n_s__lenbin)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lenbin)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 5, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 6, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__bc)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 7, ((PyObject *)__pyx_n_s__bc)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bc)); __Pyx_INCREF(((PyObject *)__pyx_n_s__vc)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 8, ((PyObject *)__pyx_n_s__vc)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vc)); __Pyx_INCREF(((PyObject *)__pyx_n_s__bins)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 9, ((PyObject *)__pyx_n_s__bins)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bins)); __Pyx_INCREF(((PyObject *)__pyx_n_s__l_bin)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 10, ((PyObject *)__pyx_n_s__l_bin)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__l_bin)); __Pyx_INCREF(((PyObject *)__pyx_n_s__r_bin)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 11, ((PyObject *)__pyx_n_s__r_bin)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__r_bin)); __Pyx_INCREF(((PyObject *)__pyx_n_s__right_closed)); PyTuple_SET_ITEM(__pyx_k_tuple_175, 12, ((PyObject *)__pyx_n_s__right_closed)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__right_closed)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_175)); /* "lib.pyx":974 * @cython.boundscheck(False) * @cython.wraparound(False) * def generate_bins_dt64(ndarray[int64_t] values, ndarray[int64_t] binner, #<<<<<<<<<<<<<<* object closed='left'): * """ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_81generate_bins_dt64, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__generate_bins_dt64, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_176 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__generate_bins_dt64, 974, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_176)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
975: object closed='left'):
976: """
977: Int64 (datetime64) version of generic python version in groupby.py
978: """
979: cdef:
980: Py_ssize_t lenidx, lenbin, i, j, bc, vc
981: ndarray[int64_t] bins
982: int64_t l_bin, r_bin
983: bint right_closed = closed == 'right'
/* "lib.pyx":983 * ndarray[int64_t] bins * int64_t l_bin, r_bin * bint right_closed = closed == 'right' #<<<<<<<<<<<<<<* * lenidx = len(values) */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_closed, ((PyObject *)__pyx_n_s__right), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_right_closed = __pyx_t_2;
984:
985: lenidx = len(values)
/* "lib.pyx":985 * bint right_closed = closed == 'right' * * lenidx = len(values) #<<<<<<<<<<<<<<* lenbin = len(binner) * */ __pyx_t_3 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_lenidx = __pyx_t_3;
986: lenbin = len(binner)
/* "lib.pyx":986 * * lenidx = len(values) * lenbin = len(binner) #<<<<<<<<<<<<<<* * if lenidx<= 0 or lenbin<= 0: */ __pyx_t_3 = PyObject_Length(((PyObject *)__pyx_v_binner)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_lenbin = __pyx_t_3;
987:
988: if lenidx <= 0 or lenbin <= 0:
/* "lib.pyx":988 * lenbin = len(binner) * * if lenidx<= 0 or lenbin<= 0: #<<<<<<<<<<<<<<* raise ValueError("Invalid length for values or for binner") * */ __pyx_t_2 = (__pyx_v_lenidx<= 0); if (!__pyx_t_2) { __pyx_t_4 = (__pyx_v_lenbin<= 0); __pyx_t_5 = __pyx_t_4; } else { __pyx_t_5 = __pyx_t_2; } if (__pyx_t_5) {
989: raise ValueError("Invalid length for values or for binner")
/* "lib.pyx":989
*
* if lenidx <= 0 or lenbin <= 0:
* raise ValueError("Invalid length for values or for binner") # <<<<<<<<<<<<<<
*
* # check binner fits data
*/
__pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
/* "lib.pyx":989
*
* if lenidx <= 0 or lenbin <= 0:
* raise ValueError("Invalid length for values or for binner") # <<<<<<<<<<<<<<
*
* # check binner fits data
*/
__pyx_k_tuple_14 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_14);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_13));
PyTuple_SET_ITEM(__pyx_k_tuple_14, 0, ((PyObject *)__pyx_kp_s_13));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_13));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
990:
991: # check binner fits data
992: if values[0] < binner[0]:
/* "lib.pyx":992 * * # check binner fits data * if values[0]<binner[0]: #<<<<<<<<<<<<<<* raise ValueError("Values falls before first bin") * */ __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_values.diminfo[0].strides))<(*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_binner.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_binner.diminfo[0].strides))); if (__pyx_t_5) {
993: raise ValueError("Values falls before first bin")
/* "lib.pyx":993
* # check binner fits data
* if values[0] < binner[0]:
* raise ValueError("Values falls before first bin") # <<<<<<<<<<<<<<
*
* if values[lenidx-1] > binner[lenbin-1]:
*/
__pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
/* "lib.pyx":993
* # check binner fits data
* if values[0] < binner[0]:
* raise ValueError("Values falls before first bin") # <<<<<<<<<<<<<<
*
* if values[lenidx-1] > binner[lenbin-1]:
*/
__pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_16);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_15));
PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_kp_s_15));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_15));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
994:
995: if values[lenidx-1] > binner[lenbin-1]:
/* "lib.pyx":995
* raise ValueError("Values falls before first bin")
*
* if values[lenidx-1] > binner[lenbin-1]: # <<<<<<<<<<<<<<
* raise ValueError("Values falls after last bin")
*
*/
__pyx_t_3 = (__pyx_v_lenidx - 1);
__pyx_t_8 = (__pyx_v_lenbin - 1);
__pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_values.diminfo[0].strides)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_binner.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_binner.diminfo[0].strides)));
if (__pyx_t_5) {
996: raise ValueError("Values falls after last bin")
/* "lib.pyx":996
*
* if values[lenidx-1] > binner[lenbin-1]:
* raise ValueError("Values falls after last bin") # <<<<<<<<<<<<<<
*
* bins = np.empty(lenbin - 1, dtype=np.int64)
*/
__pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_18), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
/* "lib.pyx":996
*
* if values[lenidx-1] > binner[lenbin-1]:
* raise ValueError("Values falls after last bin") # <<<<<<<<<<<<<<
*
* bins = np.empty(lenbin - 1, dtype=np.int64)
*/
__pyx_k_tuple_18 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_18);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_17));
PyTuple_SET_ITEM(__pyx_k_tuple_18, 0, ((PyObject *)__pyx_kp_s_17));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_17));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));
997:
998: bins = np.empty(lenbin - 1, dtype=np.int64)
/* "lib.pyx":998
* raise ValueError("Values falls after last bin")
*
* bins = np.empty(lenbin - 1, dtype=np.int64) # <<<<<<<<<<<<<<
*
* j = 0 # index into values
*/
__pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyInt_FromSsize_t((__pyx_v_lenbin - 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = PyObject_Call(__pyx_t_9, ((PyObject *)__pyx_t_10), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_13 = ((PyArrayObject *)__pyx_t_12);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_bins.rcbuffer->pybuffer);
__pyx_t_14 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_bins.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
if (unlikely(__pyx_t_14 < 0)) {
PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_bins.rcbuffer->pybuffer, (PyObject*)__pyx_v_bins, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
}
}
__pyx_pybuffernd_bins.diminfo[0].strides = __pyx_pybuffernd_bins.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_bins.diminfo[0].shape = __pyx_pybuffernd_bins.rcbuffer->pybuffer.shape[0];
if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_13 = 0;
__pyx_v_bins = ((PyArrayObject *)__pyx_t_12);
__pyx_t_12 = 0;
999:
1000: j = 0 # index into values
/* "lib.pyx":1000 * bins = np.empty(lenbin - 1, dtype=np.int64) * * j = 0 # index into values #<<<<<<<<<<<<<<* bc = 0 # bin count * */ __pyx_v_j = 0;
1001: bc = 0 # bin count
/* "lib.pyx":1001 * * j = 0 # index into values * bc = 0 # bin count #<<<<<<<<<<<<<<* * # linear scan */ __pyx_v_bc = 0;
1002:
1003: # linear scan
1004: for i in range(0, lenbin - 1):
/* "lib.pyx":1004 * * # linear scan * for i in range(0, lenbin - 1): #<<<<<<<<<<<<<<* l_bin = binner[i] * r_bin = binner[i+1] */ __pyx_t_18 = (__pyx_v_lenbin - 1); for (__pyx_t_19 = 0; __pyx_t_19<__pyx_t_18; __pyx_t_19+=1) { __pyx_v_i = __pyx_t_19;
1005: l_bin = binner[i]
/* "lib.pyx":1005
* # linear scan
* for i in range(0, lenbin - 1):
* l_bin = binner[i] # <<<<<<<<<<<<<<
* r_bin = binner[i+1]
*
*/
__pyx_t_20 = __pyx_v_i;
__pyx_v_l_bin = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_binner.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_binner.diminfo[0].strides));
1006: r_bin = binner[i+1]
/* "lib.pyx":1006
* for i in range(0, lenbin - 1):
* l_bin = binner[i]
* r_bin = binner[i+1] # <<<<<<<<<<<<<<
*
* # count values in current bin, advance to next bin
*/
__pyx_t_21 = (__pyx_v_i + 1);
__pyx_v_r_bin = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_binner.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_binner.diminfo[0].strides));
1007:
1008: # count values in current bin, advance to next bin
1009: while j < lenidx and (values[j] < r_bin or
/* "lib.pyx":1009
*
* # count values in current bin, advance to next bin
* while j < lenidx and (values[j] < r_bin or # <<<<<<<<<<<<<<
* (right_closed and values[j] == r_bin)):
* j += 1
*/
while (1) {
__pyx_t_5 = (__pyx_v_j < __pyx_v_lenidx);
if (__pyx_t_5) {
__pyx_t_22 = __pyx_v_j;
__pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_22, __pyx_pybuffernd_values.diminfo[0].strides)) < __pyx_v_r_bin);
if (!__pyx_t_2) {
1010: (right_closed and values[j] == r_bin)):
/* "lib.pyx":1010
* # count values in current bin, advance to next bin
* while j < lenidx and (values[j] < r_bin or
* (right_closed and values[j] == r_bin)): # <<<<<<<<<<<<<<
* j += 1
*
*/
if (__pyx_v_right_closed) {
__pyx_t_23 = __pyx_v_j;
__pyx_t_4 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_23, __pyx_pybuffernd_values.diminfo[0].strides)) == __pyx_v_r_bin);
__pyx_t_24 = __pyx_t_4;
} else {
__pyx_t_24 = __pyx_v_right_closed;
}
__pyx_t_4 = __pyx_t_24;
} else {
__pyx_t_4 = __pyx_t_2;
}
__pyx_t_2 = __pyx_t_4;
} else {
__pyx_t_2 = __pyx_t_5;
}
if (!__pyx_t_2) break;
1011: j += 1
/* "lib.pyx":1011
* while j < lenidx and (values[j] < r_bin or
* (right_closed and values[j] == r_bin)):
* j += 1 # <<<<<<<<<<<<<<
*
* bins[bc] = j
*/
__pyx_v_j = (__pyx_v_j + 1);
}
1012:
1013: bins[bc] = j
/* "lib.pyx":1013
* j += 1
*
* bins[bc] = j # <<<<<<<<<<<<<<
* bc += 1
*
*/
__pyx_t_25 = __pyx_v_bc;
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_bins.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_bins.diminfo[0].strides) = __pyx_v_j;
1014: bc += 1
/* "lib.pyx":1014
*
* bins[bc] = j
* bc += 1 # <<<<<<<<<<<<<<
*
* return bins
*/
__pyx_v_bc = (__pyx_v_bc + 1);
}
1015:
1016: return bins
/* "lib.pyx":1016 * bc += 1 * * return bins #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_bins)); __pyx_r = ((PyObject *)__pyx_v_bins); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_binner.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_bins.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.generate_bins_dt64", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_binner.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_bins.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_bins); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_83row_bool_subset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_83row_bool_subset = {__Pyx_NAMESTR("row_bool_subset"), (PyCFunction)__pyx_pw_3lib_83row_bool_subset, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_83row_bool_subset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; PyArrayObject *__pyx_v_mask = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("row_bool_subset (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("row_bool_subset", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "row_bool_subset")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_mask = ((PyArrayObject *)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("row_bool_subset", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.row_bool_subset", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_82row_bool_subset(__pyx_self, __pyx_v_values, __pyx_v_mask); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1017:
1018:
1019:
1020:
1021: @cython.boundscheck(False)
1022: @cython.wraparound(False)
1023: def row_bool_subset(ndarray[float64_t, ndim=2] values,
/* "lib.pyx":1023 * @cython.boundscheck(False) * @cython.wraparound(False) * def row_bool_subset(ndarray[float64_t, ndim=2] values, #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] mask): * cdef: */ static PyObject *__pyx_pf_3lib_82row_bool_subset(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_mask) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_pos; PyArrayObject *__pyx_v_out = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; __Pyx_LocalBuf_ND __pyx_pybuffernd_out; __Pyx_Buffer __pyx_pybuffer_out; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("row_bool_subset", 0); __pyx_pybuffer_out.pybuffer.buf = NULL; __pyx_pybuffer_out.refcount = 0; __pyx_pybuffernd_out.data = NULL; __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_values.diminfo[1].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_values.diminfo[1].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1023 * @cython.boundscheck(False) * @cython.wraparound(False) * def row_bool_subset(ndarray[float64_t, ndim=2] values, #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] mask): * cdef: */ __pyx_k_tuple_177 = PyTuple_New(8); if (unlikely(!__pyx_k_tuple_177)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_177); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 1, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 3, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 5, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__pos)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 6, ((PyObject *)__pyx_n_s__pos)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos)); __Pyx_INCREF(((PyObject *)__pyx_n_s__out)); PyTuple_SET_ITEM(__pyx_k_tuple_177, 7, ((PyObject *)__pyx_n_s__out)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__out)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_177)); /* "lib.pyx":1023 * @cython.boundscheck(False) * @cython.wraparound(False) * def row_bool_subset(ndarray[float64_t, ndim=2] values, #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] mask): * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_83row_bool_subset, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__row_bool_subset, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_178 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__row_bool_subset, 1023, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_178)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1024: ndarray[uint8_t, cast=True] mask):
1025: cdef:
1026: Py_ssize_t i, j, n, k, pos = 0
/* "lib.pyx":1026 * ndarray[uint8_t, cast=True] mask): * cdef: * Py_ssize_t i, j, n, k, pos = 0 #<<<<<<<<<<<<<<* ndarray[float64_t, ndim=2] out * */ __pyx_v_pos = 0;
1027: ndarray[float64_t, ndim=2] out
1028:
1029: n, k = (<object> values).shape
/* "lib.pyx":1029 * ndarray[float64_t, ndim=2] out * * n, k = (<object> values).shape #<<<<<<<<<<<<<<* assert(n == len(mask)) * */ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_n = __pyx_t_6; __pyx_v_k = __pyx_t_7;
1030: assert(n == len(mask))
/* "lib.pyx":1030 * * n, k = (<object> values).shape * assert(n == len(mask)) #<<<<<<<<<<<<<<* * out = np.empty((mask.sum(), k), dtype=np.float64) */ #ifndef CYTHON_WITHOUT_ASSERTIONS __pyx_t_7 = PyObject_Length(((PyObject *)__pyx_v_mask)); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!(__pyx_v_n == __pyx_t_7))) { PyErr_SetNone(PyExc_AssertionError); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif
1031:
1032: out = np.empty((mask.sum(), k), dtype=np.float64)
/* "lib.pyx":1032 * assert(n == len(mask)) * * out = np.empty((mask.sum(), k), dtype=np.float64) #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_mask), __pyx_n_s__sum); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__float64); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_t_8)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_9 = ((PyArrayObject *)__pyx_t_8); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); if (unlikely(__pyx_t_10<0)) { PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13); } } __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]; __pyx_pybuffernd_out.diminfo[1].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out.diminfo[1].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_10<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_9 = 0; __pyx_v_out = ((PyArrayObject *)__pyx_t_8); __pyx_t_8 = 0;
1033:
1034: for i in range(n):
/* "lib.pyx":1034 * out = np.empty((mask.sum(), k), dtype=np.float64) * * for i in range(n): #<<<<<<<<<<<<<<* if mask[i]: * for j in range(k): */ __pyx_t_7 = __pyx_v_n; for (__pyx_t_6 = 0; __pyx_t_6<__pyx_t_7; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6;
1035: if mask[i]:
/* "lib.pyx":1035
*
* for i in range(n):
* if mask[i]: # <<<<<<<<<<<<<<
* for j in range(k):
* out[pos, j] = values[i, j]
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_15 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_mask.diminfo[0].strides));
if (__pyx_t_15) {
1036: for j in range(k):
/* "lib.pyx":1036
* for i in range(n):
* if mask[i]:
* for j in range(k): # <<<<<<<<<<<<<<
* out[pos, j] = values[i, j]
* pos += 1
*/
__pyx_t_16 = __pyx_v_k;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_j = __pyx_t_17;
1037: out[pos, j] = values[i, j]
/* "lib.pyx":1037
* if mask[i]:
* for j in range(k):
* out[pos, j] = values[i, j] # <<<<<<<<<<<<<<
* pos += 1
*
*/
__pyx_t_18 = __pyx_v_i;
__pyx_t_19 = __pyx_v_j;
__pyx_t_20 = __pyx_v_pos;
__pyx_t_21 = __pyx_v_j;
*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_21, __pyx_pybuffernd_out.diminfo[1].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_values.diminfo[0].strides, __pyx_t_19, __pyx_pybuffernd_values.diminfo[1].strides));
}
1038: pos += 1
/* "lib.pyx":1038
* for j in range(k):
* out[pos, j] = values[i, j]
* pos += 1 # <<<<<<<<<<<<<<
*
* return out
*/
__pyx_v_pos = (__pyx_v_pos + 1);
goto __pyx_L7;
}
__pyx_L7:;
}
1039:
1040: return out
/* "lib.pyx":1040 * pos += 1 * * return out #<<<<<<<<<<<<<<* * @cython.boundscheck(False) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_out)); __pyx_r = ((PyObject *)__pyx_v_out); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_8); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.row_bool_subset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_out); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_85row_bool_subset_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_85row_bool_subset_object = {__Pyx_NAMESTR("row_bool_subset_object"), (PyCFunction)__pyx_pw_3lib_85row_bool_subset_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_85row_bool_subset_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; PyArrayObject *__pyx_v_mask = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("row_bool_subset_object (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("row_bool_subset_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "row_bool_subset_object")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_mask = ((PyArrayObject *)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("row_bool_subset_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.row_bool_subset_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_84row_bool_subset_object(__pyx_self, __pyx_v_values, __pyx_v_mask); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1041:
1042: @cython.boundscheck(False)
1043: @cython.wraparound(False)
1044: def row_bool_subset_object(ndarray[object, ndim=2] values,
/* "lib.pyx":1044 * @cython.boundscheck(False) * @cython.wraparound(False) * def row_bool_subset_object(ndarray[object, ndim=2] values, #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] mask): * cdef: */ static PyObject *__pyx_pf_3lib_84row_bool_subset_object(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_mask) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_pos; PyArrayObject *__pyx_v_out = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; __Pyx_LocalBuf_ND __pyx_pybuffernd_out; __Pyx_Buffer __pyx_pybuffer_out; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("row_bool_subset_object", 0); __pyx_pybuffer_out.pybuffer.buf = NULL; __pyx_pybuffer_out.refcount = 0; __pyx_pybuffernd_out.data = NULL; __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_values.diminfo[1].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_values.diminfo[1].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1044 * @cython.boundscheck(False) * @cython.wraparound(False) * def row_bool_subset_object(ndarray[object, ndim=2] values, #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] mask): * cdef: */ __pyx_k_tuple_179 = PyTuple_New(8); if (unlikely(!__pyx_k_tuple_179)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_179); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 1, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 3, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 5, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__pos)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 6, ((PyObject *)__pyx_n_s__pos)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__pos)); __Pyx_INCREF(((PyObject *)__pyx_n_s__out)); PyTuple_SET_ITEM(__pyx_k_tuple_179, 7, ((PyObject *)__pyx_n_s__out)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__out)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_179)); /* "lib.pyx":1044 * @cython.boundscheck(False) * @cython.wraparound(False) * def row_bool_subset_object(ndarray[object, ndim=2] values, #<<<<<<<<<<<<<<* ndarray[uint8_t, cast=True] mask): * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_85row_bool_subset_object, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s_181, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_180 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s_181, 1044, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_180)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1045: ndarray[uint8_t, cast=True] mask):
1046: cdef:
1047: Py_ssize_t i, j, n, k, pos = 0
/* "lib.pyx":1047 * ndarray[uint8_t, cast=True] mask): * cdef: * Py_ssize_t i, j, n, k, pos = 0 #<<<<<<<<<<<<<<* ndarray[object, ndim=2] out * */ __pyx_v_pos = 0;
1048: ndarray[object, ndim=2] out
1049:
1050: n, k = (<object> values).shape
/* "lib.pyx":1050 * ndarray[object, ndim=2] out * * n, k = (<object> values).shape #<<<<<<<<<<<<<<* assert(n == len(mask)) * */ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_n = __pyx_t_6; __pyx_v_k = __pyx_t_7;
1051: assert(n == len(mask))
/* "lib.pyx":1051 * * n, k = (<object> values).shape * assert(n == len(mask)) #<<<<<<<<<<<<<<* * out = np.empty((mask.sum(), k), dtype=object) */ #ifndef CYTHON_WITHOUT_ASSERTIONS __pyx_t_7 = PyObject_Length(((PyObject *)__pyx_v_mask)); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!(__pyx_v_n == __pyx_t_7))) { PyErr_SetNone(PyExc_AssertionError); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #endif
1052:
1053: out = np.empty((mask.sum(), k), dtype=object)
/* "lib.pyx":1053 * assert(n == len(mask)) * * out = np.empty((mask.sum(), k), dtype=object) #<<<<<<<<<<<<<<* * for i in range(n): */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_mask), __pyx_n_s__sum); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); if (unlikely(__pyx_t_9<0)) { PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } } __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]; __pyx_pybuffernd_out.diminfo[1].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out.diminfo[1].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_9<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_8 = 0; __pyx_v_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
1054:
1055: for i in range(n):
/* "lib.pyx":1055 * out = np.empty((mask.sum(), k), dtype=object) * * for i in range(n): #<<<<<<<<<<<<<<* if mask[i]: * for j in range(k): */ __pyx_t_7 = __pyx_v_n; for (__pyx_t_6 = 0; __pyx_t_6<__pyx_t_7; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6;
1056: if mask[i]:
/* "lib.pyx":1056
*
* for i in range(n):
* if mask[i]: # <<<<<<<<<<<<<<
* for j in range(k):
* out[pos, j] = values[i, j]
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_mask.diminfo[0].strides));
if (__pyx_t_14) {
1057: for j in range(k):
/* "lib.pyx":1057
* for i in range(n):
* if mask[i]:
* for j in range(k): # <<<<<<<<<<<<<<
* out[pos, j] = values[i, j]
* pos += 1
*/
__pyx_t_15 = __pyx_v_k;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_j = __pyx_t_16;
1058: out[pos, j] = values[i, j]
/* "lib.pyx":1058
* if mask[i]:
* for j in range(k):
* out[pos, j] = values[i, j] # <<<<<<<<<<<<<<
* pos += 1
*
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_18 = __pyx_v_j;
__pyx_t_2 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_values.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_values.diminfo[1].strides);
__Pyx_INCREF((PyObject*)__pyx_t_2);
__pyx_t_19 = __pyx_v_pos;
__pyx_t_20 = __pyx_v_j;
__pyx_t_21 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_19, __pyx_pybuffernd_out.diminfo[0].strides, __pyx_t_20, __pyx_pybuffernd_out.diminfo[1].strides);
__Pyx_GOTREF(*__pyx_t_21);
__Pyx_INCREF(__pyx_t_2); __Pyx_DECREF(*__pyx_t_21);
*__pyx_t_21 = __pyx_t_2;
__Pyx_GIVEREF(*__pyx_t_21);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
1059: pos += 1
/* "lib.pyx":1059
* for j in range(k):
* out[pos, j] = values[i, j]
* pos += 1 # <<<<<<<<<<<<<<
*
* return out
*/
__pyx_v_pos = (__pyx_v_pos + 1);
goto __pyx_L7;
}
__pyx_L7:;
}
1060:
1061: return out
/* "lib.pyx":1061 * pos += 1 * * return out #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_out)); __pyx_r = ((PyObject *)__pyx_v_out); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.row_bool_subset_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_out); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_87group_count(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_87group_count = {__Pyx_NAMESTR("group_count"), (PyCFunction)__pyx_pw_3lib_87group_count, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_87group_count(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; Py_ssize_t __pyx_v_size; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("group_count (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__size,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("group_count", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "group_count")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_size = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_size == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("group_count", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.group_count", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_86group_count(__pyx_self, __pyx_v_values, __pyx_v_size); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1062:
1063:
1064: def group_count(ndarray[int64_t] values, Py_ssize_t size):
/* "lib.pyx":1064 * * * def group_count(ndarray[int64_t] values, Py_ssize_t size): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ static PyObject *__pyx_pf_3lib_86group_count(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, Py_ssize_t __pyx_v_size) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_counts = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_counts; __Pyx_Buffer __pyx_pybuffer_counts; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("group_count", 0); __pyx_pybuffer_counts.pybuffer.buf = NULL; __pyx_pybuffer_counts.refcount = 0; __pyx_pybuffernd_counts.data = NULL; __pyx_pybuffernd_counts.rcbuffer = &__pyx_pybuffer_counts; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1064 * * * def group_count(ndarray[int64_t] values, Py_ssize_t size): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_k_tuple_182 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_182)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_182); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_182, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__size)); PyTuple_SET_ITEM(__pyx_k_tuple_182, 1, ((PyObject *)__pyx_n_s__size)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__size)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_182, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_182, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__counts)); PyTuple_SET_ITEM(__pyx_k_tuple_182, 4, ((PyObject *)__pyx_n_s__counts)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__counts)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_182)); /* "lib.pyx":1064 * * * def group_count(ndarray[int64_t] values, Py_ssize_t size): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_87group_count, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__group_count, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_183 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__group_count, 1064, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_183)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1065: cdef:
1066: Py_ssize_t i, n = len(values)
/* "lib.pyx":1066 * def group_count(ndarray[int64_t] values, Py_ssize_t size): * cdef: * Py_ssize_t i, n = len(values) #<<<<<<<<<<<<<<* ndarray[int64_t] counts * */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
1067: ndarray[int64_t] counts
1068:
1069: counts = np.zeros(size, dtype=np.int64)
/* "lib.pyx":1069 * ndarray[int64_t] counts * * counts = np.zeros(size, dtype=np.int64) #<<<<<<<<<<<<<<* for i in range(n): * counts[values[i]] += 1 */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_counts.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_counts.rcbuffer->pybuffer, (PyObject*)__pyx_v_counts, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_counts.diminfo[0].strides = __pyx_pybuffernd_counts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_counts.diminfo[0].shape = __pyx_pybuffernd_counts.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_counts = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
1070: for i in range(n):
/* "lib.pyx":1070 * * counts = np.zeros(size, dtype=np.int64) * for i in range(n): #<<<<<<<<<<<<<<* counts[values[i]] += 1 * return counts */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_12 = 0; __pyx_t_12<__pyx_t_1; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
1071: counts[values[i]] += 1
/* "lib.pyx":1071
* counts = np.zeros(size, dtype=np.int64)
* for i in range(n):
* counts[values[i]] += 1 # <<<<<<<<<<<<<<
* return counts
*
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_values.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_values.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_values.diminfo[0].strides));
__pyx_t_8 = -1;
if (__pyx_t_14 < 0) {
__pyx_t_14 += __pyx_pybuffernd_counts.diminfo[0].shape;
if (unlikely(__pyx_t_14 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_counts.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_counts.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_counts.diminfo[0].strides) += 1;
}
1072: return counts
/* "lib.pyx":1072 * for i in range(n): * counts[values[i]] += 1 * return counts #<<<<<<<<<<<<<<* * def lookup_values(ndarray[object] values, dict mapping): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_counts)); __pyx_r = ((PyObject *)__pyx_v_counts); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.group_count", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_counts); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_89lookup_values(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_89lookup_values = {__Pyx_NAMESTR("lookup_values"), (PyCFunction)__pyx_pw_3lib_89lookup_values, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_89lookup_values(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; PyObject *__pyx_v_mapping = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("lookup_values (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mapping,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mapping)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("lookup_values", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lookup_values")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_mapping = ((PyObject*)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("lookup_values", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.lookup_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mapping), (&PyDict_Type), 1, "mapping", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_88lookup_values(__pyx_self, __pyx_v_values, __pyx_v_mapping); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1073:
1074: def lookup_values(ndarray[object] values, dict mapping):
/* "lib.pyx":1074 * return counts * * def lookup_values(ndarray[object] values, dict mapping): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ static PyObject *__pyx_pf_3lib_88lookup_values(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyObject *__pyx_v_mapping) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_result = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("lookup_values", 0); __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1074 * return counts * * def lookup_values(ndarray[object] values, dict mapping): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_k_tuple_184 = PyTuple_New(5); if (unlikely(!__pyx_k_tuple_184)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_184); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_184, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__mapping)); PyTuple_SET_ITEM(__pyx_k_tuple_184, 1, ((PyObject *)__pyx_n_s__mapping)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mapping)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_184, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_184, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_184, 4, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_184)); /* "lib.pyx":1074 * return counts * * def lookup_values(ndarray[object] values, dict mapping): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n = len(values) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_89lookup_values, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__lookup_values, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_185 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_184, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__lookup_values, 1074, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_185)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1075: cdef:
1076: Py_ssize_t i, n = len(values)
/* "lib.pyx":1076 * def lookup_values(ndarray[object] values, dict mapping): * cdef: * Py_ssize_t i, n = len(values) #<<<<<<<<<<<<<<* * result = np.empty(n, dtype='O') */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
1077:
1078: result = np.empty(n, dtype='O')
/* "lib.pyx":1078 * Py_ssize_t i, n = len(values) * * result = np.empty(n, dtype='O') #<<<<<<<<<<<<<<* for i in range(n): * result[i] = mapping[values[i]] */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__O))<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_v_result = __pyx_t_5; __pyx_t_5 = 0;
1079: for i in range(n):
/* "lib.pyx":1079 * * result = np.empty(n, dtype='O') * for i in range(n): #<<<<<<<<<<<<<<* result[i] = mapping[values[i]] * return maybe_convert_objects(result) */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_6 = 0; __pyx_t_6<__pyx_t_1; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6;
1080: result[i] = mapping[values[i]]
/* "lib.pyx":1080
* result = np.empty(n, dtype='O')
* for i in range(n):
* result[i] = mapping[values[i]] # <<<<<<<<<<<<<<
* return maybe_convert_objects(result)
*
*/
if (unlikely(((PyObject *)__pyx_v_mapping) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_7 < 0) {
__pyx_t_7 += __pyx_pybuffernd_values.diminfo[0].shape;
if (unlikely(__pyx_t_7 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_7 >= __pyx_pybuffernd_values.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
__pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_mapping), __pyx_t_5); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__Pyx_SetItemInt(__pyx_v_result, __pyx_v_i, __pyx_t_2, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
1081: return maybe_convert_objects(result)
/* "lib.pyx":1081 * for i in range(n): * result[i] = mapping[values[i]] * return maybe_convert_objects(result) #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_result); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_result); __Pyx_GIVEREF(__pyx_v_result); __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.lookup_values", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_91count_level_1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_91count_level_1d = {__Pyx_NAMESTR("count_level_1d"), (PyCFunction)__pyx_pw_3lib_91count_level_1d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_91count_level_1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_mask = 0; PyArrayObject *__pyx_v_labels = 0; Py_ssize_t __pyx_v_max_bin; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count_level_1d (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__mask,&__pyx_n_s__labels,&__pyx_n_s__max_bin,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("count_level_1d", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_bin)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("count_level_1d", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "count_level_1d")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_mask = ((PyArrayObject *)values[0]); __pyx_v_labels = ((PyArrayObject *)values[1]); __pyx_v_max_bin = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_max_bin == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("count_level_1d", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.count_level_1d", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_90count_level_1d(__pyx_self, __pyx_v_mask, __pyx_v_labels, __pyx_v_max_bin); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1082:
1083:
1084: def count_level_1d(ndarray[uint8_t, cast=True] mask,
/* "lib.pyx":1084 * * * def count_level_1d(ndarray[uint8_t, cast=True] mask, #<<<<<<<<<<<<<<* ndarray[int64_t] labels, Py_ssize_t max_bin): * cdef: */ static PyObject *__pyx_pf_3lib_90count_level_1d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_labels, Py_ssize_t __pyx_v_max_bin) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_counts = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_counts; __Pyx_Buffer __pyx_pybuffer_counts; __Pyx_LocalBuf_ND __pyx_pybuffernd_labels; __Pyx_Buffer __pyx_pybuffer_labels; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count_level_1d", 0); __pyx_pybuffer_counts.pybuffer.buf = NULL; __pyx_pybuffer_counts.refcount = 0; __pyx_pybuffernd_counts.data = NULL; __pyx_pybuffernd_counts.rcbuffer = &__pyx_pybuffer_counts; __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; __pyx_pybuffer_labels.pybuffer.buf = NULL; __pyx_pybuffer_labels.refcount = 0; __pyx_pybuffernd_labels.data = NULL; __pyx_pybuffernd_labels.rcbuffer = &__pyx_pybuffer_labels; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labels.rcbuffer->pybuffer, (PyObject*)__pyx_v_labels, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_labels.diminfo[0].strides = __pyx_pybuffernd_labels.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labels.diminfo[0].shape = __pyx_pybuffernd_labels.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1084 * * * def count_level_1d(ndarray[uint8_t, cast=True] mask, #<<<<<<<<<<<<<<* ndarray[int64_t] labels, Py_ssize_t max_bin): * cdef: */ __pyx_k_tuple_186 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_186)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_186); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_186, 0, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__labels)); PyTuple_SET_ITEM(__pyx_k_tuple_186, 1, ((PyObject *)__pyx_n_s__labels)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__labels)); __Pyx_INCREF(((PyObject *)__pyx_n_s__max_bin)); PyTuple_SET_ITEM(__pyx_k_tuple_186, 2, ((PyObject *)__pyx_n_s__max_bin)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max_bin)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_186, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_186, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__counts)); PyTuple_SET_ITEM(__pyx_k_tuple_186, 5, ((PyObject *)__pyx_n_s__counts)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__counts)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_186)); /* "lib.pyx":1084 * * * def count_level_1d(ndarray[uint8_t, cast=True] mask, #<<<<<<<<<<<<<<* ndarray[int64_t] labels, Py_ssize_t max_bin): * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_91count_level_1d, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__count_level_1d, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_187 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_186, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__count_level_1d, 1084, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_187)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1085: ndarray[int64_t] labels, Py_ssize_t max_bin):
1086: cdef:
1087: Py_ssize_t i, n
1088: ndarray[int64_t] counts
1089:
1090: counts = np.zeros(max_bin, dtype='i8')
/* "lib.pyx":1090 * ndarray[int64_t] counts * * counts = np.zeros(max_bin, dtype='i8') #<<<<<<<<<<<<<<* * n = len(mask) */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_max_bin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__i8))<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_counts.rcbuffer->pybuffer, (PyObject*)__pyx_t_5, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_6<0)) { PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_counts.rcbuffer->pybuffer, (PyObject*)__pyx_v_counts, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9); } } __pyx_pybuffernd_counts.diminfo[0].strides = __pyx_pybuffernd_counts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_counts.diminfo[0].shape = __pyx_pybuffernd_counts.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_6<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_5 = 0; __pyx_v_counts = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
1091:
1092: n = len(mask)
/* "lib.pyx":1092 * counts = np.zeros(max_bin, dtype='i8') * * n = len(mask) #<<<<<<<<<<<<<<* * for i from 0<= i<n: */ __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_mask)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_10;
1093:
1094: for i from 0 <= i < n:
/* "lib.pyx":1094 * n = len(mask) * * for i from 0<= i<n: #<<<<<<<<<<<<<<* if mask[i]: * counts[labels[i]] += 1 */ __pyx_t_10 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_10; __pyx_v_i++) {
1095: if mask[i]:
/* "lib.pyx":1095
*
* for i from 0 <= i < n:
* if mask[i]: # <<<<<<<<<<<<<<
* counts[labels[i]] += 1
*
*/
__pyx_t_11 = __pyx_v_i;
__pyx_t_6 = -1;
if (__pyx_t_11 < 0) {
__pyx_t_11 += __pyx_pybuffernd_mask.diminfo[0].shape;
if (unlikely(__pyx_t_11 < 0)) __pyx_t_6 = 0;
} else if (unlikely(__pyx_t_11 >= __pyx_pybuffernd_mask.diminfo[0].shape)) __pyx_t_6 = 0;
if (unlikely(__pyx_t_6 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_6);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_12 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_mask.diminfo[0].strides));
if (__pyx_t_12) {
1096: counts[labels[i]] += 1
/* "lib.pyx":1096
* for i from 0 <= i < n:
* if mask[i]:
* counts[labels[i]] += 1 # <<<<<<<<<<<<<<
*
* return counts
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_6 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_labels.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_6 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_labels.diminfo[0].shape)) __pyx_t_6 = 0;
if (unlikely(__pyx_t_6 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_6);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_labels.diminfo[0].strides));
__pyx_t_6 = -1;
if (__pyx_t_14 < 0) {
__pyx_t_14 += __pyx_pybuffernd_counts.diminfo[0].shape;
if (unlikely(__pyx_t_14 < 0)) __pyx_t_6 = 0;
} else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_counts.diminfo[0].shape)) __pyx_t_6 = 0;
if (unlikely(__pyx_t_6 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_6);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_counts.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_counts.diminfo[0].strides) += 1;
goto __pyx_L5;
}
__pyx_L5:;
}
1097:
1098: return counts
/* "lib.pyx":1098 * counts[labels[i]] += 1 * * return counts #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_counts)); __pyx_r = ((PyObject *)__pyx_v_counts); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.count_level_1d", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_counts); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_93count_level_2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_93count_level_2d = {__Pyx_NAMESTR("count_level_2d"), (PyCFunction)__pyx_pw_3lib_93count_level_2d, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_93count_level_2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_mask = 0; PyArrayObject *__pyx_v_labels = 0; Py_ssize_t __pyx_v_max_bin; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count_level_2d (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__mask,&__pyx_n_s__labels,&__pyx_n_s__max_bin,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("count_level_2d", 1, 3, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_bin)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("count_level_2d", 1, 3, 3, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "count_level_2d")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_mask = ((PyArrayObject *)values[0]); __pyx_v_labels = ((PyArrayObject *)values[1]); __pyx_v_max_bin = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_max_bin == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("count_level_2d", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.count_level_2d", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_92count_level_2d(__pyx_self, __pyx_v_mask, __pyx_v_labels, __pyx_v_max_bin); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1099:
1100:
1101: def count_level_2d(ndarray[uint8_t, ndim=2, cast=True] mask,
/* "lib.pyx":1101 * * * def count_level_2d(ndarray[uint8_t, ndim=2, cast=True] mask, #<<<<<<<<<<<<<<* ndarray[int64_t] labels, Py_ssize_t max_bin): * cdef: */ static PyObject *__pyx_pf_3lib_92count_level_2d(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_labels, Py_ssize_t __pyx_v_max_bin) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_counts = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_counts; __Pyx_Buffer __pyx_pybuffer_counts; __Pyx_LocalBuf_ND __pyx_pybuffernd_labels; __Pyx_Buffer __pyx_pybuffer_labels; __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; __Pyx_Buffer __pyx_pybuffer_mask; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("count_level_2d", 0); __pyx_pybuffer_counts.pybuffer.buf = NULL; __pyx_pybuffer_counts.refcount = 0; __pyx_pybuffernd_counts.data = NULL; __pyx_pybuffernd_counts.rcbuffer = &__pyx_pybuffer_counts; __pyx_pybuffer_mask.pybuffer.buf = NULL; __pyx_pybuffer_mask.refcount = 0; __pyx_pybuffernd_mask.data = NULL; __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; __pyx_pybuffer_labels.pybuffer.buf = NULL; __pyx_pybuffer_labels.refcount = 0; __pyx_pybuffernd_labels.data = NULL; __pyx_pybuffernd_labels.rcbuffer = &__pyx_pybuffer_labels; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_mask.diminfo[1].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_mask.diminfo[1].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[1]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labels.rcbuffer->pybuffer, (PyObject*)__pyx_v_labels, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_labels.diminfo[0].strides = __pyx_pybuffernd_labels.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labels.diminfo[0].shape = __pyx_pybuffernd_labels.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1101 * * * def count_level_2d(ndarray[uint8_t, ndim=2, cast=True] mask, #<<<<<<<<<<<<<<* ndarray[int64_t] labels, Py_ssize_t max_bin): * cdef: */ __pyx_k_tuple_188 = PyTuple_New(8); if (unlikely(!__pyx_k_tuple_188)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_188); __Pyx_INCREF(((PyObject *)__pyx_n_s__mask)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 0, ((PyObject *)__pyx_n_s__mask)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__mask)); __Pyx_INCREF(((PyObject *)__pyx_n_s__labels)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 1, ((PyObject *)__pyx_n_s__labels)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__labels)); __Pyx_INCREF(((PyObject *)__pyx_n_s__max_bin)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 2, ((PyObject *)__pyx_n_s__max_bin)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__max_bin)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 3, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 4, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 5, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 6, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__counts)); PyTuple_SET_ITEM(__pyx_k_tuple_188, 7, ((PyObject *)__pyx_n_s__counts)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__counts)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_188)); /* "lib.pyx":1101 * * * def count_level_2d(ndarray[uint8_t, ndim=2, cast=True] mask, #<<<<<<<<<<<<<<* ndarray[int64_t] labels, Py_ssize_t max_bin): * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_93count_level_2d, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__count_level_2d, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_189 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_188, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__count_level_2d, 1101, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_189)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1102: ndarray[int64_t] labels, Py_ssize_t max_bin):
1103: cdef:
1104: Py_ssize_t i, j, k, n
1105: ndarray[int64_t, ndim=2] counts
1106:
1107: n, k = (<object> mask).shape
/* "lib.pyx":1107 * ndarray[int64_t, ndim=2] counts * * n, k = (<object> mask).shape #<<<<<<<<<<<<<<* counts = np.zeros((max_bin, k), dtype='i8') * */ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_mask), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if CYTHON_COMPILING_IN_CPYTHON Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } #if CYTHON_COMPILING_IN_CPYTHON if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_n = __pyx_t_6; __pyx_v_k = __pyx_t_7;
1108: counts = np.zeros((max_bin, k), dtype='i8')
/* "lib.pyx":1108 * * n, k = (<object> mask).shape * counts = np.zeros((max_bin, k), dtype='i8') #<<<<<<<<<<<<<<* * for i from 0<= i<n: */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_max_bin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_4)); if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__i8))<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_8 = ((PyArrayObject *)__pyx_t_1); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_counts.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack); if (unlikely(__pyx_t_9<0)) { PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_counts.rcbuffer->pybuffer, (PyObject*)__pyx_v_counts, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } } __pyx_pybuffernd_counts.diminfo[0].strides = __pyx_pybuffernd_counts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_counts.diminfo[0].shape = __pyx_pybuffernd_counts.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_counts.diminfo[1].strides = __pyx_pybuffernd_counts.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_counts.diminfo[1].shape = __pyx_pybuffernd_counts.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_9<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_8 = 0; __pyx_v_counts = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
1109:
1110: for i from 0 <= i < n:
/* "lib.pyx":1110 * counts = np.zeros((max_bin, k), dtype='i8') * * for i from 0<= i<n: #<<<<<<<<<<<<<<* for j from 0<= j<k: * if mask[i, j]: */ __pyx_t_7 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i<__pyx_t_7; __pyx_v_i++) {
1111: for j from 0 <= j < k:
/* "lib.pyx":1111
*
* for i from 0 <= i < n:
* for j from 0 <= j < k: # <<<<<<<<<<<<<<
* if mask[i, j]:
* counts[labels[i], j] += 1
*/
__pyx_t_6 = __pyx_v_k;
for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_6; __pyx_v_j++) {
1112: if mask[i, j]:
/* "lib.pyx":1112
* for i from 0 <= i < n:
* for j from 0 <= j < k:
* if mask[i, j]: # <<<<<<<<<<<<<<
* counts[labels[i], j] += 1
*
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = __pyx_v_j;
__pyx_t_9 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_mask.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_mask.diminfo[0].shape)) __pyx_t_9 = 0;
if (__pyx_t_14 < 0) {
__pyx_t_14 += __pyx_pybuffernd_mask.diminfo[1].shape;
if (unlikely(__pyx_t_14 < 0)) __pyx_t_9 = 1;
} else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_mask.diminfo[1].shape)) __pyx_t_9 = 1;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_mask.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_mask.diminfo[1].strides));
if (__pyx_t_15) {
1113: counts[labels[i], j] += 1
/* "lib.pyx":1113
* for j from 0 <= j < k:
* if mask[i, j]:
* counts[labels[i], j] += 1 # <<<<<<<<<<<<<<
*
* return counts
*/
__pyx_t_16 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_16 < 0) {
__pyx_t_16 += __pyx_pybuffernd_labels.diminfo[0].shape;
if (unlikely(__pyx_t_16 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_labels.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_17 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_labels.diminfo[0].strides));
__pyx_t_18 = __pyx_v_j;
__pyx_t_9 = -1;
if (__pyx_t_17 < 0) {
__pyx_t_17 += __pyx_pybuffernd_counts.diminfo[0].shape;
if (unlikely(__pyx_t_17 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_counts.diminfo[0].shape)) __pyx_t_9 = 0;
if (__pyx_t_18 < 0) {
__pyx_t_18 += __pyx_pybuffernd_counts.diminfo[1].shape;
if (unlikely(__pyx_t_18 < 0)) __pyx_t_9 = 1;
} else if (unlikely(__pyx_t_18 >= __pyx_pybuffernd_counts.diminfo[1].shape)) __pyx_t_9 = 1;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_counts.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_counts.diminfo[0].strides, __pyx_t_18, __pyx_pybuffernd_counts.diminfo[1].strides) += 1;
goto __pyx_L9;
}
__pyx_L9:;
}
}
1114:
1115: return counts
/* "lib.pyx":1115 * counts[labels[i], j] += 1 * * return counts #<<<<<<<<<<<<<<* * cdef class _PandasNull: */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_counts)); __pyx_r = ((PyObject *)__pyx_v_counts); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.count_level_2d", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_counts.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_counts); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_11_PandasNull_1__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/ static PyObject *__pyx_pw_3lib_11_PandasNull_1__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_3lib__PandasNull, 1, "self", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_11_PandasNull___richcmp__(((struct __pyx_obj_3lib__PandasNull *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op)); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1116:
1117: cdef class _PandasNull:
/* "lib.pyx":1117 * return counts * * cdef class _PandasNull: #<<<<<<<<<<<<<<* * def __richcmp__(_PandasNull self, object other, int op): */ struct __pyx_obj_3lib__PandasNull { PyObject_HEAD };
1118:
1119: def __richcmp__(_PandasNull self, object other, int op):
/* "lib.pyx":1119 * cdef class _PandasNull: * * def __richcmp__(_PandasNull self, object other, int op): #<<<<<<<<<<<<<<* if op == 2: # == * return isinstance(other, _PandasNull) */ static PyObject *__pyx_pf_3lib_11_PandasNull___richcmp__(CYTHON_UNUSED struct __pyx_obj_3lib__PandasNull *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__richcmp__", 0);
1120: if op == 2: # ==
/* "lib.pyx":1120
*
* def __richcmp__(_PandasNull self, object other, int op):
* if op == 2: # == # <<<<<<<<<<<<<<
* return isinstance(other, _PandasNull)
* elif op == 3: # !=
*/
case 2:
1121: return isinstance(other, _PandasNull)
/* "lib.pyx":1121
* def __richcmp__(_PandasNull self, object other, int op):
* if op == 2: # ==
* return isinstance(other, _PandasNull) # <<<<<<<<<<<<<<
* elif op == 3: # !=
* return not isinstance(other, _PandasNull)
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_3lib__PandasNull));
__Pyx_INCREF(__pyx_t_1);
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
break;
1122: elif op == 3: # !=
/* "lib.pyx":1122 * if op == 2: # == * return isinstance(other, _PandasNull) * elif op == 3: # != #<<<<<<<<<<<<<<* return not isinstance(other, _PandasNull) * else: */ switch (__pyx_v_op) { /* "lib.pyx":1122 * if op == 2: # == * return isinstance(other, _PandasNull) * elif op == 3: # != #<<<<<<<<<<<<<<* return not isinstance(other, _PandasNull) * else: */ case 3:
1123: return not isinstance(other, _PandasNull)
/* "lib.pyx":1123
* return isinstance(other, _PandasNull)
* elif op == 3: # !=
* return not isinstance(other, _PandasNull) # <<<<<<<<<<<<<<
* else:
* return False
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = ((PyObject *)((PyObject*)__pyx_ptype_3lib__PandasNull));
__Pyx_INCREF(__pyx_t_1);
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_other, __pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyBool_FromLong((!__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
break;
default:
1124: else:
1125: return False
/* "lib.pyx":1125
* return not isinstance(other, _PandasNull)
* else:
* return False # <<<<<<<<<<<<<<
*
* def __hash__(self):
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
break;
}
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("lib._PandasNull.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static Py_hash_t __pyx_pw_3lib_11_PandasNull_3__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_3lib_11_PandasNull_3__hash__(PyObject *__pyx_v_self) {
Py_hash_t __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
__pyx_r = __pyx_pf_3lib_11_PandasNull_2__hash__(((struct __pyx_obj_3lib__PandasNull *)__pyx_v_self));
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1126:
1127: def __hash__(self):
/* "lib.pyx":1127 * return False * * def __hash__(self): #<<<<<<<<<<<<<<* return 0 * */ static Py_hash_t __pyx_pf_3lib_11_PandasNull_2__hash__(CYTHON_UNUSED struct __pyx_obj_3lib__PandasNull *__pyx_v_self) { Py_hash_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__hash__", 0);
1128: return 0
/* "lib.pyx":1128 * * def __hash__(self): * return 0 #<<<<<<<<<<<<<<* * pandas_null = _PandasNull() */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; __pyx_L0:; if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_95fast_zip_fillna(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_3lib_94fast_zip_fillna[] = "\n For zipping multiple ndarrays into an ndarray of tuples\n "; static PyMethodDef __pyx_mdef_3lib_95fast_zip_fillna = {__Pyx_NAMESTR("fast_zip_fillna"), (PyCFunction)__pyx_pw_3lib_95fast_zip_fillna, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_3lib_94fast_zip_fillna)}; static PyObject *__pyx_pw_3lib_95fast_zip_fillna(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_ndarrays = 0; PyObject *__pyx_v_fill_value = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_zip_fillna (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ndarrays,&__pyx_n_s__fill_value,0}; PyObject* values[2] = {0,0}; values[1] = __pyx_k_19; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ndarrays)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fast_zip_fillna")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_ndarrays = ((PyObject*)values[0]); __pyx_v_fill_value = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("fast_zip_fillna", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.fast_zip_fillna", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ndarrays), (&PyList_Type), 1, "ndarrays", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_94fast_zip_fillna(__pyx_self, __pyx_v_ndarrays, __pyx_v_fill_value); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1129:
1130: pandas_null = _PandasNull()
/* "lib.pyx":1130 * return 0 * * pandas_null = _PandasNull() #<<<<<<<<<<<<<<* * def fast_zip_fillna(list ndarrays, fill_value=pandas_null): */ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_3lib__PandasNull)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pandas_null, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1131:
1132: def fast_zip_fillna(list ndarrays, fill_value=pandas_null):
/* "lib.pyx":1132 * pandas_null = _PandasNull() * * def fast_zip_fillna(list ndarrays, fill_value=pandas_null): #<<<<<<<<<<<<<<* ''' * For zipping multiple ndarrays into an ndarray of tuples */ static PyObject *__pyx_pf_3lib_94fast_zip_fillna(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ndarrays, PyObject *__pyx_v_fill_value) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_n; PyArrayObject *__pyx_v_result = 0; PyArrayIterObject *__pyx_v_it = 0; PyObject *__pyx_v_val = 0; PyObject *__pyx_v_tup = 0; PyObject *__pyx_v_arr = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fast_zip_fillna", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; /* "lib.pyx":1132 * pandas_null = _PandasNull() * * def fast_zip_fillna(list ndarrays, fill_value=pandas_null): #<<<<<<<<<<<<<<* ''' * For zipping multiple ndarrays into an ndarray of tuples */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__pandas_null); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_k_19 = __pyx_t_2; __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "lib.pyx":1132 * pandas_null = _PandasNull() * * def fast_zip_fillna(list ndarrays, fill_value=pandas_null): #<<<<<<<<<<<<<<* ''' * For zipping multiple ndarrays into an ndarray of tuples */ __pyx_k_tuple_190 = PyTuple_New(11); if (unlikely(!__pyx_k_tuple_190)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_190); __Pyx_INCREF(((PyObject *)__pyx_n_s__ndarrays)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 0, ((PyObject *)__pyx_n_s__ndarrays)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ndarrays)); __Pyx_INCREF(((PyObject *)__pyx_n_s__fill_value)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 1, ((PyObject *)__pyx_n_s__fill_value)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fill_value)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 3, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 4, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 5, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__it)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 7, ((PyObject *)__pyx_n_s__it)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__it)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 8, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 9, ((PyObject *)__pyx_n_s__tup)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup)); __Pyx_INCREF(((PyObject *)__pyx_n_s__arr)); PyTuple_SET_ITEM(__pyx_k_tuple_190, 10, ((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__arr)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_190)); __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_95fast_zip_fillna, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fast_zip_fillna, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_191 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_190, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__fast_zip_fillna, 1132, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_191)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1133: '''
1134: For zipping multiple ndarrays into an ndarray of tuples
1135: '''
1136: cdef:
1137: Py_ssize_t i, j, k, n
1138: ndarray[object] result
1139: flatiter it
1140: object val, tup
1141:
1142: k = len(ndarrays)
/* "lib.pyx":1142 * object val, tup * * k = len(ndarrays) #<<<<<<<<<<<<<<* n = len(ndarrays[0]) * */ if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_ndarrays)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_k = __pyx_t_1;
1143: n = len(ndarrays[0])
/* "lib.pyx":1143 * * k = len(ndarrays) * n = len(ndarrays[0]) #<<<<<<<<<<<<<<* * result = np.empty(n, dtype=object) */ if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_ndarrays), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_n = __pyx_t_1;
1144:
1145: result = np.empty(n, dtype=object)
/* "lib.pyx":1145 * n = len(ndarrays[0]) * * result = np.empty(n, dtype=object) #<<<<<<<<<<<<<<* * # initialize tuples on first pass */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_6 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_7<0)) { PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10); } } __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_7<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_6 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
1146:
1147: # initialize tuples on first pass
1148: arr = ndarrays[0]
/* "lib.pyx":1148 * * # initialize tuples on first pass * arr = ndarrays[0] #<<<<<<<<<<<<<<* it =<flatiter> PyArray_IterNew(arr) * for i in range(n): */ if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_5 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_ndarrays), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_v_arr = __pyx_t_5; __pyx_t_5 = 0;
1149: it = <flatiter> PyArray_IterNew(arr)
/* "lib.pyx":1149 * # initialize tuples on first pass * arr = ndarrays[0] * it =<flatiter> PyArray_IterNew(arr) #<<<<<<<<<<<<<<* for i in range(n): * val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) */ __pyx_t_5 = PyArray_IterNew(__pyx_v_arr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_it = ((PyArrayIterObject *)__pyx_t_2); __pyx_t_2 = 0;
1150: for i in range(n):
/* "lib.pyx":1150 * arr = ndarrays[0] * it =<flatiter> PyArray_IterNew(arr) * for i in range(n): #<<<<<<<<<<<<<<* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) * tup = PyTuple_New(k) */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_11 = 0; __pyx_t_11<__pyx_t_1; __pyx_t_11+=1) { __pyx_v_i = __pyx_t_11;
1151: val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
/* "lib.pyx":1151
* it = <flatiter> PyArray_IterNew(arr)
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) # <<<<<<<<<<<<<<
* tup = PyTuple_New(k)
*
*/
if (!(likely(((__pyx_v_arr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_arr, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = __pyx_v_arr;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = PyArray_GETITEM(((PyArrayObject *)__pyx_t_2), PyArray_ITER_DATA(__pyx_v_it)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_5;
__pyx_t_5 = 0;
1152: tup = PyTuple_New(k)
/* "lib.pyx":1152
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* tup = PyTuple_New(k) # <<<<<<<<<<<<<<
*
* if val != val:
*/
__pyx_t_5 = ((PyObject *)PyTuple_New(__pyx_v_k)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_v_tup);
__pyx_v_tup = __pyx_t_5;
__pyx_t_5 = 0;
1153:
1154: if val != val:
/* "lib.pyx":1154
* tup = PyTuple_New(k)
*
* if val != val: # <<<<<<<<<<<<<<
* val = fill_value
*
*/
__pyx_t_5 = PyObject_RichCompare(__pyx_v_val, __pyx_v_val, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_12) {
1155: val = fill_value
/* "lib.pyx":1155
*
* if val != val:
* val = fill_value # <<<<<<<<<<<<<<
*
* PyTuple_SET_ITEM(tup, 0, val)
*/
__Pyx_INCREF(__pyx_v_fill_value);
__Pyx_DECREF(__pyx_v_val);
__pyx_v_val = __pyx_v_fill_value;
goto __pyx_L5;
}
__pyx_L5:;
1156:
1157: PyTuple_SET_ITEM(tup, 0, val)
/* "lib.pyx":1157
* val = fill_value
*
* PyTuple_SET_ITEM(tup, 0, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
* result[i] = tup
*/
PyTuple_SET_ITEM(__pyx_v_tup, 0, __pyx_v_val);
1158: Py_INCREF(val)
/* "lib.pyx":1158
*
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
* result[i] = tup
* PyArray_ITER_NEXT(it)
*/
Py_INCREF(__pyx_v_val);
1159: result[i] = tup
/* "lib.pyx":1159
* PyTuple_SET_ITEM(tup, 0, val)
* Py_INCREF(val)
* result[i] = tup # <<<<<<<<<<<<<<
* PyArray_ITER_NEXT(it)
*
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_14 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_GOTREF(*__pyx_t_14);
__Pyx_INCREF(__pyx_v_tup); __Pyx_DECREF(*__pyx_t_14);
*__pyx_t_14 = __pyx_v_tup;
__Pyx_GIVEREF(*__pyx_t_14);
1160: PyArray_ITER_NEXT(it)
/* "lib.pyx":1160
* Py_INCREF(val)
* result[i] = tup
* PyArray_ITER_NEXT(it) # <<<<<<<<<<<<<<
*
* for j in range(1, k):
*/
PyArray_ITER_NEXT(__pyx_v_it);
}
1161:
1162: for j in range(1, k):
/* "lib.pyx":1162 * PyArray_ITER_NEXT(it) * * for j in range(1, k): #<<<<<<<<<<<<<<* arr = ndarrays[j] * it =<flatiter> PyArray_IterNew(arr) */ __pyx_t_1 = __pyx_v_k; for (__pyx_t_11 = 1; __pyx_t_11<__pyx_t_1; __pyx_t_11+=1) { __pyx_v_j = __pyx_t_11;
1163: arr = ndarrays[j]
/* "lib.pyx":1163
*
* for j in range(1, k):
* arr = ndarrays[j] # <<<<<<<<<<<<<<
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n:
*/
if (unlikely(((PyObject *)__pyx_v_ndarrays) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_ndarrays), __pyx_v_j, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_5) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_v_arr);
__pyx_v_arr = __pyx_t_5;
__pyx_t_5 = 0;
1164: it = <flatiter> PyArray_IterNew(arr)
/* "lib.pyx":1164
* for j in range(1, k):
* arr = ndarrays[j]
* it = <flatiter> PyArray_IterNew(arr) # <<<<<<<<<<<<<<
* if len(arr) != n:
* raise ValueError('all arrays must be same length')
*/
__pyx_t_5 = PyArray_IterNew(__pyx_v_arr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = __pyx_t_5;
__Pyx_INCREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_v_it));
__pyx_v_it = ((PyArrayIterObject *)__pyx_t_2);
__pyx_t_2 = 0;
1165: if len(arr) != n:
/* "lib.pyx":1165
* arr = ndarrays[j]
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n: # <<<<<<<<<<<<<<
* raise ValueError('all arrays must be same length')
*
*/
__pyx_t_15 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_12 = (__pyx_t_15 != __pyx_v_n);
if (__pyx_t_12) {
1166: raise ValueError('all arrays must be same length')
/* "lib.pyx":1166
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n:
* raise ValueError('all arrays must be same length') # <<<<<<<<<<<<<<
*
* for i in range(n):
*/
__pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L8;
}
__pyx_L8:;
/* "lib.pyx":1166
* it = <flatiter> PyArray_IterNew(arr)
* if len(arr) != n:
* raise ValueError('all arrays must be same length') # <<<<<<<<<<<<<<
*
* for i in range(n):
*/
__pyx_k_tuple_20 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_20);
__Pyx_INCREF(((PyObject *)__pyx_kp_s_1));
PyTuple_SET_ITEM(__pyx_k_tuple_20, 0, ((PyObject *)__pyx_kp_s_1));
__Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1));
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));
1167:
1168: for i in range(n):
/* "lib.pyx":1168
* raise ValueError('all arrays must be same length')
*
* for i in range(n): # <<<<<<<<<<<<<<
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* if val != val:
*/
__pyx_t_15 = __pyx_v_n;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
1169: val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
/* "lib.pyx":1169
*
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it)) # <<<<<<<<<<<<<<
* if val != val:
* val = fill_value
*/
if (!(likely(((__pyx_v_arr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_arr, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_2 = __pyx_v_arr;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = PyArray_GETITEM(((PyArrayObject *)__pyx_t_2), PyArray_ITER_DATA(__pyx_v_it)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_5;
__pyx_t_5 = 0;
1170: if val != val:
/* "lib.pyx":1170
* for i in range(n):
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* if val != val: # <<<<<<<<<<<<<<
* val = fill_value
*
*/
__pyx_t_5 = PyObject_RichCompare(__pyx_v_val, __pyx_v_val, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_12) {
1171: val = fill_value
/* "lib.pyx":1171
* val = PyArray_GETITEM(arr, PyArray_ITER_DATA(it))
* if val != val:
* val = fill_value # <<<<<<<<<<<<<<
*
* PyTuple_SET_ITEM(result[i], j, val)
*/
__Pyx_INCREF(__pyx_v_fill_value);
__Pyx_DECREF(__pyx_v_val);
__pyx_v_val = __pyx_v_fill_value;
goto __pyx_L11;
}
__pyx_L11:;
1172:
1173: PyTuple_SET_ITEM(result[i], j, val)
/* "lib.pyx":1173
* val = fill_value
*
* PyTuple_SET_ITEM(result[i], j, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
* PyArray_ITER_NEXT(it)
*/
__pyx_t_17 = __pyx_v_i;
__pyx_t_7 = -1;
if (__pyx_t_17 < 0) {
__pyx_t_17 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_17 < 0)) __pyx_t_7 = 0;
} else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0;
if (unlikely(__pyx_t_7 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_7);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_result.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, __pyx_v_j, __pyx_v_val);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1174: Py_INCREF(val)
/* "lib.pyx":1174
*
* PyTuple_SET_ITEM(result[i], j, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
* PyArray_ITER_NEXT(it)
*
*/
Py_INCREF(__pyx_v_val);
1175: PyArray_ITER_NEXT(it)
/* "lib.pyx":1175
* PyTuple_SET_ITEM(result[i], j, val)
* Py_INCREF(val)
* PyArray_ITER_NEXT(it) # <<<<<<<<<<<<<<
*
* return result
*/
PyArray_ITER_NEXT(__pyx_v_it);
}
}
1176:
1177: return result
/* "lib.pyx":1177 * PyArray_ITER_NEXT(it) * * return result #<<<<<<<<<<<<<<* * def duplicated(ndarray[object] values, take_last=False): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.fast_zip_fillna", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XDECREF((PyObject *)__pyx_v_it); __Pyx_XDECREF(__pyx_v_val); __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_arr); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_97duplicated(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_97duplicated = {__Pyx_NAMESTR("duplicated"), (PyCFunction)__pyx_pw_3lib_97duplicated, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_97duplicated(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_values = 0; PyObject *__pyx_v_take_last = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("duplicated (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__take_last,0}; PyObject* values[2] = {0,0}; values[1] = __pyx_k_21; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__take_last); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "duplicated")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_values = ((PyArrayObject *)values[0]); __pyx_v_take_last = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("duplicated", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.duplicated", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_96duplicated(__pyx_self, __pyx_v_values, __pyx_v_take_last); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1178:
1179: def duplicated(ndarray[object] values, take_last=False):
/* "lib.pyx":1179 * return result * * def duplicated(ndarray[object] values, take_last=False): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n */ static PyObject *__pyx_pf_3lib_96duplicated(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_values, PyObject *__pyx_v_take_last) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_seen = 0; PyObject *__pyx_v_row = 0; PyArrayObject *__pyx_v_result = 0; __Pyx_LocalBuf_ND __pyx_pybuffernd_result; __Pyx_Buffer __pyx_pybuffer_result; __Pyx_LocalBuf_ND __pyx_pybuffernd_values; __Pyx_Buffer __pyx_pybuffer_values; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("duplicated", 0); __pyx_pybuffer_result.pybuffer.buf = NULL; __pyx_pybuffer_result.refcount = 0; __pyx_pybuffernd_result.data = NULL; __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; __pyx_pybuffer_values.pybuffer.buf = NULL; __pyx_pybuffer_values.refcount = 0; __pyx_pybuffernd_values.data = NULL; __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1179 * return result * * def duplicated(ndarray[object] values, take_last=False): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n */ __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_k_21 = __pyx_t_2; __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; /* "lib.pyx":1179 * return result * * def duplicated(ndarray[object] values, take_last=False): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, n */ __pyx_k_tuple_192 = PyTuple_New(7); if (unlikely(!__pyx_k_tuple_192)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_192); __Pyx_INCREF(((PyObject *)__pyx_n_s__values)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 0, ((PyObject *)__pyx_n_s__values)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__values)); __Pyx_INCREF(((PyObject *)__pyx_n_s__take_last)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 1, ((PyObject *)__pyx_n_s__take_last)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__take_last)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 3, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__seen)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 4, ((PyObject *)__pyx_n_s__seen)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__seen)); __Pyx_INCREF(((PyObject *)__pyx_n_s__row)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 5, ((PyObject *)__pyx_n_s__row)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__row)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_192, 6, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_192)); __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_97duplicated, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__duplicated, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_193 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__duplicated, 1179, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_193)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1180: cdef:
1181: Py_ssize_t i, n
1182: dict seen = {}
/* "lib.pyx":1182
* cdef:
* Py_ssize_t i, n
* dict seen = {} # <<<<<<<<<<<<<<
* object row
*
*/
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_v_seen = __pyx_t_1;
__pyx_t_1 = 0;
1183: object row
1184:
1185: n = len(values)
/* "lib.pyx":1185 * object row * * n = len(values) #<<<<<<<<<<<<<<* cdef ndarray[uint8_t] result = np.zeros(n, dtype=np.uint8) * */ __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_2;
1186: cdef ndarray[uint8_t] result = np.zeros(n, dtype=np.uint8)
/* "lib.pyx":1186 * * n = len(values) * cdef ndarray[uint8_t] result = np.zeros(n, dtype=np.uint8) #<<<<<<<<<<<<<<* * if take_last: */ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__uint8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_result.rcbuffer->pybuffer.buf = NULL; {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } else {__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; } } __pyx_t_7 = 0; __pyx_v_result = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
1187:
1188: if take_last:
/* "lib.pyx":1188 * cdef ndarray[uint8_t] result = np.zeros(n, dtype=np.uint8) * * if take_last: #<<<<<<<<<<<<<<* for i from n > i >= 0: * row = values[i] */ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_take_last); if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (__pyx_t_8) {
1189: for i from n > i >= 0:
/* "lib.pyx":1189
*
* if take_last:
* for i from n > i >= 0: # <<<<<<<<<<<<<<
* row = values[i]
*
*/
for (__pyx_v_i = __pyx_v_n-1; __pyx_v_i >= 0; __pyx_v_i--) {
1190: row = values[i]
/* "lib.pyx":1190
* if take_last:
* for i from n > i >= 0:
* row = values[i] # <<<<<<<<<<<<<<
*
* if row in seen:
*/
__pyx_t_2 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_2 < 0) {
__pyx_t_2 += __pyx_pybuffernd_values.diminfo[0].shape;
if (unlikely(__pyx_t_2 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_2 >= __pyx_pybuffernd_values.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__Pyx_XDECREF(__pyx_v_row);
__pyx_v_row = __pyx_t_6;
__pyx_t_6 = 0;
1191:
1192: if row in seen:
/* "lib.pyx":1192
* row = values[i]
*
* if row in seen: # <<<<<<<<<<<<<<
* result[i] = 1
* else:
*/
__pyx_t_8 = (__Pyx_PyDict_Contains(__pyx_v_row, ((PyObject *)__pyx_v_seen), Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_8) {
1193: result[i] = 1
/* "lib.pyx":1193
*
* if row in seen:
* result[i] = 1 # <<<<<<<<<<<<<<
* else:
* seen[row] = None
*/
__pyx_t_10 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_10 < 0) {
__pyx_t_10 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_10 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_10 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_result.diminfo[0].strides) = 1;
goto __pyx_L6;
}
/*else*/ {
1194: else:
1195: seen[row] = None
/* "lib.pyx":1195
* result[i] = 1
* else:
* seen[row] = None # <<<<<<<<<<<<<<
* result[i] = 0
* else:
*/
if (PyDict_SetItem(((PyObject *)__pyx_v_seen), __pyx_v_row, Py_None) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1196: result[i] = 0
/* "lib.pyx":1196
* else:
* seen[row] = None
* result[i] = 0 # <<<<<<<<<<<<<<
* else:
* for i from 0 <= i < n:
*/
__pyx_t_11 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_11 < 0) {
__pyx_t_11 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_11 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_11 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_11, __pyx_pybuffernd_result.diminfo[0].strides) = 0;
}
__pyx_L6:;
}
goto __pyx_L3;
}
/*else*/ {
1197: else:
1198: for i from 0 <= i < n:
/* "lib.pyx":1198
* result[i] = 0
* else:
* for i from 0 <= i < n: # <<<<<<<<<<<<<<
* row = values[i]
* if row in seen:
*/
__pyx_t_12 = __pyx_v_n;
for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_12; __pyx_v_i++) {
1199: row = values[i]
/* "lib.pyx":1199
* else:
* for i from 0 <= i < n:
* row = values[i] # <<<<<<<<<<<<<<
* if row in seen:
* result[i] = 1
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_values.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_values.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_values.diminfo[0].strides);
__Pyx_INCREF((PyObject*)__pyx_t_6);
__Pyx_XDECREF(__pyx_v_row);
__pyx_v_row = __pyx_t_6;
__pyx_t_6 = 0;
1200: if row in seen:
/* "lib.pyx":1200
* for i from 0 <= i < n:
* row = values[i]
* if row in seen: # <<<<<<<<<<<<<<
* result[i] = 1
* else:
*/
__pyx_t_8 = (__Pyx_PyDict_Contains(__pyx_v_row, ((PyObject *)__pyx_v_seen), Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_8) {
1201: result[i] = 1
/* "lib.pyx":1201
* row = values[i]
* if row in seen:
* result[i] = 1 # <<<<<<<<<<<<<<
* else:
* seen[row] = None
*/
__pyx_t_14 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_14 < 0) {
__pyx_t_14 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_14 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_result.diminfo[0].strides) = 1;
goto __pyx_L9;
}
/*else*/ {
1202: else:
1203: seen[row] = None
/* "lib.pyx":1203
* result[i] = 1
* else:
* seen[row] = None # <<<<<<<<<<<<<<
* result[i] = 0
*
*/
if (PyDict_SetItem(((PyObject *)__pyx_v_seen), __pyx_v_row, Py_None) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1204: result[i] = 0
/* "lib.pyx":1204
* else:
* seen[row] = None
* result[i] = 0 # <<<<<<<<<<<<<<
*
* return result.view(np.bool_)
*/
__pyx_t_15 = __pyx_v_i;
__pyx_t_9 = -1;
if (__pyx_t_15 < 0) {
__pyx_t_15 += __pyx_pybuffernd_result.diminfo[0].shape;
if (unlikely(__pyx_t_15 < 0)) __pyx_t_9 = 0;
} else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_9 = 0;
if (unlikely(__pyx_t_9 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_9);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_result.diminfo[0].strides) = 0;
}
__pyx_L9:;
}
}
__pyx_L3:;
1205:
1206: return result.view(np.bool_)
/* "lib.pyx":1206 * result[i] = 0 * * return result.view(np.bool_) #<<<<<<<<<<<<<<* * def generate_slices(ndarray[int64_t] labels, Py_ssize_t ngroups): */ __Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__view); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__bool_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.duplicated", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_seen); __Pyx_XDECREF(__pyx_v_row); __Pyx_XDECREF((PyObject *)__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_99generate_slices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_99generate_slices = {__Pyx_NAMESTR("generate_slices"), (PyCFunction)__pyx_pw_3lib_99generate_slices, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_99generate_slices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyArrayObject *__pyx_v_labels = 0; Py_ssize_t __pyx_v_ngroups; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("generate_slices (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__labels,&__pyx_n_s__ngroups,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ngroups)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("generate_slices", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "generate_slices")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_labels = ((PyArrayObject *)values[0]); __pyx_v_ngroups = __Pyx_PyIndex_AsSsize_t(values[1]); if (unlikely((__pyx_v_ngroups == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("generate_slices", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.generate_slices", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_98generate_slices(__pyx_self, __pyx_v_labels, __pyx_v_ngroups); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1207:
1208: def generate_slices(ndarray[int64_t] labels, Py_ssize_t ngroups):
/* "lib.pyx":1208 * return result.view(np.bool_) * * def generate_slices(ndarray[int64_t] labels, Py_ssize_t ngroups): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, group_size, n, lab, start */ static PyObject *__pyx_pf_3lib_98generate_slices(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_labels, Py_ssize_t __pyx_v_ngroups) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_group_size; Py_ssize_t __pyx_v_n; Py_ssize_t __pyx_v_lab; Py_ssize_t __pyx_v_start; PyArrayObject *__pyx_v_starts = 0; PyObject *__pyx_v_ends = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_labels; __Pyx_Buffer __pyx_pybuffer_labels; __Pyx_LocalBuf_ND __pyx_pybuffernd_starts; __Pyx_Buffer __pyx_pybuffer_starts; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("generate_slices", 0); __pyx_pybuffer_starts.pybuffer.buf = NULL; __pyx_pybuffer_starts.refcount = 0; __pyx_pybuffernd_starts.data = NULL; __pyx_pybuffernd_starts.rcbuffer = &__pyx_pybuffer_starts; __pyx_pybuffer_labels.pybuffer.buf = NULL; __pyx_pybuffer_labels.refcount = 0; __pyx_pybuffernd_labels.data = NULL; __pyx_pybuffernd_labels.rcbuffer = &__pyx_pybuffer_labels; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labels.rcbuffer->pybuffer, (PyObject*)__pyx_v_labels, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_labels.diminfo[0].strides = __pyx_pybuffernd_labels.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labels.diminfo[0].shape = __pyx_pybuffernd_labels.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1208 * return result.view(np.bool_) * * def generate_slices(ndarray[int64_t] labels, Py_ssize_t ngroups): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, group_size, n, lab, start */ __pyx_k_tuple_194 = PyTuple_New(10); if (unlikely(!__pyx_k_tuple_194)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_194); __Pyx_INCREF(((PyObject *)__pyx_n_s__labels)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 0, ((PyObject *)__pyx_n_s__labels)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__labels)); __Pyx_INCREF(((PyObject *)__pyx_n_s__ngroups)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 1, ((PyObject *)__pyx_n_s__ngroups)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ngroups)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 2, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__group_size)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 3, ((PyObject *)__pyx_n_s__group_size)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__group_size)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 4, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__lab)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 5, ((PyObject *)__pyx_n_s__lab)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lab)); __Pyx_INCREF(((PyObject *)__pyx_n_s__start)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 6, ((PyObject *)__pyx_n_s__start)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__start)); __Pyx_INCREF(((PyObject *)__pyx_n_s__slobj)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 7, ((PyObject *)__pyx_n_s__slobj)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__slobj)); __Pyx_INCREF(((PyObject *)__pyx_n_s__starts)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 8, ((PyObject *)__pyx_n_s__starts)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__starts)); __Pyx_INCREF(((PyObject *)__pyx_n_s__ends)); PyTuple_SET_ITEM(__pyx_k_tuple_194, 9, ((PyObject *)__pyx_n_s__ends)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ends)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_194)); /* "lib.pyx":1208 * return result.view(np.bool_) * * def generate_slices(ndarray[int64_t] labels, Py_ssize_t ngroups): #<<<<<<<<<<<<<<* cdef: * Py_ssize_t i, group_size, n, lab, start */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_99generate_slices, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__generate_slices, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_195 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__generate_slices, 1208, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_195)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1209: cdef:
1210: Py_ssize_t i, group_size, n, lab, start
1211: object slobj
1212: ndarray[int64_t] starts
1213:
1214: n = len(labels)
/* "lib.pyx":1214 * ndarray[int64_t] starts * * n = len(labels) #<<<<<<<<<<<<<<* * starts = np.zeros(ngroups, dtype=np.int64) */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_labels)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
1215:
1216: starts = np.zeros(ngroups, dtype=np.int64)
/* "lib.pyx":1216 * n = len(labels) * * starts = np.zeros(ngroups, dtype=np.int64) #<<<<<<<<<<<<<<* ends = np.zeros(ngroups, dtype=np.int64) * */ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_ngroups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_7 = ((PyArrayObject *)__pyx_t_6); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_starts.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_starts.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack); if (unlikely(__pyx_t_8<0)) { PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_starts.rcbuffer->pybuffer, (PyObject*)__pyx_v_starts, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11); } } __pyx_pybuffernd_starts.diminfo[0].strides = __pyx_pybuffernd_starts.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_starts.diminfo[0].shape = __pyx_pybuffernd_starts.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_8<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_7 = 0; __pyx_v_starts = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
1217: ends = np.zeros(ngroups, dtype=np.int64)
/* "lib.pyx":1217 * * starts = np.zeros(ngroups, dtype=np.int64) * ends = np.zeros(ngroups, dtype=np.int64) #<<<<<<<<<<<<<<* * start = 0 */ __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__zeros); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_ngroups); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_6)); __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__int64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; __pyx_v_ends = __pyx_t_5; __pyx_t_5 = 0;
1218:
1219: start = 0
/* "lib.pyx":1219 * ends = np.zeros(ngroups, dtype=np.int64) * * start = 0 #<<<<<<<<<<<<<<* group_size = 0 * for i in range(n): */ __pyx_v_start = 0;
1220: group_size = 0
/* "lib.pyx":1220 * * start = 0 * group_size = 0 #<<<<<<<<<<<<<<* for i in range(n): * group_size += 1 */ __pyx_v_group_size = 0;
1221: for i in range(n):
/* "lib.pyx":1221 * start = 0 * group_size = 0 * for i in range(n): #<<<<<<<<<<<<<<* group_size += 1 * lab = labels[i] */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_12 = 0; __pyx_t_12<__pyx_t_1; __pyx_t_12+=1) { __pyx_v_i = __pyx_t_12;
1222: group_size += 1
/* "lib.pyx":1222
* group_size = 0
* for i in range(n):
* group_size += 1 # <<<<<<<<<<<<<<
* lab = labels[i]
* if i == n - 1 or lab != labels[i + 1]:
*/
__pyx_v_group_size = (__pyx_v_group_size + 1);
1223: lab = labels[i]
/* "lib.pyx":1223
* for i in range(n):
* group_size += 1
* lab = labels[i] # <<<<<<<<<<<<<<
* if i == n - 1 or lab != labels[i + 1]:
* starts[lab] = start
*/
__pyx_t_13 = __pyx_v_i;
__pyx_t_8 = -1;
if (__pyx_t_13 < 0) {
__pyx_t_13 += __pyx_pybuffernd_labels.diminfo[0].shape;
if (unlikely(__pyx_t_13 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_labels.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_v_lab = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_labels.diminfo[0].strides));
1224: if i == n - 1 or lab != labels[i + 1]:
/* "lib.pyx":1224
* group_size += 1
* lab = labels[i]
* if i == n - 1 or lab != labels[i + 1]: # <<<<<<<<<<<<<<
* starts[lab] = start
* ends[lab] = start + group_size
*/
__pyx_t_14 = (__pyx_v_i == (__pyx_v_n - 1));
if (!__pyx_t_14) {
__pyx_t_15 = (__pyx_v_i + 1);
__pyx_t_8 = -1;
if (__pyx_t_15 < 0) {
__pyx_t_15 += __pyx_pybuffernd_labels.diminfo[0].shape;
if (unlikely(__pyx_t_15 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_labels.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_16 = (__pyx_v_lab != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_labels.diminfo[0].strides)));
__pyx_t_17 = __pyx_t_16;
} else {
__pyx_t_17 = __pyx_t_14;
}
if (__pyx_t_17) {
1225: starts[lab] = start
/* "lib.pyx":1225
* lab = labels[i]
* if i == n - 1 or lab != labels[i + 1]:
* starts[lab] = start # <<<<<<<<<<<<<<
* ends[lab] = start + group_size
* start += group_size
*/
__pyx_t_18 = __pyx_v_lab;
__pyx_t_8 = -1;
if (__pyx_t_18 < 0) {
__pyx_t_18 += __pyx_pybuffernd_starts.diminfo[0].shape;
if (unlikely(__pyx_t_18 < 0)) __pyx_t_8 = 0;
} else if (unlikely(__pyx_t_18 >= __pyx_pybuffernd_starts.diminfo[0].shape)) __pyx_t_8 = 0;
if (unlikely(__pyx_t_8 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_8);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_starts.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_starts.diminfo[0].strides) = __pyx_v_start;
1226: ends[lab] = start + group_size
/* "lib.pyx":1226
* if i == n - 1 or lab != labels[i + 1]:
* starts[lab] = start
* ends[lab] = start + group_size # <<<<<<<<<<<<<<
* start += group_size
* group_size = 0
*/
__pyx_t_5 = PyInt_FromSsize_t((__pyx_v_start + __pyx_v_group_size)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
if (__Pyx_SetItemInt(__pyx_v_ends, __pyx_v_lab, __pyx_t_5, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1227: start += group_size
/* "lib.pyx":1227
* starts[lab] = start
* ends[lab] = start + group_size
* start += group_size # <<<<<<<<<<<<<<
* group_size = 0
*
*/
__pyx_v_start = (__pyx_v_start + __pyx_v_group_size);
1228: group_size = 0
/* "lib.pyx":1228
* ends[lab] = start + group_size
* start += group_size
* group_size = 0 # <<<<<<<<<<<<<<
*
* return starts, ends
*/
__pyx_v_group_size = 0;
goto __pyx_L5;
}
__pyx_L5:;
}
1229:
1230: return starts, ends
/* "lib.pyx":1230 * group_size = 0 * * return starts, ends #<<<<<<<<<<<<<<* * */ __Pyx_XDECREF(__pyx_r); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_v_starts)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_starts)); __Pyx_GIVEREF(((PyObject *)__pyx_v_starts)); __Pyx_INCREF(__pyx_v_ends); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ends); __Pyx_GIVEREF(__pyx_v_ends); __pyx_r = ((PyObject *)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_starts.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.generate_slices", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_starts.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF((PyObject *)__pyx_v_starts); __Pyx_XDECREF(__pyx_v_ends); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_3lib_101indices_fast(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_3lib_101indices_fast = {__Pyx_NAMESTR("indices_fast"), (PyCFunction)__pyx_pw_3lib_101indices_fast, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)}; static PyObject *__pyx_pw_3lib_101indices_fast(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_index = 0; PyArrayObject *__pyx_v_labels = 0; PyObject *__pyx_v_keys = 0; PyObject *__pyx_v_sorted_labels = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("indices_fast (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__labels,&__pyx_n_s__keys,&__pyx_n_s__sorted_labels,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("indices_fast", 1, 4, 4, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__keys)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("indices_fast", 1, 4, 4, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__sorted_labels)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("indices_fast", 1, 4, 4, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "indices_fast")<0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_index = values[0]; __pyx_v_labels = ((PyArrayObject *)values[1]); __pyx_v_keys = ((PyObject*)values[2]); __pyx_v_sorted_labels = ((PyObject*)values[3]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("indices_fast", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;} __pyx_L3_error:; __Pyx_AddTraceback("lib.indices_fast", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_keys), (&PyList_Type), 1, "keys", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sorted_labels), (&PyList_Type), 1, "sorted_labels", 1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_r = __pyx_pf_3lib_100indices_fast(__pyx_self, __pyx_v_index, __pyx_v_labels, __pyx_v_keys, __pyx_v_sorted_labels); goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
1231:
1232:
1233: def indices_fast(object index, ndarray[int64_t] labels, list keys,
/* "lib.pyx":1233 * * * def indices_fast(object index, ndarray[int64_t] labels, list keys, #<<<<<<<<<<<<<<* list sorted_labels): * cdef: */ static PyObject *__pyx_pf_3lib_100indices_fast(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index, PyArrayObject *__pyx_v_labels, PyObject *__pyx_v_keys, PyObject *__pyx_v_sorted_labels) { Py_ssize_t __pyx_v_i; Py_ssize_t __pyx_v_j; Py_ssize_t __pyx_v_k; Py_ssize_t __pyx_v_lab; Py_ssize_t __pyx_v_cur; Py_ssize_t __pyx_v_start; Py_ssize_t __pyx_v_n; PyObject *__pyx_v_result = 0; PyObject *__pyx_v_tup = 0; PyObject *__pyx_v_val = NULL; __Pyx_LocalBuf_ND __pyx_pybuffernd_labels; __Pyx_Buffer __pyx_pybuffer_labels; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("indices_fast", 0); __pyx_pybuffer_labels.pybuffer.buf = NULL; __pyx_pybuffer_labels.refcount = 0; __pyx_pybuffernd_labels.data = NULL; __pyx_pybuffernd_labels.rcbuffer = &__pyx_pybuffer_labels; { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labels.rcbuffer->pybuffer, (PyObject*)__pyx_v_labels, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_pybuffernd_labels.diminfo[0].strides = __pyx_pybuffernd_labels.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labels.diminfo[0].shape = __pyx_pybuffernd_labels.rcbuffer->pybuffer.shape[0]; /* "lib.pyx":1233 * * * def indices_fast(object index, ndarray[int64_t] labels, list keys, #<<<<<<<<<<<<<<* list sorted_labels): * cdef: */ __pyx_k_tuple_196 = PyTuple_New(14); if (unlikely(!__pyx_k_tuple_196)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_196); __Pyx_INCREF(((PyObject *)__pyx_n_s__index)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 0, ((PyObject *)__pyx_n_s__index)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__index)); __Pyx_INCREF(((PyObject *)__pyx_n_s__labels)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 1, ((PyObject *)__pyx_n_s__labels)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__labels)); __Pyx_INCREF(((PyObject *)__pyx_n_s__keys)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 2, ((PyObject *)__pyx_n_s__keys)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__keys)); __Pyx_INCREF(((PyObject *)__pyx_n_s__sorted_labels)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 3, ((PyObject *)__pyx_n_s__sorted_labels)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__sorted_labels)); __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 4, ((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 5, ((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_INCREF(((PyObject *)__pyx_n_s__k)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 6, ((PyObject *)__pyx_n_s__k)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__k)); __Pyx_INCREF(((PyObject *)__pyx_n_s__lab)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 7, ((PyObject *)__pyx_n_s__lab)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__lab)); __Pyx_INCREF(((PyObject *)__pyx_n_s__cur)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 8, ((PyObject *)__pyx_n_s__cur)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__cur)); __Pyx_INCREF(((PyObject *)__pyx_n_s__start)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 9, ((PyObject *)__pyx_n_s__start)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__start)); __Pyx_INCREF(((PyObject *)__pyx_n_s__n)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 10, ((PyObject *)__pyx_n_s__n)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__n)); __Pyx_INCREF(((PyObject *)__pyx_n_s__result)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 11, ((PyObject *)__pyx_n_s__result)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__result)); __Pyx_INCREF(((PyObject *)__pyx_n_s__tup)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 12, ((PyObject *)__pyx_n_s__tup)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__tup)); __Pyx_INCREF(((PyObject *)__pyx_n_s__val)); PyTuple_SET_ITEM(__pyx_k_tuple_196, 13, ((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_n_s__val)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_196)); /* "lib.pyx":1233 * * * def indices_fast(object index, ndarray[int64_t] labels, list keys, #<<<<<<<<<<<<<<* list sorted_labels): * cdef: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_3lib_101indices_fast, NULL, __pyx_n_s__lib); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); if (PyObject_SetAttr(__pyx_m, __pyx_n_s__indices_fast, __pyx_t_2)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_k_codeobj_197 = (PyObject*)__Pyx_PyCode_New(4, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_196, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_99, __pyx_n_s__indices_fast, 1233, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_197)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1234: list sorted_labels):
1235: cdef:
1236: Py_ssize_t i, j, k, lab, cur, start, n = len(labels)
/* "lib.pyx":1236 * list sorted_labels): * cdef: * Py_ssize_t i, j, k, lab, cur, start, n = len(labels) #<<<<<<<<<<<<<<* dict result = {} * object tup */ __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_labels)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_n = __pyx_t_1;
1237: dict result = {}
/* "lib.pyx":1237
* cdef:
* Py_ssize_t i, j, k, lab, cur, start, n = len(labels)
* dict result = {} # <<<<<<<<<<<<<<
* object tup
*
*/
__pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_v_result = __pyx_t_2;
__pyx_t_2 = 0;
1238: object tup
1239:
1240: k = len(keys)
/* "lib.pyx":1240 * object tup * * k = len(keys) #<<<<<<<<<<<<<<* * if n == 0: */ if (unlikely(((PyObject *)__pyx_v_keys) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_1 = PyList_GET_SIZE(((PyObject *)__pyx_v_keys)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_k = __pyx_t_1;
1241:
1242: if n == 0:
/* "lib.pyx":1242 * k = len(keys) * * if n == 0: #<<<<<<<<<<<<<<* return result * */ __pyx_t_3 = (__pyx_v_n == 0); if (__pyx_t_3) {
1243: return result
/* "lib.pyx":1243
*
* if n == 0:
* return result # <<<<<<<<<<<<<<
*
* start = 0
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_result));
__pyx_r = ((PyObject *)__pyx_v_result);
goto __pyx_L0;
goto __pyx_L3;
}
__pyx_L3:;
1244:
1245: start = 0
/* "lib.pyx":1245 * return result * * start = 0 #<<<<<<<<<<<<<<* cur = labels[0] * for i in range(1, n): */ __pyx_v_start = 0;
1246: cur = labels[0]
/* "lib.pyx":1246 * * start = 0 * cur = labels[0] #<<<<<<<<<<<<<<* for i in range(1, n): * lab = labels[i] */ __pyx_t_4 = 0; __pyx_t_5 = -1; if (__pyx_t_4<0) { __pyx_t_4 += __pyx_pybuffernd_labels.diminfo[0].shape; if (unlikely(__pyx_t_4<0)) __pyx_t_5 = 0; } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_labels.diminfo[0].shape)) __pyx_t_5 = 0; if (unlikely(__pyx_t_5 != -1)) { __Pyx_RaiseBufferIndexError(__pyx_t_5); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_labels.diminfo[0].strides));
1247: for i in range(1, n):
/* "lib.pyx":1247 * start = 0 * cur = labels[0] * for i in range(1, n): #<<<<<<<<<<<<<<* lab = labels[i] * */ __pyx_t_1 = __pyx_v_n; for (__pyx_t_6 = 1; __pyx_t_6<__pyx_t_1; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6;
1248: lab = labels[i]
/* "lib.pyx":1248
* cur = labels[0]
* for i in range(1, n):
* lab = labels[i] # <<<<<<<<<<<<<<
*
* if lab != cur:
*/
__pyx_t_7 = __pyx_v_i;
__pyx_t_5 = -1;
if (__pyx_t_7 < 0) {
__pyx_t_7 += __pyx_pybuffernd_labels.diminfo[0].shape;
if (unlikely(__pyx_t_7 < 0)) __pyx_t_5 = 0;
} else if (unlikely(__pyx_t_7 >= __pyx_pybuffernd_labels.diminfo[0].shape)) __pyx_t_5 = 0;
if (unlikely(__pyx_t_5 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_5);
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_v_lab = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labels.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_labels.diminfo[0].strides));
1249:
1250: if lab != cur:
/* "lib.pyx":1250
* lab = labels[i]
*
* if lab != cur: # <<<<<<<<<<<<<<
* if lab != -1:
* tup = PyTuple_New(k)
*/
__pyx_t_3 = (__pyx_v_lab != __pyx_v_cur);
if (__pyx_t_3) {
1251: if lab != -1:
/* "lib.pyx":1251
*
* if lab != cur:
* if lab != -1: # <<<<<<<<<<<<<<
* tup = PyTuple_New(k)
* for j in range(k):
*/
__pyx_t_3 = (__pyx_v_lab != -1);
if (__pyx_t_3) {
1252: tup = PyTuple_New(k)
/* "lib.pyx":1252
* if lab != cur:
* if lab != -1:
* tup = PyTuple_New(k) # <<<<<<<<<<<<<<
* for j in range(k):
* val = util.get_value_at(keys[j],
*/
__pyx_t_2 = ((PyObject *)PyTuple_New(__pyx_v_k)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_v_tup);
__pyx_v_tup = __pyx_t_2;
__pyx_t_2 = 0;
1253: for j in range(k):
/* "lib.pyx":1253
* if lab != -1:
* tup = PyTuple_New(k)
* for j in range(k): # <<<<<<<<<<<<<<
* val = util.get_value_at(keys[j],
* sorted_labels[j][i-1])
*/
__pyx_t_8 = __pyx_v_k;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_j = __pyx_t_9;
1254: val = util.get_value_at(keys[j],
/* "lib.pyx":1254
* tup = PyTuple_New(k)
* for j in range(k):
* val = util.get_value_at(keys[j], # <<<<<<<<<<<<<<
* sorted_labels[j][i-1])
* PyTuple_SET_ITEM(tup, j, val)
*/
if (unlikely(((PyObject *)__pyx_v_keys) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_keys), __pyx_v_j, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1255: sorted_labels[j][i-1])
/* "lib.pyx":1255
* for j in range(k):
* val = util.get_value_at(keys[j],
* sorted_labels[j][i-1]) # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, j, val)
* Py_INCREF(val)
*/
if (unlikely(((PyObject *)__pyx_v_sorted_labels) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_10 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_sorted_labels), __pyx_v_j, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_10) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = (__pyx_v_i - 1);
__pyx_t_12 = __Pyx_GetItemInt(__pyx_t_10, __pyx_t_11, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_12) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = __pyx_f_4util_get_value_at(((PyArrayObject *)__pyx_t_2), __pyx_t_12); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_10;
__pyx_t_10 = 0;
1256: PyTuple_SET_ITEM(tup, j, val)
/* "lib.pyx":1256
* val = util.get_value_at(keys[j],
* sorted_labels[j][i-1])
* PyTuple_SET_ITEM(tup, j, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
*
*/
PyTuple_SET_ITEM(__pyx_v_tup, __pyx_v_j, __pyx_v_val);
1257: Py_INCREF(val)
/* "lib.pyx":1257
* sorted_labels[j][i-1])
* PyTuple_SET_ITEM(tup, j, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
*
* result[tup] = index[start:i]
*/
Py_INCREF(__pyx_v_val);
}
1258:
1259: result[tup] = index[start:i]
/* "lib.pyx":1259
* Py_INCREF(val)
*
* result[tup] = index[start:i] # <<<<<<<<<<<<<<
* start = i
* cur = lab
*/
__pyx_t_10 = __Pyx_PySequence_GetSlice(__pyx_v_index, __pyx_v_start, __pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_tup, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L7;
}
__pyx_L7:;
1260: start = i
/* "lib.pyx":1260
*
* result[tup] = index[start:i]
* start = i # <<<<<<<<<<<<<<
* cur = lab
*
*/
__pyx_v_start = __pyx_v_i;
goto __pyx_L6;
}
__pyx_L6:;
1261: cur = lab
/* "lib.pyx":1261
* result[tup] = index[start:i]
* start = i
* cur = lab # <<<<<<<<<<<<<<
*
* tup = PyTuple_New(k)
*/
__pyx_v_cur = __pyx_v_lab;
}
1262:
1263: tup = PyTuple_New(k)
/* "lib.pyx":1263 * cur = lab * * tup = PyTuple_New(k) #<<<<<<<<<<<<<<* for j in range(k): * val = util.get_value_at(keys[j], */ __pyx_t_10 = ((PyObject *)PyTuple_New(__pyx_v_k)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __Pyx_XDECREF(__pyx_v_tup); __pyx_v_tup = __pyx_t_10; __pyx_t_10 = 0;
1264: for j in range(k):
/* "lib.pyx":1264 * * tup = PyTuple_New(k) * for j in range(k): #<<<<<<<<<<<<<<* val = util.get_value_at(keys[j], * sorted_labels[j][n - 1]) */ __pyx_t_1 = __pyx_v_k; for (__pyx_t_6 = 0; __pyx_t_6<__pyx_t_1; __pyx_t_6+=1) { __pyx_v_j = __pyx_t_6;
1265: val = util.get_value_at(keys[j],
/* "lib.pyx":1265
* tup = PyTuple_New(k)
* for j in range(k):
* val = util.get_value_at(keys[j], # <<<<<<<<<<<<<<
* sorted_labels[j][n - 1])
* PyTuple_SET_ITEM(tup, j, val)
*/
if (unlikely(((PyObject *)__pyx_v_keys) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_10 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_keys), __pyx_v_j, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_10) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1266: sorted_labels[j][n - 1])
/* "lib.pyx":1266
* for j in range(k):
* val = util.get_value_at(keys[j],
* sorted_labels[j][n - 1]) # <<<<<<<<<<<<<<
* PyTuple_SET_ITEM(tup, j, val)
* Py_INCREF(val)
*/
if (unlikely(((PyObject *)__pyx_v_sorted_labels) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
{__pyx_filename = __pyx_f[2]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_12 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_sorted_labels), __pyx_v_j, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_12) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_8 = (__pyx_v_n - 1);
__pyx_t_2 = __Pyx_GetItemInt(__pyx_t_12, __pyx_t_8, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_t_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = __pyx_f_4util_get_value_at(((PyArrayObject *)__pyx_t_10), __pyx_t_2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_v_val);
__pyx_v_val = __pyx_t_12;
__pyx_t_12 = 0;
1267: PyTuple_SET_ITEM(tup, j, val)
/* "lib.pyx":1267
* val = util.get_value_at(keys[j],
* sorted_labels[j][n - 1])
* PyTuple_SET_ITEM(tup, j, val) # <<<<<<<<<<<<<<
* Py_INCREF(val)
* result[tup] = index[start:]
*/
PyTuple_SET_ITEM(__pyx_v_tup, __pyx_v_j, __pyx_v_val);
1268: Py_INCREF(val)
/* "lib.pyx":1268
* sorted_labels[j][n - 1])
* PyTuple_SET_ITEM(tup, j, val)
* Py_INCREF(val) # <<<<<<<<<<<<<<
* result[tup] = index[start:]
*
*/
Py_INCREF(__pyx_v_val);
}
1269: result[tup] = index[start:]
/* "lib.pyx":1269 * PyTuple_SET_ITEM(tup, j, val) * Py_INCREF(val) * result[tup] = index[start:] #<<<<<<<<<<<<<<* * return result */ __pyx_t_12 = __Pyx_PySequence_GetSlice(__pyx_v_index, __pyx_v_start, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_tup, __pyx_t_12)<0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
1270:
1271: return result
/* "lib.pyx":1271 * result[tup] = index[start:] * * return result #<<<<<<<<<<<<<<* * include "reduce.pyx" */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_result)); __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_12); { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} __Pyx_AddTraceback("lib.indices_fast", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; goto __pyx_L2; __pyx_L0:; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labels.rcbuffer->pybuffer); __pyx_L2:; __Pyx_XDECREF(__pyx_v_result); __Pyx_XDECREF(__pyx_v_tup); __Pyx_XDECREF(__pyx_v_val); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static int __pyx_pw_3lib_7Reducer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_3lib_7Reducer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_arr = 0; PyObject *__pyx_v_f = 0; PyObject *__pyx_v_axis = 0; PyObject *__pyx_v_dummy = 0; PyObject *__pyx_v_labels = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arr,&__pyx_n_s__f,&__pyx_n_s__axis,&__pyx_n_s__dummy,&__pyx_n_s__labels,0}; PyObject* values[5] = {0,0,0,0,0}; values[2] = ((PyObject *)__pyx_int_1);
1272:
1273: include "reduce.pyx"
1274: include "properties.pyx"
1275: include "inference.pyx"