code: def build_hardware_simulator(
              cls,
              attached_instruments: Dict[top_types.Mount, Dict[str, Optional[str]]] = None,  # noqa E501
              attached_modules: List[str] = None,
              config: robot_configs.robot_config = None,
              loop: asyncio.AbstractEventLoop = None,
              strict_attached_instruments: bool = True) -> 'API':
          
  
          if None is attached_instruments:
              attached_instruments = {}
  
          if None is attached_modules:
              attached_modules = []
          return cls(Simulator(attached_instruments,
                               attached_modules,
                               config, loop,
                               strict_attached_instruments),
                     config=config, loop=loop)
docs: Build a simulating hardware controller.
  
          This method may be used both on a real robot and on dev machines.
          Multiple simulating hardware controllers may be active at one time.