class_docstr: Abstract base class for calculating when futures contracts are the active
  contract.
class_docstr_tok: ["Abstract","base","class","for","calculating","when","futures","contracts","are","the","active","contract","."]
docstr: For the given root symbol, find the contract that is considered active
  on a specific date at a specific offset.
docstr_tok: ["For","the","given","root","symbol",",","find","the","contract","that","is","considered","active","on","a","specific","date","at","a","specific","offset","."]
code: def _get_active_contract_at_offset(self, root_symbol, dt, offset):
      """
      For the given root symbol, find the contract that is considered active
      on a specific date at a specific offset.
      """
      oc = self.asset_finder.get_ordered_contracts(root_symbol)
      session = self.trading_calendar.minute_to_session_label(dt)
      front = oc.contract_before_auto_close(session.value)
      back = oc.contract_at_offset(front, 1, dt.value)
      if back is None:
          return front
      primary = self._active_contract(oc, front, back, session)
      return oc.contract_at_offset(primary, offset, session.value)
  
file_path: zipline/zipline/assets/roll_finder.py
imports: from abc import ABCMeta, abstractmethod
  from six import with_metaclass
label_desc: Use image node_id 2 for calling the RollFinder obj's underlying member method code with example usage: obj._get_active_contract_at_offset(root_symbol, dt, offset) and returns: oc, front