Generated by Cython 0.29.24

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_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_asanyarray);
  __Pyx_GIVEREF(__pyx_n_s_asanyarray);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_asanyarray);
  __Pyx_INCREF(__pyx_n_s_dtype);
  __Pyx_GIVEREF(__pyx_n_s_dtype);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_dtype);
  __Pyx_INCREF(__pyx_n_s_issubdtype);
  __Pyx_GIVEREF(__pyx_n_s_issubdtype);
  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_issubdtype);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_asanyarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_asanyarray, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_issubdtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_issubdtype, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 016: 
 017: 
+018: class Exhausted(Exception):
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_Exhausted, __pyx_n_s_Exhausted, (PyObject *) NULL, __pyx_n_s_zipline_lib__float64window, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Exhausted, __pyx_t_2, __pyx_t_3, 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_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 019:     pass
 020: 
 021: 
+022: cdef class AdjustedArrayWindow:
struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow {
  PyObject_HEAD
  struct __pyx_vtabstruct_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_vtab;
  __pyx_t_7zipline_3lib_14_float64window_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_14_float64window_AdjustedArrayWindow {
  PyObject *(*pop_next_adj)(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *);
  PyObject *(*_tick_forward)(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *, int);
  PyObject *(*_update_output)(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *);
};
static struct __pyx_vtabstruct_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_vtabptr_7zipline_3lib_14_float64window_AdjustedArrayWindow;
static CYTHON_INLINE PyObject *__pyx_f_7zipline_3lib_14_float64window_19AdjustedArrayWindow__tick_forward(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *, int);
static CYTHON_INLINE PyObject *__pyx_f_7zipline_3lib_14_float64window_19AdjustedArrayWindow__update_output(struct __pyx_obj_7zipline_3lib_14_float64window_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_14_float64window_19AdjustedArrayWindow_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_4data_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_4data___get__(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_4data___get__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __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_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_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._float64window.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_14_float64window_19AdjustedArrayWindow_11view_kwargs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_11view_kwargs_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_11view_kwargs___get__(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_11view_kwargs___get__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __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._float64window.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_14_float64window_19AdjustedArrayWindow_13window_length_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_13window_length_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_13window_length___get__(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_13window_length___get__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __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._float64window.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_14_float64window_19AdjustedArrayWindow_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_7zipline_3lib_14_float64window_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;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static 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 (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_view_kwargs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 1); __PYX_ERR(0, 52, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_adjustments)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 2); __PYX_ERR(0, 52, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_offset)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 3); __PYX_ERR(0, 52, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_window_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 4); __PYX_ERR(0, 52, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_perspective_offset)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 5); __PYX_ERR(0, 52, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rounding_places)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, 6); __PYX_ERR(0, 52, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 52, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_data = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float64_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_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 52, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("zipline.lib._float64window.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_14_float64window_19AdjustedArrayWindow___cinit__(((struct __pyx_obj_7zipline_3lib_14_float64window_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_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow___cinit__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self, __pyx_t_7zipline_3lib_14_float64window_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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
  __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._float64window.AdjustedArrayWindow.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __PYX_XDEC_MEMVIEW(&__pyx_v_data, 1);
  __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_XDEC_MEMVIEW(&__pyx_v_self->data, 0);
  __PYX_INC_MEMVIEW(&__pyx_v_data, 0);
  __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);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_adjustments);
  __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)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_3)->tp_name), 0))) __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) != 0);
  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;
    if (CYTHON_UNPACK_METHODS && 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_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1);
    __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_14_float64window_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_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (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_6;
+080:         self.output = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__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_14_float64window_19AdjustedArrayWindow_pop_next_adj(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pop_next_adj", 0);
  __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._float64window.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 = 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) != 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_14_float64window_19AdjustedArrayWindow_3__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_3__iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_2__iter__(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_2__iter__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);
  __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._float64window.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_14_float64window_19AdjustedArrayWindow_5__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_5__next__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_4__next__(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_4__next__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__", 0);
  __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);
  __Pyx_AddTraceback("zipline.lib._float64window.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_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_14_float64window_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._float64window.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_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);
+098:             raise StopIteration()
      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_builtin_StopIteration); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 98, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(0, 98, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;
 099: 
+100:         self._update_output()
  __pyx_t_4 = __pyx_f_7zipline_3lib_14_float64window_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_14_float64window_19AdjustedArrayWindow_7seek(PyObject *__pyx_v_self, PyObject *__pyx_arg_target_anchor); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_7seek(PyObject *__pyx_v_self, PyObject *__pyx_arg_target_anchor) {
  Py_ssize_t __pyx_v_target_anchor;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("seek (wrapper)", 0);
  assert(__pyx_arg_target_anchor); {
    __pyx_v_target_anchor = __Pyx_PyIndex_AsSsize_t(__pyx_arg_target_anchor); if (unlikely((__pyx_v_target_anchor == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("zipline.lib._float64window.AdjustedArrayWindow.seek", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_6seek(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self), ((Py_ssize_t)__pyx_v_target_anchor));
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_6seek(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self, Py_ssize_t __pyx_v_target_anchor) {
  Py_ssize_t __pyx_v_anchor;
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("seek", 0);
  __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._float64window.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;
}
 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) != 0);
  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_, 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_ = PyTuple_Pack(1, __pyx_kp_u_Can_not_access_data_after_window); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);
 109: 
+110:         if target_anchor == anchor:
  __pyx_t_2 = ((__pyx_v_target_anchor == __pyx_v_anchor) != 0);
  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_14_float64window_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_14_float64window_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_14_float64window_19AdjustedArrayWindow__tick_forward(struct __pyx_obj_7zipline_3lib_14_float64window_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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_tick_forward", 0);
  __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_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("zipline.lib._float64window.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) != 0);
  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;
    if (CYTHON_UNPACK_METHODS && 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_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __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)) != 0);
    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_6 = 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_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) 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 = 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 {
          if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) 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 = 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_6(__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_7 = __pyx_memoryview_fromslice(__pyx_v_self->data, 2, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_14_float64window_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_14_float64window_19AdjustedArrayWindow__update_output(struct __pyx_obj_7zipline_3lib_14_float64window_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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_update_output", 0);
  __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_XDEC_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._float64window.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, 0);
  __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_float64_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_float64_t, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
  __pyx_t_4.memview = NULL;
  __pyx_t_4.data = NULL;
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && 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_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6);
  __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_8 = __Pyx_PyObject_IsTrue(__pyx_v_view_kwargs); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 146, __pyx_L1_error)
  if (__pyx_t_8) {
/* … */
  }
+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_9 = (__pyx_v_self->rounding_places != Py_None);
  __pyx_t_10 = (__pyx_t_9 != 0);
  if (__pyx_t_10) {
  } else {
    __pyx_t_8 = __pyx_t_10;
    goto __pyx_L5_bool_binop_done;
  }
/* … */
  if (__pyx_t_8) {
/* … */
  }
+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;
  if (CYTHON_UNPACK_METHODS && 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_7 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_n_u_float64) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_n_u_float64);
  __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_5 = 0;
  if (CYTHON_UNPACK_METHODS && 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_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_2, __pyx_t_7};
    __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_2, __pyx_t_7};
    __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else
  #endif
  {
    __pyx_t_12 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    if (__pyx_t_11) {
      __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_5, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_5, __pyx_t_7);
    __pyx_t_2 = 0;
    __pyx_t_7 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  }
  __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_8 = __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_12 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_12)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_12);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_6 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_12, __pyx_v_self->rounding_places) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->rounding_places);
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 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_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+152:         self.output = new_out
  __Pyx_INCREF(((PyObject *)__pyx_v_new_out));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_new_out));
  __Pyx_GOTREF(__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_14_float64window_19AdjustedArrayWindow_9__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7zipline_3lib_14_float64window_19AdjustedArrayWindow_9__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_8__repr__(((struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7zipline_3lib_14_float64window_19AdjustedArrayWindow_8__repr__(struct __pyx_obj_7zipline_3lib_14_float64window_AdjustedArrayWindow *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_TraceDeclarations
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__", 0);
  __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._float64window.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__2);
  __pyx_t_2 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u__2);
/* … */
  __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); 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__3);
  __pyx_t_2 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__3);
  PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_kp_u__3);
 161:         )