class_docstr: Converts minute pricing data into a daily summary, to be used for the
  last slot in a call to history with a frequency of `1d`.
  
  This summary is the same as a daily bar rollup of minute data, with the
  distinction that the summary is truncated to the `dt` requested.
  i.e. the aggregation slides forward during a the course of simulation day.
  
  Provides aggregation for `open`, `high`, `low`, `close`, and `volume`.
  The aggregation rules for each price type is documented in their respective
class_docstr_tok: ["Converts","minute","pricing","data","into","a","daily","summary",",","to","be","used","for","the","last","slot","in","a","call","to","history","with","a","frequency","of","`","1d","`",".","This","summary","is","the","same","as","a","daily","bar","rollup","of","minute","data",",","with","the","distinction","that","the","summary","is","truncated","to","the","`","dt","`","requested",".","i.e",".","the","aggregation","slides","forward","during","a","the","course","of","simulation","day",".","Provides","aggregation","for","`","open","`",",","`","high","`",",","`","low","`",",","`","close","`",",","and","`","volume","`",".","The","aggregation","rules","for","each","price","type","is","documented","in","their","respective"]
code: def __init__(self, market_opens, minute_reader, trading_calendar):
      self._market_opens = market_opens
      self._minute_reader = minute_reader
      self._trading_calendar = trading_calendar
  
      # The caches are structured as (date, market_open, entries), where
      # entries is a dict of asset -> (last_visited_dt, value)
      #
      # Whenever an aggregation method determines the current value,
      # the entry for the respective asset should be overwritten with a new
      # entry for the current dt.value (int) and aggregation value.
      #
      # When the requested dt's date is different from date the cache is
      # flushed, so that the cache entries do not grow unbounded.
      #
      # Example cache:
      # cache = (date(2016, 3, 17),
      #          pd.Timestamp('2016-03-17 13:31', tz='UTC'),
      #          {
      #              1: (1458221460000000000, np.nan),
      #              2: (1458221460000000000, 42.0),
      #         })
      self._caches = {
          "open": None,
          "high": None,
          "low": None,
          "close": None,
          "volume": None,
      }
  
      # The int value is used for deltas to avoid extra computation from
      # creating new Timestamps.
      self._one_min = pd.Timedelta("1 min").value
  
imports: from collections import OrderedDict
  from abc import ABCMeta, abstractmethod
  import numpy
  import pandas
  from six import with_metaclass
  from catalyst.data._resample import _minute_to_session_open, _minute_to_session_high, _minute_to_session_low, _minute_to_session_close, _minute_to_session_volume
  from catalyst.data.bar_reader import NoDataOnDate
  from catalyst.data.minute_bars import MinuteBarReader
  from catalyst.data.session_bars import SessionBarReader
  from catalyst.utils.memoize import lazyval
label_desc: Use image node_id 1 to create a new DailyHistoryAggregator object from inherited base classes: object with example: obj = DailyHistoryAggregator(market_opens, minute_reader, trading_calendar)