class_docstr: Calculates adjustments for continuous futures, based on the
  close and open of the contracts on the either side of each roll.
class_docstr_tok: ["Calculates","adjustments","for","continuous","futures",",","based","on","the","close","and","open","of","the","contracts","on","the","either","side","of","each","roll","."]
code: def __init__(
      self,
      trading_calendar,
      asset_finder,
      bar_reader,
      roll_finders,
      frequency,
  ):
      self._trading_calendar = trading_calendar
      self._asset_finder = asset_finder
      self._bar_reader = bar_reader
      self._roll_finders = roll_finders
      self._frequency = frequency
  
imports: from abc import ABCMeta, abstractmethod, abstractproperty
  from numpy import concatenate
  from lru import LRU
  from pandas import isnull
  from toolz import sliding_window
  from six import with_metaclass
  from zipline.assets import Equity, Future
  from zipline.assets.continuous_futures import ContinuousFuture
  from zipline.lib._int64window import AdjustedArrayWindow
  from zipline.lib._float64window import AdjustedArrayWindow
  from zipline.lib.adjustment import Float64Multiply, Float64Add
  from zipline.utils.cache import ExpiringCache
  from zipline.utils.math_utils import number_of_decimal_places
  from zipline.utils.memoize import lazyval
  from zipline.utils.numpy_utils import float64_dtype
  from zipline.utils.pandas_utils import find_in_sorted_index, normalize_date
label_desc: Use image node_id 1 to create a new ContinuousFutureAdjustmentReader object from inherited base classes: object with example: obj = ContinuousFutureAdjustmentReader(trading_calendar, asset_finder, bar_reader, roll_finders, frequency)