def create( cls, experiment_type: str, name: str, params: Optional[Dict[str, Any]] ) -> "Experiment[BaseInputParameters, BaseOutputData]": experiment_klass = ALL_EXPERIMENTS[experiment_type] # pyre-ignore[16]: experiment_klass has no __orig_bases__ attribute params_klass = get_args(experiment_klass.__orig_bases__[0])[0] params_signature = inspect.signature(params_klass) typed_args = ({ key: params_signature.parameters[key].annotation(value) for key, value in params.items() } if params else {}) params = params_klass(**typed_args) # pyre-ignore[45]: Cannot instantiate abstract class Experiment return experiment_klass(name, params)
def run(cls, trigger: str, argv: Sequence[str]) -> int: try: command_klass = ALL_COMMANDS[trigger] # pyre-ignore[16]: command_klass has no __orig_bases__ attribute args_klass = get_args(command_klass.__orig_bases__[0])[0] args = args_klass(prog=f"labby {trigger}").parse_args(argv) auto_discover_drivers() with open(args.config, "r") as config_file: config = Config(config_file.read()) # pyre-ignore[45]: cannot instantiate Command with abstract method command = command_klass(config) return command.main(args) except pynng.exceptions.Timeout: # this had to be an inline import so the tests would use the # WASABI_LOG_FRIENDLY env variable correctly ¯\_(ツ)_/¯ from wasabi import msg msg.fail("Timeout") msg.text("The labby server did not respond. Are you sure it is started?") return 1
def get_output_data_type(cls) -> Type[BaseOutputData]: # pyre-ignore[16]: cls has no __orig_bases__ attribute return get_args(cls.__orig_bases__[0])[1]
def get_response_type(cls) -> TResponse: # pyre-ignore[16]: pyre does not understand __orig_bases__ return get_args(cls.__orig_bases__[0])[0]