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':
        """ 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.
        """

        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)
def build_hardware_simulator ( cls , attached_instruments : Dict [ top_types . Mount , Dict [ str , Optional [ str ] ] ] = None , 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 )
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.