Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multirun works with hydra.verbose=True #1976

Merged
merged 1 commit into from
Jan 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
62 changes: 46 additions & 16 deletions hydra/_internal/hydra.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,10 @@ def _print_plugins(self) -> None:
log.debug("\t\t{}".format(plugin_name))

def _print_search_path(
self, config_name: Optional[str], overrides: List[str]
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
assert log is not None
log.debug("")
Expand All @@ -395,7 +398,7 @@ def _print_search_path(
cfg = self.compose_config(
config_name=config_name,
overrides=overrides,
run_mode=RunMode.RUN,
run_mode=run_mode,
with_log_configuration=False,
)
HydraConfig.instance().set_config(cfg)
Expand Down Expand Up @@ -458,18 +461,23 @@ def _print_plugins_profiling_info(self, top_n: int) -> None:
self._log_footer(header=header, filler="-")

def _print_config_info(
self, config_name: Optional[str], overrides: List[str]
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
assert log is not None
self._print_search_path(config_name=config_name, overrides=overrides)
self._print_search_path(
config_name=config_name, overrides=overrides, run_mode=run_mode
)
self._print_defaults_tree(config_name=config_name, overrides=overrides)
self._print_defaults_list(config_name=config_name, overrides=overrides)

cfg = run_and_report(
lambda: self.compose_config(
config_name=config_name,
overrides=overrides,
run_mode=RunMode.RUN,
run_mode=run_mode,
with_log_configuration=False,
)
)
Expand All @@ -480,13 +488,16 @@ def _print_config_info(
log.info(OmegaConf.to_yaml(cfg))

def _print_defaults_list(
self, config_name: Optional[str], overrides: List[str]
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
assert log is not None
defaults = self.config_loader.compute_defaults_list(
config_name=config_name,
overrides=overrides,
run_mode=RunMode.RUN,
run_mode=run_mode,
)

box: List[List[str]] = [
Expand Down Expand Up @@ -534,10 +545,11 @@ def _print_debug_info(
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
assert log is not None
if log.isEnabledFor(logging.DEBUG):
self._print_all_info(config_name, overrides)
self._print_all_info(config_name, overrides, run_mode)

def compose_config(
self,
Expand Down Expand Up @@ -566,21 +578,30 @@ def compose_config(
configure_log(cfg.hydra.hydra_logging, cfg.hydra.verbose)
global log
log = logging.getLogger(__name__)
self._print_debug_info(config_name, overrides)
self._print_debug_info(config_name, overrides, run_mode)
return cfg

def _print_plugins_info(
self, config_name: Optional[str], overrides: List[str]
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
self._print_plugins()
self._print_plugins_profiling_info(top_n=10)

def _print_all_info(self, config_name: Optional[str], overrides: List[str]) -> None:
def _print_all_info(
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:

from .. import __version__

self._log_header(f"Hydra {__version__}", filler="=")
self._print_plugins()
self._print_config_info(config_name, overrides)
self._print_config_info(config_name, overrides, run_mode)

def _print_defaults_tree_impl(
self,
Expand Down Expand Up @@ -616,20 +637,27 @@ def to_str(node: InputDefault) -> str:
log.info(pad + to_str(tree))

def _print_defaults_tree(
self, config_name: Optional[str], overrides: List[str]
self,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
assert log is not None
defaults = self.config_loader.compute_defaults_list(
config_name=config_name,
overrides=overrides,
run_mode=RunMode.RUN,
run_mode=run_mode,
)
log.info("")
self._log_header("Defaults Tree", filler="*")
self._print_defaults_tree_impl(defaults.defaults_tree)

def show_info(
self, info: str, config_name: Optional[str], overrides: List[str]
self,
info: str,
config_name: Optional[str],
overrides: List[str],
run_mode: RunMode = RunMode.RUN,
) -> None:
options = {
"all": self._print_all_info,
Expand All @@ -647,4 +675,6 @@ def show_info(
opts = sorted(options.keys())
log.error(f"Info usage: --info [{'|'.join(opts)}]")
else:
options[info](config_name=config_name, overrides=overrides)
options[info](
config_name=config_name, overrides=overrides, run_mode=run_mode
)
1 change: 1 addition & 0 deletions news/1897.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
hydra.verbose=True now works with multirun.
1 change: 1 addition & 0 deletions tests/test_apps/hydra_verbose/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
3 changes: 3 additions & 0 deletions tests/test_apps/hydra_verbose/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
hydra:
verbose:
True
13 changes: 13 additions & 0 deletions tests/test_apps/hydra_verbose/my_app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
from omegaconf import DictConfig

import hydra


@hydra.main(config_path=".", config_name="config")
def my_app(_: DictConfig) -> None:
pass


if __name__ == "__main__":
my_app()
15 changes: 15 additions & 0 deletions tests/test_hydra.py
Original file line number Diff line number Diff line change
Expand Up @@ -1570,3 +1570,18 @@ def test_disable_chdir_with_app_chdir(tmpdir: Path, chdir: bool) -> None:
result, _err = run_python_script(cmd)
_path = os.getcwd() if chdir else Path(tmpdir) / "subdir"
assert f"current dir: {_path}" in result


@mark.parametrize(
"multirun",
[False, True],
)
def test_hydra_verbose_1897(tmpdir: Path, multirun: bool) -> None:
cmd = [
"tests/test_apps/hydra_verbose/my_app.py",
f"hydra.run.dir={tmpdir}",
"hydra.job.chdir=False",
]
if multirun:
cmd += ["+a=1,2", "-m"]
run_python_script(cmd)