class_docstr: A base class for readers which reindexes results, filling in the additional
  indices with empty data.
  
  Used to align the reading assets which trade on different calendars.
  
  Currently only supports a ``trading_calendar`` which is a superset of the
  ``reader``'s calendar.
  
  Parameters
  ----------
  
  - trading_calendar : zipline.utils.trading_calendar.TradingCalendar
     The calendar to use when indexing results from the reader.
  - reader : MinuteBarReader|SessionBarReader
     The reader which has a calendar that is a subset of the desired
     ``trading_calendar``.
  - first_trading_session : pd.Timestamp
     The first trading session the reader should provide. Must be specified,
     since the ``reader``'s first session may not exactly align with the
     desired calendar. Specifically, in the case where the first session
     on the target calendar is a holiday on the ``reader``'s calendar.
  - last_trading_session : pd.Timestamp
     The last trading session the reader should provide. Must be specified,
     since the ``reader``'s last session may not exactly align with the
     desired calendar. Specifically, in the case where the last session
     on the target calendar is a holiday on the ``reader``'s calendar.
class_docstr_tok: ["A","base","class","for","readers","which","reindexes","results",",","filling","in","the","additional","indices","with","empty","data",".","Used","to","align","the","reading","assets","which","trade","on","different","calendars",".","Currently","only","supports","a","``","trading_calendar","``","which","is","a","superset","of","the","``","reader","``","'s","calendar",".","Parameters","--","--","--","--","--","-","trading_calendar",":","zipline.utils.trading_calendar.TradingCalendar","The","calendar","to","use","when","indexing","results","from","the","reader",".","-","reader",":","MinuteBarReader|SessionBarReader","The","reader","which","has","a","calendar","that","is","a","subset","of","the","desired","``","trading_calendar","``",".","-","first_trading_session",":","pd.Timestamp","The","first","trading","session","the","reader","should","provide",".","Must","be","specified",",","since","the","``","reader","``","'s","first","session","may","not","exactly","align","with","the","desired","calendar",".","Specifically",",","in","the","case","where","the","first","session","on","the","target","calendar","is","a","holiday","on","the","``","reader","``","'s","calendar",".","-","last_trading_session",":","pd.Timestamp","The","last","trading","session","the","reader","should","provide",".","Must","be","specified",",","since","the","``","reader","``","'s","last","session","may","not","exactly","align","with","the","desired","calendar",".","Specifically",",","in","the","case","where","the","last","session","on","the","target","calendar","is","a","holiday","on","the","``","reader","``","'s","calendar","."]
code: def get_value(self, sid, dt, field):
      # Give an empty result if no data is present.
      try:
          return self._reader.get_value(sid, dt, field)
      except NoDataOnDate:
          if field == "volume":
              return 0
          else:
              return np.nan
  
imports: from collections import OrderedDict
  from abc import ABCMeta, abstractmethod
  import numpy
  import pandas
  from six import with_metaclass
  from zipline.data._resample import _minute_to_session_open, _minute_to_session_high, _minute_to_session_low, _minute_to_session_close, _minute_to_session_volume
  from zipline.data.bar_reader import NoDataOnDate
  from zipline.data.minute_bars import MinuteBarReader
  from zipline.data.session_bars import SessionBarReader
  from zipline.utils.memoize import lazyval
label_desc: Use image node_id 5 for calling the ReindexBarReader obj's underlying member method code with example usage: obj.get_value(sid, dt, field) and returns: self, int, np