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: _windowtemplate.pxi
001: """
002: Template for AdjustedArray windowed iterators.
003:
004: This file is intended to be used by inserting it via a Cython include into a
005: file that's defined a type symbol named `databuffer` that can be used like a
006: 2-D numpy array.
007:
008: See Also
009: --------
010: zipline.lib._floatwindow
011: zipline.lib._intwindow
012: zipline.lib._datewindow
013: """
014: from numpy cimport ndarray
+015: from numpy import asanyarray, dtype, issubdtype
__pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_asanyarray); __Pyx_GIVEREF(__pyx_n_s_asanyarray); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_asanyarray)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_dtype); __Pyx_GIVEREF(__pyx_n_s_dtype); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_dtype)) __PYX_ERR(0, 15, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_issubdtype); __Pyx_GIVEREF(__pyx_n_s_issubdtype); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 2, __pyx_n_s_issubdtype)) __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_asanyarray); 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_asanyarray, __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_dtype); 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_dtype, __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_issubdtype); 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_issubdtype, __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:
017:
+018: class Exhausted(Exception):
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); __Pyx_GIVEREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])))) __PYX_ERR(0, 18, __pyx_L1_error); __pyx_t_7 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_7, __pyx_n_s_Exhausted, __pyx_n_s_Exhausted, (PyObject *) NULL, __pyx_n_s_zipline_lib__uint8window, (PyObject *) NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7 != __pyx_t_4) { if (unlikely((PyDict_SetItemString(__pyx_t_9, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 18, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_Exhausted, __pyx_t_7, __pyx_t_9, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Exhausted, __pyx_t_4) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
019: pass
020:
021:
+022: cdef class AdjustedArrayWindow:
struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow { PyObject_HEAD struct __pyx_vtabstruct_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_vtab; __pyx_t_7zipline_3lib_12_uint8window_databuffer data; PyObject *view_kwargs; Py_ssize_t window_length; Py_ssize_t anchor; Py_ssize_t max_anchor; Py_ssize_t next_adj; Py_ssize_t perspective_offset; PyObject *rounding_places; PyObject *adjustments; PyObject *adjustment_indices; PyArrayObject *output; }; /* … */ struct __pyx_vtabstruct_7zipline_3lib_12_uint8window_AdjustedArrayWindow { PyObject *(*pop_next_adj)(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *); PyObject *(*_tick_forward)(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *, int); PyObject *(*_update_output)(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *); }; static struct __pyx_vtabstruct_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_vtabptr_7zipline_3lib_12_uint8window_AdjustedArrayWindow; static CYTHON_INLINE PyObject *__pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__tick_forward(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *, int); static CYTHON_INLINE PyObject *__pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__update_output(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *);
023: """
024: An iterator representing a moving view over an AdjustedArray.
025:
026: Concrete subtypes should subclass this and provide a `data` attribute for
027: specific types.
028:
029: This object stores a copy of the data from the AdjustedArray over which
030: it's iterating. At each step in the iteration, it mutates its copy to
031: allow us to show different data when looking back over the array.
032:
033: The arrays yielded by this iterator are always views over the underlying
034: data.
035:
036: The `rounding_places` attribute is an integer used to specify the number of
037: decimal places to which the data should be rounded, given that the data is
038: of dtype float. If `rounding_places` is None, no rounding occurs.
039: """
040: cdef:
041: # ctype must be defined by the file into which this is being copied.
+042: readonly databuffer data
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_4data_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_4data_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_4data___get__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_4data___get__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("__get__", __pyx_f[0], 42, 0, __PYX_ERR(0, 42, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_v_self->data.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 42, __pyx_L1_error)} __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_self->data, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_uint8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_uint8_t, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __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.lib._uint8window.AdjustedArrayWindow.data.__get__", __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; }
+043: readonly dict view_kwargs
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_11view_kwargs_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_11view_kwargs_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_11view_kwargs___get__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_11view_kwargs___get__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("__get__", __pyx_f[0], 43, 0, __PYX_ERR(0, 43, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->view_kwargs); __pyx_r = __pyx_v_self->view_kwargs; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.view_kwargs.__get__", __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; }
+044: readonly Py_ssize_t window_length
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_13window_length_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_13window_length_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_13window_length___get__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_13window_length___get__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("__get__", __pyx_f[0], 44, 0, __PYX_ERR(0, 44, __pyx_L1_error)); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->window_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __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.lib._uint8window.AdjustedArrayWindow.window_length.__get__", __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; }
045: Py_ssize_t anchor, max_anchor, next_adj
046: Py_ssize_t perspective_offset
047: object rounding_places
048: dict adjustments
049: list adjustment_indices
050: ndarray output
051:
+052: def __cinit__(self,
/* Python wrapper */ static int __pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { __pyx_t_7zipline_3lib_12_uint8window_databuffer __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } }; PyObject *__pyx_v_view_kwargs = 0; PyObject *__pyx_v_adjustments = 0; Py_ssize_t __pyx_v_offset; Py_ssize_t __pyx_v_window_length; Py_ssize_t __pyx_v_perspective_offset; PyObject *__pyx_v_rounding_places = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0); #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 -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_view_kwargs,&__pyx_n_s_adjustments,&__pyx_n_s_offset,&__pyx_n_s_window_length,&__pyx_n_s_perspective_offset,&__pyx_n_s_rounding_places,0}; PyObject* values[7] = {0,0,0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 7: values[6] = __Pyx_Arg_VARARGS(__pyx_args, 6); CYTHON_FALLTHROUGH; case 6: values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_view_kwargs)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 1); __PYX_ERR(0, 52, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_adjustments)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[2]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 2); __PYX_ERR(0, 52, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[3]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 3); __PYX_ERR(0, 52, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_window_length)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[4]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 4); __PYX_ERR(0, 52, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_perspective_offset)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[5]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 5); __PYX_ERR(0, 52, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rounding_places)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[6]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 6); __PYX_ERR(0, 52, __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, "__cinit__") < 0)) __PYX_ERR(0, 52, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 7)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3); values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4); values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5); values[6] = __Pyx_Arg_VARARGS(__pyx_args, 6); } __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_data.memview)) __PYX_ERR(0, 53, __pyx_L3_error) __pyx_v_view_kwargs = ((PyObject*)values[1]); __pyx_v_adjustments = ((PyObject*)values[2]); __pyx_v_offset = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_offset == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 56, __pyx_L3_error) __pyx_v_window_length = __Pyx_PyIndex_AsSsize_t(values[4]); if (unlikely((__pyx_v_window_length == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 57, __pyx_L3_error) __pyx_v_perspective_offset = __Pyx_PyIndex_AsSsize_t(values[5]); if (unlikely((__pyx_v_perspective_offset == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 58, __pyx_L3_error) __pyx_v_rounding_places = values[6]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 52, __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_VARARGS(values[__pyx_temp]); } } __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 1); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(((PyObject *)__pyx_v_data.memview) == Py_None)) { PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "data"); __PYX_ERR(0, 53, __pyx_L1_error) } if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_view_kwargs), (&PyDict_Type), 0, "view_kwargs", 1))) __PYX_ERR(0, 54, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_adjustments), (&PyDict_Type), 0, "adjustments", 1))) __PYX_ERR(0, 55, __pyx_L1_error) __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow___cinit__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self), __pyx_v_data, __pyx_v_view_kwargs, __pyx_v_adjustments, __pyx_v_offset, __pyx_v_window_length, __pyx_v_perspective_offset, __pyx_v_rounding_places); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_data, 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_VARARGS(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow___cinit__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self, __pyx_t_7zipline_3lib_12_uint8window_databuffer __pyx_v_data, PyObject *__pyx_v_view_kwargs, PyObject *__pyx_v_adjustments, Py_ssize_t __pyx_v_offset, Py_ssize_t __pyx_v_window_length, Py_ssize_t __pyx_v_perspective_offset, PyObject *__pyx_v_rounding_places) { int __pyx_r; __Pyx_TraceDeclarations __Pyx_TraceCall("__cinit__", __pyx_f[0], 52, 0, __PYX_ERR(0, 52, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_TraceReturn(Py_None, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; }
053: databuffer data not None,
054: dict view_kwargs not None,
055: dict adjustments not None,
056: Py_ssize_t offset,
057: Py_ssize_t window_length,
058: Py_ssize_t perspective_offset,
059: object rounding_places):
+060: self.data = data
__PYX_XCLEAR_MEMVIEW(&__pyx_v_self->data, 0); __PYX_INC_MEMVIEW(&__pyx_v_data, 1); __pyx_v_self->data = __pyx_v_data;
+061: self.view_kwargs = view_kwargs
__Pyx_INCREF(__pyx_v_view_kwargs); __Pyx_GIVEREF(__pyx_v_view_kwargs); __Pyx_GOTREF(__pyx_v_self->view_kwargs); __Pyx_DECREF(__pyx_v_self->view_kwargs); __pyx_v_self->view_kwargs = __pyx_v_view_kwargs;
+062: self.adjustments = adjustments
__Pyx_INCREF(__pyx_v_adjustments); __Pyx_GIVEREF(__pyx_v_adjustments); __Pyx_GOTREF(__pyx_v_self->adjustments); __Pyx_DECREF(__pyx_v_self->adjustments); __pyx_v_self->adjustments = __pyx_v_adjustments;
+063: self.adjustment_indices = sorted(adjustments, reverse=True)
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_adjustments); __Pyx_GIVEREF(__pyx_v_adjustments); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_adjustments)) __PYX_ERR(0, 63, __pyx_L1_error); __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_reverse, Py_True) < 0) __PYX_ERR(0, 63, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_sorted, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_3))) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->adjustment_indices); __Pyx_DECREF(__pyx_v_self->adjustment_indices); __pyx_v_self->adjustment_indices = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+064: self.window_length = window_length
__pyx_v_self->window_length = __pyx_v_window_length;
+065: self.anchor = window_length + offset - 1
__pyx_v_self->anchor = ((__pyx_v_window_length + __pyx_v_offset) - 1);
+066: if perspective_offset > 1:
__pyx_t_4 = (__pyx_v_perspective_offset > 1); if (unlikely(__pyx_t_4)) { /* … */ }
067: # Limit perspective_offset to 1.
068: # To support an offset greater than 1, work must be done to
069: # ensure that adjustments are retrieved for the datetimes between
070: # the end of the window and the vantage point defined by the
071: # perspective offset.
+072: raise Exception("perspective_offset should not exceed 1, value "
__pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 72, __pyx_L1_error)
+073: "is perspective_offset={0}".format(
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_perspective_offset_should_not_ex, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+074: perspective_offset))
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_perspective_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_1}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; }
+075: self.perspective_offset = perspective_offset
__pyx_v_self->perspective_offset = __pyx_v_perspective_offset;
+076: self.rounding_places = rounding_places
__Pyx_INCREF(__pyx_v_rounding_places); __Pyx_GIVEREF(__pyx_v_rounding_places); __Pyx_GOTREF(__pyx_v_self->rounding_places); __Pyx_DECREF(__pyx_v_self->rounding_places); __pyx_v_self->rounding_places = __pyx_v_rounding_places;
+077: self.max_anchor = data.shape[0]
__pyx_v_self->max_anchor = (__pyx_v_data.shape[0]);
078:
+079: self.next_adj = self.pop_next_adj()
__pyx_t_2 = ((struct __pyx_vtabstruct_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self->__pyx_vtab)->pop_next_adj(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->next_adj = __pyx_t_7;
+080: self.output = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->output); __Pyx_DECREF((PyObject *)__pyx_v_self->output); __pyx_v_self->output = ((PyArrayObject *)Py_None);
081:
+082: cdef pop_next_adj(self):
static PyObject *__pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_pop_next_adj(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("pop_next_adj", __pyx_f[0], 82, 0, __PYX_ERR(0, 82, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.pop_next_adj", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; }
083: """
084: Pop the index of the next adjustment to apply from self.adjustment_indices.
085: """
+086: if len(self.adjustment_indices) > 0:
__pyx_t_1 = __pyx_v_self->adjustment_indices; __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 86, __pyx_L1_error) } __pyx_t_2 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 > 0); if (__pyx_t_3) { /* … */ }
+087: return self.adjustment_indices.pop()
__Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_self->adjustment_indices == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop"); __PYX_ERR(0, 87, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->adjustment_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
088: else:
+089: return self.max_anchor + self.perspective_offset
/*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_self->max_anchor + __pyx_v_self->perspective_offset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; }
090:
+091: def __iter__(self):
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_3__iter__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_3__iter__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_2__iter__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_2__iter__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("__iter__", __pyx_f[0], 91, 0, __PYX_ERR(0, 91, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.__iter__", __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; }
+092: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
093:
+094: def __next__(self):
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_5__next__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_5__next__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__next__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_4__next__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_4__next__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("__next__", __pyx_f[0], 94, 0, __PYX_ERR(0, 94, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); if (!__pyx_error_without_exception) { __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.__next__", __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; }
+095: try:
{ /*try:*/ { /* … */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_try_end; __pyx_L3_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_L5_except_error:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L8_try_end:; }
+096: self._tick_forward(1)
__pyx_t_4 = __pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__tick_forward(__pyx_v_self, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 96, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+097: except Exhausted:
__Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Exhausted); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 97, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; if (__pyx_t_8) { __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 97, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_4);
+098: raise StopIteration()
__pyx_error_without_exception = 1; goto __pyx_L5_except_error;; } goto __pyx_L5_except_error;
099:
+100: self._update_output()
__pyx_t_4 = __pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__update_output(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+101: return self.output
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self->output); __pyx_r = ((PyObject *)__pyx_v_self->output); goto __pyx_L0;
102:
+103: def seek(self, Py_ssize_t target_anchor):
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_7seek(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_7seek = {"seek", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_7seek, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_7seek(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { Py_ssize_t __pyx_v_target_anchor; #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("seek (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_target_anchor,0}; PyObject* values[1] = {0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { 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_target_anchor)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error) else goto __pyx_L5_argtuple_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, "seek") < 0)) __PYX_ERR(0, 103, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_target_anchor = __Pyx_PyIndex_AsSsize_t(values[0]); if (unlikely((__pyx_v_target_anchor == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("seek", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 103, __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_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.seek", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_6seek(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self), __pyx_v_target_anchor); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ { 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_3lib_12_uint8window_19AdjustedArrayWindow_6seek(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self, Py_ssize_t __pyx_v_target_anchor) { Py_ssize_t __pyx_v_anchor; PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceFrameInit(__pyx_codeobj__11) __Pyx_TraceCall("seek", __pyx_f[0], 103, 0, __PYX_ERR(0, 103, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.seek", __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__28 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_target_anchor, __pyx_n_s_anchor_2); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); /* … */ __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_7seek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AdjustedArrayWindow_seek, NULL, __pyx_n_s_zipline_lib__uint8window, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7zipline_3lib_12_uint8window_AdjustedArrayWindow, __pyx_n_s_seek, __pyx_t_7) < 0) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; PyType_Modified(__pyx_ptype_7zipline_3lib_12_uint8window_AdjustedArrayWindow); __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_zipline_lib__windowtemplate, __pyx_n_s_seek, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 103, __pyx_L1_error)
104: cdef:
+105: Py_ssize_t anchor = self.anchor
__pyx_t_1 = __pyx_v_self->anchor; __pyx_v_anchor = __pyx_t_1;
106:
+107: if target_anchor < anchor:
__pyx_t_2 = (__pyx_v_target_anchor < __pyx_v_anchor); if (unlikely(__pyx_t_2)) { /* … */ }
+108: raise Exception('Can not access data after window has passed.')
__pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 108, __pyx_L1_error) /* … */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Can_not_access_data_after_window); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12);
109:
+110: if target_anchor == anchor:
__pyx_t_2 = (__pyx_v_target_anchor == __pyx_v_anchor); if (__pyx_t_2) { /* … */ }
+111: return self.output
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self->output); __pyx_r = ((PyObject *)__pyx_v_self->output); goto __pyx_L0;
112:
+113: self._tick_forward(target_anchor - anchor)
__pyx_t_3 = __pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__tick_forward(__pyx_v_self, (__pyx_v_target_anchor - __pyx_v_anchor)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+114: self._update_output()
__pyx_t_3 = __pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__update_output(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
115:
+116: return self.output
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self->output); __pyx_r = ((PyObject *)__pyx_v_self->output); goto __pyx_L0;
117:
+118: cdef inline _tick_forward(self, int N):
static CYTHON_INLINE PyObject *__pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__tick_forward(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self, int __pyx_v_N) { PyObject *__pyx_v_adjustment = 0; Py_ssize_t __pyx_v_anchor; Py_ssize_t __pyx_v_target; PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("_tick_forward", __pyx_f[0], 118, 0, __PYX_ERR(0, 118, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow._tick_forward", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_adjustment); __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; }
119: cdef:
120: object adjustment
+121: Py_ssize_t anchor = self.anchor
__pyx_t_1 = __pyx_v_self->anchor; __pyx_v_anchor = __pyx_t_1;
+122: Py_ssize_t target = anchor + N
__pyx_v_target = (__pyx_v_anchor + __pyx_v_N);
123:
+124: if target > self.max_anchor:
__pyx_t_2 = (__pyx_v_target > __pyx_v_self->max_anchor); if (unlikely(__pyx_t_2)) { /* … */ }
+125: raise Exhausted()
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Exhausted); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 125, __pyx_L1_error)
126:
127: # Apply any adjustments that occured before our current anchor.
128: # Equivalently, apply any adjustments known **on or before** the date
129: # for which we're calculating a window.
+130: while self.next_adj < target + self.perspective_offset:
while (1) { __pyx_t_2 = (__pyx_v_self->next_adj < (__pyx_v_target + __pyx_v_self->perspective_offset)); if (!__pyx_t_2) break;
131:
+132: for adjustment in self.adjustments[self.next_adj]:
if (unlikely(__pyx_v_self->adjustments == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 132, __pyx_L1_error) } __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->next_adj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->adjustments, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0; __pyx_t_7 = NULL; } else { __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 132, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 132, __pyx_L1_error) #endif if (__pyx_t_1 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(0, 132, __pyx_L1_error) #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_MACROS if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 132, __pyx_L1_error) #endif if (__pyx_t_1 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(0, 132, __pyx_L1_error) #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 132, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_adjustment, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+133: adjustment.mutate(self.data)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_adjustment, __pyx_n_s_mutate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(!__pyx_v_self->data.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 133, __pyx_L1_error)} __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_self->data, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_uint8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_uint8_t, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_6 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8}; __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
134:
+135: self.next_adj = self.pop_next_adj()
__pyx_t_3 = ((struct __pyx_vtabstruct_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self->__pyx_vtab)->pop_next_adj(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_self->next_adj = __pyx_t_1; }
136:
+137: self.anchor = target
__pyx_v_self->anchor = __pyx_v_target;
138:
+139: cdef inline _update_output(self):
static CYTHON_INLINE PyObject *__pyx_f_7zipline_3lib_12_uint8window_19AdjustedArrayWindow__update_output(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyArrayObject *__pyx_v_new_out = 0; Py_ssize_t __pyx_v_anchor; PyObject *__pyx_v_view_kwargs = 0; PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("_update_output", __pyx_f[0], 139, 0, __PYX_ERR(0, 139, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __PYX_XCLEAR_MEMVIEW(&__pyx_t_4, 1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow._update_output", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_new_out); __Pyx_XDECREF(__pyx_v_view_kwargs); __Pyx_XGIVEREF(__pyx_r); __Pyx_TraceReturn(__pyx_r, 0); __Pyx_RefNannyFinishContext(); return __pyx_r; }
140: cdef:
141: ndarray new_out
+142: Py_ssize_t anchor = self.anchor
__pyx_t_1 = __pyx_v_self->anchor; __pyx_v_anchor = __pyx_t_1;
+143: dict view_kwargs = self.view_kwargs
__pyx_t_2 = __pyx_v_self->view_kwargs;
__Pyx_INCREF(__pyx_t_2);
__pyx_v_view_kwargs = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
144:
+145: new_out = asanyarray(self.data[anchor - self.window_length:anchor])
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_asanyarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(!__pyx_v_self->data.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");__PYX_ERR(0, 145, __pyx_L1_error)} __pyx_t_4.data = __pyx_v_self->data.data; __pyx_t_4.memview = __pyx_v_self->data.memview; __PYX_INC_MEMVIEW(&__pyx_t_4, 1); __pyx_t_5 = -1; if (unlikely(__pyx_memoryview_slice_memviewslice( &__pyx_t_4, __pyx_v_self->data.shape[0], __pyx_v_self->data.strides[0], __pyx_v_self->data.suboffsets[0], 0, 0, &__pyx_t_5, (__pyx_v_anchor - __pyx_v_self->window_length), __pyx_v_anchor, 0, 1, 1, 0, 1) < 0)) { __PYX_ERR(0, 145, __pyx_L1_error) } __pyx_t_4.shape[1] = __pyx_v_self->data.shape[1]; __pyx_t_4.strides[1] = __pyx_v_self->data.strides[1]; __pyx_t_4.suboffsets[1] = -1; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_t_4, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_uint8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_uint8_t, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __PYX_XCLEAR_MEMVIEW(&__pyx_t_4, 1); __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL; __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 145, __pyx_L1_error) __pyx_v_new_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+146: if view_kwargs:
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_view_kwargs); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 146, __pyx_L1_error) if (__pyx_t_9) { /* … */ }
+147: new_out = new_out.view(**view_kwargs)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_new_out), __pyx_n_s_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_view_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(0, 147, __pyx_L1_error) } __pyx_t_3 = PyDict_Copy(__pyx_v_view_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_new_out, ((PyArrayObject *)__pyx_t_6)); __pyx_t_6 = 0;
+148: if self.rounding_places is not None and \
__pyx_t_10 = (__pyx_v_self->rounding_places != Py_None); if (__pyx_t_10) { } else { __pyx_t_9 = __pyx_t_10; goto __pyx_L5_bool_binop_done; } /* … */ if (__pyx_t_9) { /* … */ }
+149: issubdtype(new_out.dtype, dtype('float64')):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_issubdtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_new_out), __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_n_u_float64}; __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __pyx_t_11 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_2, __pyx_t_7}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = __pyx_t_10; __pyx_L5_bool_binop_done:;
+150: new_out = new_out.round(self.rounding_places)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_new_out), __pyx_n_s_round); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_self->rounding_places}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_new_out, ((PyArrayObject *)__pyx_t_6)); __pyx_t_6 = 0;
+151: new_out.setflags(write=False)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_new_out), __pyx_n_s_setflags); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_write, Py_False) < 0) __PYX_ERR(0, 151, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+152: self.output = new_out
__Pyx_INCREF((PyObject *)__pyx_v_new_out); __Pyx_GIVEREF((PyObject *)__pyx_v_new_out); __Pyx_GOTREF((PyObject *)__pyx_v_self->output); __Pyx_DECREF((PyObject *)__pyx_v_self->output); __pyx_v_self->output = __pyx_v_new_out;
153:
+154: def __repr__(self):
/* Python wrapper */ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_9__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_9__repr__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_8__repr__(((struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7zipline_3lib_12_uint8window_19AdjustedArrayWindow_8__repr__(struct __pyx_obj_7zipline_3lib_12_uint8window_AdjustedArrayWindow *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_TraceDeclarations __Pyx_TraceCall("__repr__", __pyx_f[0], 154, 0, __PYX_ERR(0, 154, __pyx_L1_error)); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("zipline.lib._uint8window.AdjustedArrayWindow.__repr__", __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; }
+155: return "<%s: window_length=%d, anchor=%d, max_anchor=%d, dtype=%r>" % (
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = 127; __Pyx_INCREF(__pyx_kp_u__13); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__13); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__13); /* … */ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 11, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
+156: type(self).__name__,
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Unicode(__pyx_t_4), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u_window_length_2); __pyx_t_2 += 16; __Pyx_GIVEREF(__pyx_kp_u_window_length_2); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_window_length_2);
+157: self.window_length,
__pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->window_length, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u_anchor); __pyx_t_2 += 9; __Pyx_GIVEREF(__pyx_kp_u_anchor); PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_anchor);
+158: self.anchor,
__pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->anchor, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u_max_anchor); __pyx_t_2 += 13; __Pyx_GIVEREF(__pyx_kp_u_max_anchor); PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_max_anchor);
+159: self.max_anchor,
__pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->max_anchor, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u_dtype_2); __pyx_t_2 += 8; __Pyx_GIVEREF(__pyx_kp_u_dtype_2); PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u_dtype_2);
+160: self.view_kwargs.get('dtype'),
if (unlikely(__pyx_v_self->view_kwargs == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get"); __PYX_ERR(0, 160, __pyx_L1_error) } __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->view_kwargs, __pyx_n_u_dtype, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__14); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__14); PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_kp_u__14);
161: )