Generated by Cython 3.0.12
Yellow lines hint at Python interaction.
Click on a line that starts with a "+
" to see the C code that Cython generated for it.
Raw output: _resample.c
+001: # Copyright 2016 Quantopian, Inc.
__pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
002: #
003: # Licensed under the Apache License, Version 2.0 (the "License");
004: # you may not use this file except in compliance with the License.
005: # You may obtain a copy of the License at
006: #
007: # http://www.apache.org/licenses/LICENSE-2.0
008: #
009: # Unless required by applicable law or agreed to in writing, software
010: # distributed under the License is distributed on an "AS IS" BASIS,
011: # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: # See the License for the specific language governing permissions and
013: # limitations under the License.
014: from cython cimport boundscheck, wraparound
+015: from numpy import finfo, float64, nan, isnan
__pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_finfo); __Pyx_GIVEREF(__pyx_n_s_finfo); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_finfo)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_float64); __Pyx_GIVEREF(__pyx_n_s_float64); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_float64)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_nan); __Pyx_GIVEREF(__pyx_n_s_nan); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 2, __pyx_n_s_nan)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_isnan); __Pyx_GIVEREF(__pyx_n_s_isnan); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 3, __pyx_n_s_isnan)) __PYX_ERR(0, 15, __pyx_L1_error); __pyx_t_4 = __Pyx_Import(__pyx_n_s_numpy, __pyx_t_7, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_finfo); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_finfo, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_float64, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_nan); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_nan, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_isnan); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_isnan, __pyx_t_7) < 0) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
016: from numpy cimport intp_t, float64_t, uint32_t
017:
018: @boundscheck(False)
019: @wraparound(False)
+020: cpdef void _minute_to_session_open(intp_t[:] close_locs,
static PyObject *__pyx_pw_7zipline_4data_9_resample_1_minute_to_session_open(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static void __pyx_f_7zipline_4data_9_resample__minute_to_session_open(__Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out, CYTHON_UNUSED int __pyx_skip_dispatch) { __pyx_t_5numpy_intp_t __pyx_v_i; __pyx_t_5numpy_intp_t __pyx_v_close_loc; __pyx_t_5numpy_intp_t __pyx_v_loc; __pyx_t_5numpy_float64_t __pyx_v_val; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__11) __Pyx_TraceCall("_minute_to_session_open", __pyx_f[0], 20, 0, __PYX_ERR(0, 20, __pyx_L1_error)); /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_open", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_TraceReturn(Py_None, 0); __Pyx_RefNannyFinishContext(); } /* Python wrapper */ static PyObject *__pyx_pw_7zipline_4data_9_resample_1_minute_to_session_open(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_7zipline_4data_9_resample_1_minute_to_session_open = {"_minute_to_session_open", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7zipline_4data_9_resample_1_minute_to_session_open, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7zipline_4data_9_resample_1_minute_to_session_open(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { __Pyx_memviewslice __pyx_v_close_locs = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_minute_to_session_open (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_close_locs,&__pyx_n_s_data,&__pyx_n_s_out,0}; PyObject* values[3] = {0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_close_locs)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 20, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 20, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_open", 1, 3, 3, 1); __PYX_ERR(0, 20, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_out)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 20, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_open", 1, 3, 3, 2); __PYX_ERR(0, 20, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_minute_to_session_open") < 0)) __PYX_ERR(0, 20, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_close_locs = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_intp_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_close_locs.memview)) __PYX_ERR(0, 20, __pyx_L3_error) __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_data.memview)) __PYX_ERR(0, 21, __pyx_L3_error) __pyx_v_out = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_out.memview)) __PYX_ERR(0, 22, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_minute_to_session_open", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 20, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_open", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7zipline_4data_9_resample__minute_to_session_open(__pyx_self, __pyx_v_close_locs, __pyx_v_data, __pyx_v_out); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_4data_9_resample__minute_to_session_open(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__11) __Pyx_TraceCall("_minute_to_session_open (wrapper)", __pyx_f[0], 20, 0, __PYX_ERR(0, 20, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_v_close_locs.memview)) { __Pyx_RaiseUnboundLocalError("close_locs"); __PYX_ERR(0, 20, __pyx_L1_error) } if (unlikely(!__pyx_v_data.memview)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 20, __pyx_L1_error) } if (unlikely(!__pyx_v_out.memview)) { __Pyx_RaiseUnboundLocalError("out"); __PYX_ERR(0, 20, __pyx_L1_error) } __pyx_f_7zipline_4data_9_resample__minute_to_session_open(__pyx_v_close_locs, __pyx_v_data, __pyx_v_out, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 20, __pyx_L1_error) __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_open", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__27 = PyTuple_Pack(3, __pyx_n_s_close_locs, __pyx_n_s_data, __pyx_n_s_out); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); /* … */ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7zipline_4data_9_resample_1_minute_to_session_open, 0, __pyx_n_s_minute_to_session_open, NULL, __pyx_n_s_zipline_data__resample, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minute_to_session_open, __pyx_t_4) < 0) __PYX_ERR(0, 20, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_zipline_data__resample_pyx, __pyx_n_s_minute_to_session_open, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 20, __pyx_L1_error)
021: float64_t[:] data,
022: float64_t[:] out):
+023: cdef intp_t i, close_loc, loc = 0
__pyx_v_loc = 0;
024: cdef float64_t val
+025: for i, close_loc in enumerate(close_locs):
__pyx_t_1 = 0; if (unlikely(((PyObject *) __pyx_v_close_locs.memview) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); __PYX_ERR(0, 25, __pyx_L1_error) } __PYX_INC_MEMVIEW(&__pyx_v_close_locs, 1); __pyx_t_2 = __pyx_v_close_locs; __pyx_t_3 = __Pyx_MemoryView_Len(__pyx_t_2); for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5++) { __pyx_t_4 = __pyx_t_5; __pyx_t_6 = __pyx_t_4; __pyx_v_close_loc = (*((__pyx_t_5numpy_intp_t *) ( /* dim=0 */ (__pyx_t_2.data + __pyx_t_6 * __pyx_t_2.strides[0]) ))); /* … */ __pyx_v_i = __pyx_t_1; /* … */ __pyx_t_1 = (__pyx_t_1 + 1);
+026: val = nan
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_nan); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_8 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 26, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_val = __pyx_t_8;
027: # Start by getting the price value at the opening minute of each day.
028: # If the value is NaN, continue looking forward until we either find a
029: # valid value or reach the closing minute, at which point the value is
030: # just kept as a NaN. We increment 'loc' after obtaining the value to
031: # ensure we do not reach an out of bounds index.
+032: while isnan(val) and loc <= close_loc:
while (1) { __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_isnan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyFloat_FromDouble(__pyx_v_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; __pyx_t_13 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_13 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_11}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 32, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_14) { } else { __pyx_t_9 = __pyx_t_14; goto __pyx_L7_bool_binop_done; } __pyx_t_14 = (__pyx_v_loc <= __pyx_v_close_loc); __pyx_t_9 = __pyx_t_14; __pyx_L7_bool_binop_done:; if (!__pyx_t_9) break;
+033: val = data[loc]
__pyx_t_15 = __pyx_v_loc; __pyx_v_val = (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_15 * __pyx_v_data.strides[0]) )));
+034: loc += 1
__pyx_v_loc = (__pyx_v_loc + 1); }
+035: out[i] = val
__pyx_t_15 = __pyx_v_i; *((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_15 * __pyx_v_out.strides[0]) )) = __pyx_v_val;
+036: loc = close_loc + 1
__pyx_v_loc = (__pyx_v_close_loc + 1); } __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
037:
038:
039: @boundscheck(False)
040: @wraparound(False)
+041: cpdef void _minute_to_session_high(intp_t[:] close_locs,
static PyObject *__pyx_pw_7zipline_4data_9_resample_3_minute_to_session_high(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static void __pyx_f_7zipline_4data_9_resample__minute_to_session_high(__Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out, CYTHON_UNUSED int __pyx_skip_dispatch) { __pyx_t_5numpy_intp_t __pyx_v_i; __pyx_t_5numpy_intp_t __pyx_v_close_loc; __pyx_t_5numpy_intp_t __pyx_v_loc; __pyx_t_5numpy_float64_t __pyx_v_val; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__12) __Pyx_TraceCall("_minute_to_session_high", __pyx_f[0], 41, 0, __PYX_ERR(0, 41, __pyx_L1_error)); /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_high", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_TraceReturn(Py_None, 0); __Pyx_RefNannyFinishContext(); } /* Python wrapper */ static PyObject *__pyx_pw_7zipline_4data_9_resample_3_minute_to_session_high(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_7zipline_4data_9_resample_3_minute_to_session_high = {"_minute_to_session_high", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7zipline_4data_9_resample_3_minute_to_session_high, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7zipline_4data_9_resample_3_minute_to_session_high(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { __Pyx_memviewslice __pyx_v_close_locs = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_minute_to_session_high (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_close_locs,&__pyx_n_s_data,&__pyx_n_s_out,0}; PyObject* values[3] = {0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_close_locs)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 41, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 41, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_high", 1, 3, 3, 1); __PYX_ERR(0, 41, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_out)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 41, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_high", 1, 3, 3, 2); __PYX_ERR(0, 41, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_minute_to_session_high") < 0)) __PYX_ERR(0, 41, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_close_locs = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_intp_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_close_locs.memview)) __PYX_ERR(0, 41, __pyx_L3_error) __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_data.memview)) __PYX_ERR(0, 42, __pyx_L3_error) __pyx_v_out = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_out.memview)) __PYX_ERR(0, 43, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_minute_to_session_high", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 41, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_high", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7zipline_4data_9_resample_2_minute_to_session_high(__pyx_self, __pyx_v_close_locs, __pyx_v_data, __pyx_v_out); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_4data_9_resample_2_minute_to_session_high(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__12) __Pyx_TraceCall("_minute_to_session_high (wrapper)", __pyx_f[0], 41, 0, __PYX_ERR(0, 41, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_v_close_locs.memview)) { __Pyx_RaiseUnboundLocalError("close_locs"); __PYX_ERR(0, 41, __pyx_L1_error) } if (unlikely(!__pyx_v_data.memview)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 41, __pyx_L1_error) } if (unlikely(!__pyx_v_out.memview)) { __Pyx_RaiseUnboundLocalError("out"); __PYX_ERR(0, 41, __pyx_L1_error) } __pyx_f_7zipline_4data_9_resample__minute_to_session_high(__pyx_v_close_locs, __pyx_v_data, __pyx_v_out, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 41, __pyx_L1_error) __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_high", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7zipline_4data_9_resample_3_minute_to_session_high, 0, __pyx_n_s_minute_to_session_high, NULL, __pyx_n_s_zipline_data__resample, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minute_to_session_high, __pyx_t_4) < 0) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_zipline_data__resample_pyx, __pyx_n_s_minute_to_session_high, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 41, __pyx_L1_error)
042: float64_t[:] data,
043: float64_t[:] out):
+044: cdef intp_t i, close_loc, loc = 0
__pyx_v_loc = 0;
045: cdef float64_t val
+046: for i, close_loc in enumerate(close_locs):
__pyx_t_1 = 0; if (unlikely(((PyObject *) __pyx_v_close_locs.memview) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); __PYX_ERR(0, 46, __pyx_L1_error) } __PYX_INC_MEMVIEW(&__pyx_v_close_locs, 1); __pyx_t_2 = __pyx_v_close_locs; __pyx_t_3 = __Pyx_MemoryView_Len(__pyx_t_2); for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5++) { __pyx_t_4 = __pyx_t_5; __pyx_t_6 = __pyx_t_4; __pyx_v_close_loc = (*((__pyx_t_5numpy_intp_t *) ( /* dim=0 */ (__pyx_t_2.data + __pyx_t_6 * __pyx_t_2.strides[0]) ))); /* … */ __pyx_v_i = __pyx_t_1; /* … */ __pyx_t_1 = (__pyx_t_1 + 1);
+047: val = -1
__pyx_v_val = -1.0;
+048: while loc <= close_loc:
while (1) { __pyx_t_7 = (__pyx_v_loc <= __pyx_v_close_loc); if (!__pyx_t_7) break;
+049: val = max(val, data[loc])
__pyx_t_8 = __pyx_v_loc; __pyx_t_9 = (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_8 * __pyx_v_data.strides[0]) ))); __pyx_t_10 = __pyx_v_val; __pyx_t_7 = (__pyx_t_9 > __pyx_t_10); if (__pyx_t_7) { __pyx_t_11 = __pyx_t_9; } else { __pyx_t_11 = __pyx_t_10; } __pyx_v_val = __pyx_t_11;
+050: loc += 1
__pyx_v_loc = (__pyx_v_loc + 1); }
+051: if val == -1:
__pyx_t_7 = (__pyx_v_val == -1.0); if (__pyx_t_7) { /* … */ }
+052: val = nan
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_nan); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_12); if (unlikely((__pyx_t_11 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_val = __pyx_t_11;
+053: out[i] = val
__pyx_t_8 = __pyx_v_i; *((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_8 * __pyx_v_out.strides[0]) )) = __pyx_v_val;
+054: loc = close_loc + 1
__pyx_v_loc = (__pyx_v_close_loc + 1); } __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
055:
056:
057: @boundscheck(False)
058: @wraparound(False)
+059: cpdef void _minute_to_session_low(intp_t[:] close_locs,
static PyObject *__pyx_pw_7zipline_4data_9_resample_5_minute_to_session_low(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static void __pyx_f_7zipline_4data_9_resample__minute_to_session_low(__Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out, CYTHON_UNUSED int __pyx_skip_dispatch) { __pyx_t_5numpy_intp_t __pyx_v_i; __pyx_t_5numpy_intp_t __pyx_v_close_loc; __pyx_t_5numpy_intp_t __pyx_v_loc; __pyx_t_5numpy_float64_t __pyx_v_val; __pyx_t_5numpy_float64_t __pyx_v_max_float; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__13) __Pyx_TraceCall("_minute_to_session_low", __pyx_f[0], 59, 0, __PYX_ERR(0, 59, __pyx_L1_error)); /* … */ /* function exit code */ 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_XCLEAR_MEMVIEW(&__pyx_t_8, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_low", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_TraceReturn(Py_None, 0); __Pyx_RefNannyFinishContext(); } /* Python wrapper */ static PyObject *__pyx_pw_7zipline_4data_9_resample_5_minute_to_session_low(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_7zipline_4data_9_resample_5_minute_to_session_low = {"_minute_to_session_low", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7zipline_4data_9_resample_5_minute_to_session_low, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7zipline_4data_9_resample_5_minute_to_session_low(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { __Pyx_memviewslice __pyx_v_close_locs = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_minute_to_session_low (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_close_locs,&__pyx_n_s_data,&__pyx_n_s_out,0}; PyObject* values[3] = {0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_close_locs)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_low", 1, 3, 3, 1); __PYX_ERR(0, 59, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_out)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_low", 1, 3, 3, 2); __PYX_ERR(0, 59, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_minute_to_session_low") < 0)) __PYX_ERR(0, 59, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_close_locs = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_intp_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_close_locs.memview)) __PYX_ERR(0, 59, __pyx_L3_error) __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_data.memview)) __PYX_ERR(0, 60, __pyx_L3_error) __pyx_v_out = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_out.memview)) __PYX_ERR(0, 61, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_minute_to_session_low", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 59, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_low", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7zipline_4data_9_resample_4_minute_to_session_low(__pyx_self, __pyx_v_close_locs, __pyx_v_data, __pyx_v_out); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_4data_9_resample_4_minute_to_session_low(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__13) __Pyx_TraceCall("_minute_to_session_low (wrapper)", __pyx_f[0], 59, 0, __PYX_ERR(0, 59, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_v_close_locs.memview)) { __Pyx_RaiseUnboundLocalError("close_locs"); __PYX_ERR(0, 59, __pyx_L1_error) } if (unlikely(!__pyx_v_data.memview)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 59, __pyx_L1_error) } if (unlikely(!__pyx_v_out.memview)) { __Pyx_RaiseUnboundLocalError("out"); __PYX_ERR(0, 59, __pyx_L1_error) } __pyx_f_7zipline_4data_9_resample__minute_to_session_low(__pyx_v_close_locs, __pyx_v_data, __pyx_v_out, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L1_error) __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_low", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7zipline_4data_9_resample_5_minute_to_session_low, 0, __pyx_n_s_minute_to_session_low, NULL, __pyx_n_s_zipline_data__resample, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minute_to_session_low, __pyx_t_4) < 0) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_zipline_data__resample_pyx, __pyx_n_s_minute_to_session_low, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 59, __pyx_L1_error)
060: float64_t[:] data,
061: float64_t[:] out):
+062: cdef intp_t i, close_loc, loc = 0
__pyx_v_loc = 0;
063: cdef float64_t val
+064: cdef float64_t max_float = finfo(float64).max
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_finfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_6 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_max_float = __pyx_t_6;
+065: for i, close_loc in enumerate(close_locs):
__pyx_t_7 = 0; if (unlikely(((PyObject *) __pyx_v_close_locs.memview) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); __PYX_ERR(0, 65, __pyx_L1_error) } __PYX_INC_MEMVIEW(&__pyx_v_close_locs, 1); __pyx_t_8 = __pyx_v_close_locs; __pyx_t_9 = __Pyx_MemoryView_Len(__pyx_t_8); for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11++) { __pyx_t_10 = __pyx_t_11; __pyx_t_12 = __pyx_t_10; __pyx_v_close_loc = (*((__pyx_t_5numpy_intp_t *) ( /* dim=0 */ (__pyx_t_8.data + __pyx_t_12 * __pyx_t_8.strides[0]) ))); /* … */ __pyx_v_i = __pyx_t_7; /* … */ __pyx_t_7 = (__pyx_t_7 + 1);
+066: val = max_float
__pyx_v_val = __pyx_v_max_float;
+067: while loc <= close_loc:
while (1) { __pyx_t_13 = (__pyx_v_loc <= __pyx_v_close_loc); if (!__pyx_t_13) break;
+068: val = min(val, data[loc])
__pyx_t_14 = __pyx_v_loc; __pyx_t_6 = (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_14 * __pyx_v_data.strides[0]) ))); __pyx_t_15 = __pyx_v_val; __pyx_t_13 = (__pyx_t_6 < __pyx_t_15); if (__pyx_t_13) { __pyx_t_16 = __pyx_t_6; } else { __pyx_t_16 = __pyx_t_15; } __pyx_v_val = __pyx_t_16;
+069: loc += 1
__pyx_v_loc = (__pyx_v_loc + 1); }
+070: if val == max_float:
__pyx_t_13 = (__pyx_v_val == __pyx_v_max_float); if (__pyx_t_13) { /* … */ }
+071: val = nan
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_nan); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_16 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_val = __pyx_t_16;
+072: out[i] = val
__pyx_t_14 = __pyx_v_i; *((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_14 * __pyx_v_out.strides[0]) )) = __pyx_v_val;
+073: loc = close_loc + 1
__pyx_v_loc = (__pyx_v_close_loc + 1); } __PYX_XCLEAR_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
074:
075:
076: @boundscheck(False)
077: @wraparound(False)
+078: cpdef void _minute_to_session_close(intp_t[:] close_locs,
static PyObject *__pyx_pw_7zipline_4data_9_resample_7_minute_to_session_close(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static void __pyx_f_7zipline_4data_9_resample__minute_to_session_close(__Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out, CYTHON_UNUSED int __pyx_skip_dispatch) { __pyx_t_5numpy_intp_t __pyx_v_i; __pyx_t_5numpy_intp_t __pyx_v_prev_close_loc; __pyx_t_5numpy_intp_t __pyx_v_loc; __pyx_t_5numpy_float64_t __pyx_v_val; PyObject *__pyx_v_num_out = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__14) __Pyx_TraceCall("_minute_to_session_close", __pyx_f[0], 78, 0, __PYX_ERR(0, 78, __pyx_L1_error)); /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF(__pyx_v_num_out); __Pyx_TraceReturn(Py_None, 0); __Pyx_RefNannyFinishContext(); } /* Python wrapper */ static PyObject *__pyx_pw_7zipline_4data_9_resample_7_minute_to_session_close(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_7zipline_4data_9_resample_7_minute_to_session_close = {"_minute_to_session_close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7zipline_4data_9_resample_7_minute_to_session_close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7zipline_4data_9_resample_7_minute_to_session_close(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { __Pyx_memviewslice __pyx_v_close_locs = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_minute_to_session_close (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_close_locs,&__pyx_n_s_data,&__pyx_n_s_out,0}; PyObject* values[3] = {0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_close_locs)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_close", 1, 3, 3, 1); __PYX_ERR(0, 78, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_out)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_close", 1, 3, 3, 2); __PYX_ERR(0, 78, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_minute_to_session_close") < 0)) __PYX_ERR(0, 78, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_close_locs = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_intp_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_close_locs.memview)) __PYX_ERR(0, 78, __pyx_L3_error) __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_data.memview)) __PYX_ERR(0, 79, __pyx_L3_error) __pyx_v_out = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_out.memview)) __PYX_ERR(0, 80, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_minute_to_session_close", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 78, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_close", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7zipline_4data_9_resample_6_minute_to_session_close(__pyx_self, __pyx_v_close_locs, __pyx_v_data, __pyx_v_out); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_4data_9_resample_6_minute_to_session_close(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__14) __Pyx_TraceCall("_minute_to_session_close (wrapper)", __pyx_f[0], 78, 0, __PYX_ERR(0, 78, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_v_close_locs.memview)) { __Pyx_RaiseUnboundLocalError("close_locs"); __PYX_ERR(0, 78, __pyx_L1_error) } if (unlikely(!__pyx_v_data.memview)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 78, __pyx_L1_error) } if (unlikely(!__pyx_v_out.memview)) { __Pyx_RaiseUnboundLocalError("out"); __PYX_ERR(0, 78, __pyx_L1_error) } __pyx_f_7zipline_4data_9_resample__minute_to_session_close(__pyx_v_close_locs, __pyx_v_data, __pyx_v_out, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L1_error) __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7zipline_4data_9_resample_7_minute_to_session_close, 0, __pyx_n_s_minute_to_session_close, NULL, __pyx_n_s_zipline_data__resample, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minute_to_session_close, __pyx_t_4) < 0) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_zipline_data__resample_pyx, __pyx_n_s_minute_to_session_close, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 78, __pyx_L1_error)
079: float64_t[:] data,
080: float64_t[:] out):
+081: cdef intp_t i, prev_close_loc, loc = 0
__pyx_v_loc = 0;
082: cdef float64_t val
+083: num_out = len(out)
__pyx_t_1 = __Pyx_MemoryView_Len(__pyx_v_out); __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_num_out = __pyx_t_2; __pyx_t_2 = 0;
+084: for i in range(num_out - 1, -1, -1):
__pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_v_num_out, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_As_long(__pyx_t_2); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (__pyx_t_4 = __pyx_t_3; __pyx_t_4 > -1L; __pyx_t_4-=1) { __pyx_v_i = __pyx_t_4;
+085: if i > 0:
__pyx_t_5 = (__pyx_v_i > 0); if (__pyx_t_5) { /* … */ goto __pyx_L5; }
+086: prev_close_loc = close_locs[i - 1]
__pyx_t_6 = (__pyx_v_i - 1); __pyx_v_prev_close_loc = (*((__pyx_t_5numpy_intp_t *) ( /* dim=0 */ (__pyx_v_close_locs.data + __pyx_t_6 * __pyx_v_close_locs.strides[0]) )));
087: else:
+088: prev_close_loc = -1
/*else*/ { __pyx_v_prev_close_loc = -1L; } __pyx_L5:;
+089: loc = close_locs[i]
__pyx_t_6 = __pyx_v_i; __pyx_v_loc = (*((__pyx_t_5numpy_intp_t *) ( /* dim=0 */ (__pyx_v_close_locs.data + __pyx_t_6 * __pyx_v_close_locs.strides[0]) )));
+090: val = nan
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_nan); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_7 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_val = __pyx_t_7;
091: # Start by getting the price value at the closing minute of each day.
092: # If the value is NaN, continue looking back until we either find a
093: # valid value or reach the closing minute of the previous day, at which
094: # point the value is just kept as a NaN. We decrement 'loc' after
095: # obtaining the value to ensure we do not reach a negative index.
+096: while isnan(val) and loc > prev_close_loc:
while (1) { __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_isnan); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyFloat_FromDouble(__pyx_v_val); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; __pyx_t_11 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_11 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_9}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_11, 1+__pyx_t_11); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_12) { } else { __pyx_t_5 = __pyx_t_12; goto __pyx_L8_bool_binop_done; } __pyx_t_12 = (__pyx_v_loc > __pyx_v_prev_close_loc); __pyx_t_5 = __pyx_t_12; __pyx_L8_bool_binop_done:; if (!__pyx_t_5) break;
+097: val = data[loc]
__pyx_t_6 = __pyx_v_loc; __pyx_v_val = (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_6 * __pyx_v_data.strides[0]) )));
+098: loc -= 1
__pyx_v_loc = (__pyx_v_loc - 1); }
+099: out[i] = val
__pyx_t_6 = __pyx_v_i; *((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_6 * __pyx_v_out.strides[0]) )) = __pyx_v_val; }
100:
101:
102: @boundscheck(False)
103: @wraparound(False)
+104: cpdef void _minute_to_session_volume(intp_t[:] close_locs,
static PyObject *__pyx_pw_7zipline_4data_9_resample_9_minute_to_session_volume(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static void __pyx_f_7zipline_4data_9_resample__minute_to_session_volume(__Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out, CYTHON_UNUSED int __pyx_skip_dispatch) { __pyx_t_5numpy_intp_t __pyx_v_i; __pyx_t_5numpy_intp_t __pyx_v_close_loc; __pyx_t_5numpy_intp_t __pyx_v_loc; __pyx_t_5numpy_uint32_t __pyx_v_val; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__15) __Pyx_TraceCall("_minute_to_session_volume", __pyx_f[0], 104, 0, __PYX_ERR(0, 104, __pyx_L1_error)); /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_volume", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_TraceReturn(Py_None, 0); } /* Python wrapper */ static PyObject *__pyx_pw_7zipline_4data_9_resample_9_minute_to_session_volume(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_7zipline_4data_9_resample_9_minute_to_session_volume = {"_minute_to_session_volume", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7zipline_4data_9_resample_9_minute_to_session_volume, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7zipline_4data_9_resample_9_minute_to_session_volume(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { __Pyx_memviewslice __pyx_v_close_locs = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } }; __Pyx_memviewslice __pyx_v_out = { 0, 0, { 0 }, { 0 }, { 0 } }; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_minute_to_session_volume (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_close_locs,&__pyx_n_s_data,&__pyx_n_s_out,0}; PyObject* values[3] = {0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_close_locs)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 104, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 104, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_volume", 1, 3, 3, 1); __PYX_ERR(0, 104, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_out)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 104, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("_minute_to_session_volume", 1, 3, 3, 2); __PYX_ERR(0, 104, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_minute_to_session_volume") < 0)) __PYX_ERR(0, 104, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); } __pyx_v_close_locs = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_intp_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_close_locs.memview)) __PYX_ERR(0, 104, __pyx_L3_error) __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_data.memview)) __PYX_ERR(0, 105, __pyx_L3_error) __pyx_v_out = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_out.memview)) __PYX_ERR(0, 106, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_minute_to_session_volume", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 104, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_volume", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7zipline_4data_9_resample_8_minute_to_session_volume(__pyx_self, __pyx_v_close_locs, __pyx_v_data, __pyx_v_out); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ __PYX_XCLEAR_MEMVIEW(&__pyx_v_close_locs, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __PYX_XCLEAR_MEMVIEW(&__pyx_v_out, 1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_4data_9_resample_8_minute_to_session_volume(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_close_locs, __Pyx_memviewslice __pyx_v_data, __Pyx_memviewslice __pyx_v_out) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__15) __Pyx_TraceCall("_minute_to_session_volume (wrapper)", __pyx_f[0], 104, 0, __PYX_ERR(0, 104, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_v_close_locs.memview)) { __Pyx_RaiseUnboundLocalError("close_locs"); __PYX_ERR(0, 104, __pyx_L1_error) } if (unlikely(!__pyx_v_data.memview)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 104, __pyx_L1_error) } if (unlikely(!__pyx_v_out.memview)) { __Pyx_RaiseUnboundLocalError("out"); __PYX_ERR(0, 104, __pyx_L1_error) } __pyx_f_7zipline_4data_9_resample__minute_to_session_volume(__pyx_v_close_locs, __pyx_v_data, __pyx_v_out, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 104, __pyx_L1_error) __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("zipline.data._resample._minute_to_session_volume", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7zipline_4data_9_resample_9_minute_to_session_volume, 0, __pyx_n_s_minute_to_session_volume, NULL, __pyx_n_s_zipline_data__resample, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minute_to_session_volume, __pyx_t_4) < 0) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
105: uint32_t[:] data,
106: uint32_t[:] out):
+107: cdef intp_t i, close_loc, loc = 0
__pyx_v_loc = 0;
108: cdef uint32_t val
+109: loc = 0
__pyx_v_loc = 0;
+110: for i, close_loc in enumerate(close_locs):
__pyx_t_1 = 0; if (unlikely(((PyObject *) __pyx_v_close_locs.memview) == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); __PYX_ERR(0, 110, __pyx_L1_error) } __PYX_INC_MEMVIEW(&__pyx_v_close_locs, 1); __pyx_t_2 = __pyx_v_close_locs; __pyx_t_3 = __Pyx_MemoryView_Len(__pyx_t_2); for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5++) { __pyx_t_4 = __pyx_t_5; __pyx_t_6 = __pyx_t_4; __pyx_v_close_loc = (*((__pyx_t_5numpy_intp_t *) ( /* dim=0 */ (__pyx_t_2.data + __pyx_t_6 * __pyx_t_2.strides[0]) ))); /* … */ __pyx_v_i = __pyx_t_1; /* … */ __pyx_t_1 = (__pyx_t_1 + 1);
+111: val = 0
__pyx_v_val = 0;
+112: while loc <= close_loc:
while (1) { __pyx_t_7 = (__pyx_v_loc <= __pyx_v_close_loc); if (!__pyx_t_7) break;
+113: val += data[loc]
__pyx_t_8 = __pyx_v_loc; __pyx_v_val = (__pyx_v_val + (*((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_data.data + __pyx_t_8 * __pyx_v_data.strides[0]) ))));
+114: loc += 1
__pyx_v_loc = (__pyx_v_loc + 1); }
+115: out[i] = val
__pyx_t_8 = __pyx_v_i; *((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_out.data + __pyx_t_8 * __pyx_v_out.strides[0]) )) = __pyx_v_val;
+116: loc = close_loc + 1
__pyx_v_loc = (__pyx_v_close_loc + 1); } __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;