def __enter__(self) -> "SweepTaskFunction": overrides = copy.deepcopy(self.overrides) assert overrides is not None if self.temp_dir: Path(self.temp_dir).mkdir(parents=True, exist_ok=True) else: self.temp_dir = tempfile.mkdtemp() overrides.append(f"hydra.sweep.dir={self.temp_dir}") try: config_dir, config_name = split_config_path( self.config_path, self.config_name ) job_name = detect_task_name(self.calling_file, self.calling_module) hydra_ = Hydra.create_main_hydra_file_or_module( calling_file=self.calling_file, calling_module=self.calling_module, config_path=config_dir, job_name=job_name, strict=self.strict, ) self.returns = hydra_.multirun( config_name=config_name, task_function=self, overrides=overrides, with_log_configuration=self.configure_logging, ) finally: GlobalHydra().clear() return self
def __enter__(self) -> "TaskTestFunction": try: config_dir, config_name = split_config_path( self.config_path, self.config_name) job_name = detect_task_name(self.calling_file, self.calling_module) self.hydra = Hydra.create_main_hydra_file_or_module( calling_file=self.calling_file, calling_module=self.calling_module, config_path=config_dir, job_name=job_name, strict=self.strict, ) self.temp_dir = tempfile.mkdtemp() overrides = copy.deepcopy(self.overrides) assert overrides is not None overrides.append(f"hydra.run.dir={self.temp_dir}") self.job_ret = self.hydra.run( config_name=config_name, task_function=self, overrides=overrides, with_log_configuration=self.configure_logging, ) return self finally: GlobalHydra().clear()
def __enter__(self) -> "TaskTestFunction": try: config_dir, config_file = split_config_path(self.config_path) self.hydra = Hydra.create_main_hydra_file_or_module( calling_file=self.calling_file, calling_module=self.calling_module, config_dir=config_dir, strict=self.strict, ) self.temp_dir = tempfile.mkdtemp() overrides = copy.deepcopy(self.overrides) assert overrides is not None overrides.append("hydra.run.dir={}".format(self.temp_dir)) self.job_ret = self.hydra.run(config_file=config_file, task_function=self, overrides=overrides) return self finally: GlobalHydra().clear()
def __enter__(self) -> "SweepTaskFunction": self.temp_dir = tempfile.mkdtemp() overrides = copy.deepcopy(self.overrides) assert overrides is not None overrides.append(f"hydra.sweep.dir={self.temp_dir}") try: config_dir, config_name = split_config_path( self.config_path, self.config_name) hydra_ = Hydra.create_main_hydra_file_or_module( calling_file=self.calling_file, calling_module=self.calling_module, config_dir=config_dir, strict=self.strict, ) self.returns = hydra_.multirun(config_name=config_name, task_function=self, overrides=overrides) finally: GlobalHydra().clear() return self
def run_hydra( args_parser: argparse.ArgumentParser, task_function: TaskFunction, config_path: Optional[str], config_name: Optional[str], strict: Optional[bool], ) -> None: from hydra.core.global_hydra import GlobalHydra from .hydra import Hydra args = args_parser.parse_args() if args.config_name is not None: config_name = args.config_name if args.config_path is not None: config_path = args.config_path ( calling_file, calling_module, task_name, ) = detect_calling_file_or_module_from_task_function(task_function) config_dir, config_name = split_config_path(config_path, config_name) search_path = create_automatic_config_search_path(calling_file, calling_module, config_dir) hydra = run_and_report(lambda: Hydra.create_main_hydra2( task_name=task_name, config_search_path=search_path, strict=strict)) try: if args.help: hydra.app_help(config_name=config_name, args_parser=args_parser, args=args) sys.exit(0) if args.hydra_help: hydra.hydra_help(config_name=config_name, args_parser=args_parser, args=args) sys.exit(0) has_show_cfg = args.cfg is not None num_commands = (args.run + has_show_cfg + args.multirun + args.shell_completion + args.info) if num_commands > 1: raise ValueError( "Only one of --run, --multirun, -cfg, --info and --shell_completion can be specified" ) if num_commands == 0: args.run = True if args.run: run_and_report(lambda: hydra.run( config_name=config_name, task_function=task_function, overrides=args.overrides, )) elif args.multirun: run_and_report(lambda: hydra.multirun( config_name=config_name, task_function=task_function, overrides=args.overrides, )) elif args.cfg: run_and_report(lambda: hydra.show_cfg( config_name=config_name, overrides=args.overrides, cfg_type=args.cfg, package=args.package, )) elif args.shell_completion: run_and_report(lambda: hydra.shell_completion( config_name=config_name, overrides=args.overrides)) elif args.info: hydra.show_info(config_name=config_name, overrides=args.overrides) else: sys.stderr.write("Command not specified\n") sys.exit(1) finally: GlobalHydra.instance().clear()
def run_hydra( args_parser: argparse.ArgumentParser, task_function: TaskFunction, config_path: Optional[str], config_name: Optional[str], strict: Optional[bool], ) -> None: from hydra.core.global_hydra import GlobalHydra from .hydra import Hydra calling_file, calling_module = detect_calling_file_or_module_from_task_function( task_function ) config_dir, config_name = split_config_path(config_path, config_name) strict = _strict_mode_strategy(strict, config_name) task_name = detect_task_name(calling_file, calling_module) search_path = create_automatic_config_search_path( calling_file, calling_module, config_dir ) hydra = Hydra.create_main_hydra2( task_name=task_name, config_search_path=search_path, strict=strict ) try: args = args_parser.parse_args() if args.help: hydra.app_help(config_name=config_name, args_parser=args_parser, args=args) sys.exit(0) if args.hydra_help: hydra.hydra_help( config_name=config_name, args_parser=args_parser, args=args ) sys.exit(0) has_show_cfg = args.cfg is not None num_commands = args.run + has_show_cfg + args.multirun + args.shell_completion if num_commands > 1: raise ValueError( "Only one of --run, --multirun, -cfg and --shell_completion can be specified" ) if num_commands == 0: args.run = True if args.run: hydra.run( config_name=config_name, task_function=task_function, overrides=args.overrides, ) elif args.multirun: hydra.multirun( config_name=config_name, task_function=task_function, overrides=args.overrides, ) elif args.cfg: hydra.show_cfg( config_name=config_name, overrides=args.overrides, cfg_type=args.cfg ) elif args.shell_completion: hydra.shell_completion(config_name=config_name, overrides=args.overrides) else: print("Command not specified") sys.exit(1) finally: GlobalHydra.instance().clear()
def _run_hydra( args_parser: argparse.ArgumentParser, task_function: TaskFunction, config_path: Optional[str], config_name: Optional[str], strict: Optional[bool], ) -> None: from hydra.core.global_hydra import GlobalHydra from .hydra import Hydra args = args_parser.parse_args() if args.config_name is not None: config_name = args.config_name if args.config_path is not None: config_path = args.config_path ( calling_file, calling_module, task_name, ) = detect_calling_file_or_module_from_task_function(task_function) config_dir, config_name = split_config_path(config_path, config_name) search_path = create_automatic_config_search_path( calling_file, calling_module, config_dir ) def add_conf_dir() -> None: if args.config_dir is not None: abs_config_dir = os.path.abspath(args.config_dir) if not os.path.isdir(abs_config_dir): raise SearchPathException( f"Additional config directory '{abs_config_dir}' not found" ) search_path.prepend( provider="command-line", path=f"file://{abs_config_dir}", anchor=SearchPathQuery(provider="schema"), ) run_and_report(add_conf_dir) hydra = run_and_report( lambda: Hydra.create_main_hydra2( task_name=task_name, config_search_path=search_path, strict=strict ) ) try: if args.help: hydra.app_help(config_name=config_name, args_parser=args_parser, args=args) sys.exit(0) if args.hydra_help: hydra.hydra_help( config_name=config_name, args_parser=args_parser, args=args ) sys.exit(0) has_show_cfg = args.cfg is not None num_commands = ( args.run + has_show_cfg + args.multirun + args.shell_completion + (args.info is not None) ) if num_commands > 1: raise ValueError( "Only one of --run, --multirun, -cfg, --info and --shell_completion can be specified" ) if num_commands == 0: args.run = True if args.run: run_and_report( lambda: hydra.run( config_name=config_name, task_function=task_function, overrides=args.overrides, ) ) elif args.multirun: run_and_report( lambda: hydra.multirun( config_name=config_name, task_function=task_function, overrides=args.overrides, ) ) elif args.cfg: run_and_report( lambda: hydra.show_cfg( config_name=config_name, overrides=args.overrides, cfg_type=args.cfg, package=args.package, ) ) elif args.shell_completion: run_and_report( lambda: hydra.shell_completion( config_name=config_name, overrides=args.overrides ) ) elif args.info: hydra.show_info( args.info, config_name=config_name, overrides=args.overrides ) else: sys.stderr.write("Command not specified\n") sys.exit(1) finally: GlobalHydra.instance().clear()