new_contents: """
  
  The reference simulator for all of Quantopian infastructure.
  
  If a subclass does not conform to the API it will fail at
  compiletime.
  
  Subclasses:
  
      - (partial) zipline.devsimulator.Simulator
      - ( full ) qexec.executor.simulator.ProcessSimulator
      - ( full ) qexec.executor.simulator.ThreadSimulator
      - ( full ) qexec.executor.simulator.GreenletSimulator
  
  """
  
  import abc
  from zipline.core.host import ComponentHost
  
  class SimulatorBase(ComponentHost):
  
      __metaclass__ = abc.ABCMeta
  
      def __init__(self, addresses):
          """
          Initailizes the simulator.
          """
          ComponentHost.__init__(self, addresses)
  
      @abc.abstractproperty
      def get_id(self):
          """Human readable name of the simulator."""
          return "Reference Simulator"
  
      @abc.abstractmethod
      def launch_component(self, component):
          """ Launch an indvidiaul component in the simulation. """
          raise NotImplementedError
  
      @abc.abstractmethod
      def launch_controller(self):
          """ Launch the controller for the simulation. """
          raise NotImplementedError
  
      @abc.abstractmethod
      def simulate(self):
          """ Run a simulation. """
          raise NotImplementedError
  
      @abc.abstractmethod
      def shutdown(self):
          """ Normal shutdown procedure. """
          raise NotImplementedError
  
      def cancel(self):
          """ Soft shutdown """
          self.controller.shutdown(soft=True)
  
      def kill(self):
          """ Hard shutdown """
          self.controller.shutdown(hard=True)
  
      # Extension Methods
      # -----------------
      # Provided by some simulators, those that do not will degrade
      # gracefully.
  
      # - ``did_clean_shutdown``
      # - ``point_of_failure``
      # - ``launch_debugger``
  
      def did_clean_shutdown(self):
          """
          Returns True if all the subcomponents in the simulation yielded
          cleanly.
          """
          return False
  
      def point_of_failure(self):
          """ Returns the point of failure of the code.  """
          failures = [
              c for c in self._components.values()
              if c.exception
          ]
  
          # Sort by failure time so we can follow the failure
          # through the system.
          return sorted(failures, key=lambda c: c.fail_time)
  
      def launch_debugger(self):
          """
          Launches a remote debug shell in the context of the failed component.
          """
          pass
  
subject: Integrate simulatorref.