hydra-core 1.4.0.dev6__tar.gz → 1.4.0.dev9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hydra_core-1.4.0.dev6/hydra_core.egg-info → hydra_core-1.4.0.dev9}/PKG-INFO +26 -16
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/README.md +22 -12
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/__init__.py +1 -1
- hydra_core-1.4.0.dev9/hydra/_internal/_locate.py +58 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/callbacks.py +2 -46
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/config_loader_impl.py +2 -67
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/config_repository.py +16 -39
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/basic_launcher.py +10 -2
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/defaults_list.py +294 -108
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/deprecation_warning.py +5 -2
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/grammar/grammar_functions.py +8 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/hydra.py +7 -16
- hydra_core-1.4.0.dev9/hydra/_internal/instantiate/_instantiate2.py +985 -0
- hydra_core-1.4.0.dev9/hydra/_internal/logging_config.py +345 -0
- hydra_core-1.4.0.dev9/hydra/_internal/target_policy.py +1131 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/utils.py +35 -90
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/compose.py +1 -19
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/__init__.py +1 -2
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/config_store.py +3 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/default_element.py +31 -53
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/override_parser/overrides_parser.py +0 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/override_parser/overrides_visitor.py +7 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/override_parser/types.py +0 -13
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/plugins.py +1 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/utils.py +46 -29
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/errors.py +8 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/experimental/callback.py +1 -13
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/experimental/callbacks.py +2 -47
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/initialize.py +4 -24
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/main.py +28 -39
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/plugins/config_source.py +5 -8
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/plugins/sweeper.py +6 -12
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/completion.py +1 -3
- hydra_core-1.4.0.dev9/hydra/test_utils/configs/package_tests/__init__.py +1 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/example_app.py +1 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/launcher_common_tests.py +2 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/test_utils.py +4 -7
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/types.py +1 -25
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/utils.py +23 -17
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/version.py +25 -34
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9/hydra_core.egg-info}/PKG-INFO +26 -16
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra_core.egg-info/SOURCES.txt +4 -2
- hydra_core-1.4.0.dev9/hydra_core.egg-info/requires.txt +1 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/pyproject.toml +2 -2
- hydra_core-1.4.0.dev9/requirements/requirements.txt +1 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/setup.py +2 -2
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_basic_sweeper.py +33 -2
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_callbacks.py +0 -19
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_compose.py +109 -169
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_config_loader.py +29 -32
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_config_repository.py +47 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_core_utils.py +30 -2
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_hydra.py +67 -58
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_hydra_cli_errors.py +0 -4
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_hydra_context_warnings.py +1 -11
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_internal_utils.py +50 -1
- hydra_core-1.4.0.dev9/tests/test_logging_config.py +590 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_overrides_parser.py +41 -35
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_utils.py +79 -8
- hydra_core-1.4.0.dev6/hydra/_internal/instantiate/_instantiate2.py +0 -803
- hydra_core-1.4.0.dev6/hydra/experimental/__init__.py +0 -10
- hydra_core-1.4.0.dev6/hydra/experimental/compose.py +0 -31
- hydra_core-1.4.0.dev6/hydra/experimental/initialize.py +0 -134
- hydra_core-1.4.0.dev6/hydra_core.egg-info/requires.txt +0 -1
- hydra_core-1.4.0.dev6/requirements/requirements.txt +0 -1
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/LICENSE +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/MANIFEST.in +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/build_helpers/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/build_helpers/bin/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/build_helpers/bin/antlr-4.11.1-complete.jar +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/build_helpers/build_helpers.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/build_helpers/test_helpers.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/config_search_path_impl.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/bash_completion.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/basic_sweeper.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/file_config_source.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/fish_completion.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/importlib_resources_config_source.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/structured_config_source.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/zsh_completion.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/grammar/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/grammar/functions.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/grammar/utils.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/instantiate/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/sources_registry.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/env/default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/help/default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/hydra_help/default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/hydra_logging/default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/hydra_logging/disabled.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/hydra_logging/hydra_debug.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/hydra_logging/none.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/job_logging/default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/job_logging/disabled.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/job_logging/none.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/job_logging/stdout.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/conf/hydra/output/default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/config_loader.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/config_search_path.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/global_hydra.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/hydra_config.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/object_type.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/override_parser/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/core/singleton.py +0 -0
- {hydra_core-1.4.0.dev6/hydra/grammar → hydra_core-1.4.0.dev9/hydra/experimental}/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/extra/pytest_plugin.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/.gitignore +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/OverrideLexer.g4 +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/OverrideParser.g4 +0 -0
- {hydra_core-1.4.0.dev6/hydra/plugins → hydra_core-1.4.0.dev9/hydra/grammar}/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/.gitignore +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideLexer.interp +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideLexer.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideLexer.tokens +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideParser.interp +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideParser.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideParser.tokens +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideParserListener.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/grammar/gen/OverrideParserVisitor.py +0 -0
- {hydra_core-1.4.0.dev6/hydra/test_utils → hydra_core-1.4.0.dev9/hydra/plugins}/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/plugins/completion_plugin.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/plugins/launcher.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/plugins/plugin.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/plugins/search_path_plugin.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/py.typed +0 -0
- {hydra_core-1.4.0.dev6/hydra/test_utils/configs → hydra_core-1.4.0.dev9/hydra/test_utils}/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/a_module.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/config_source_common_tests.py +0 -0
- {hydra_core-1.4.0.dev6/hydra/test_utils/configs/completion_test_additional_package → hydra_core-1.4.0.dev9/hydra/test_utils/configs}/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/accessing_hydra_config.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/additional_searchpath.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/config.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/group/dict.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/group/list.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/hydra/launcher/fairtask.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/missing_default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test/test_hydra/launcher/fairtask.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test_additional_file/additional_group/file_opt_additional.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test_additional_file/group/file_opt.yaml +0 -0
- {hydra_core-1.4.0.dev6/hydra/test_utils/configs/package_tests → hydra_core-1.4.0.dev9/hydra/test_utils/configs/completion_test_additional_package}/__init__.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test_additional_package/additional_group/pkg_opt_additional.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/completion_test_additional_package/group/pkg_opt.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/compose.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/conf.zip +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/config.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/config.yml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/custom_resolver.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/db/mysql.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/db/postgresql.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/db/validated_mysql.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/db/validated_postgresql.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/db_conf.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/defaults_not_list.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/group1/abc.cde.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/group1/file1.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/group1/file2.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/group2/file1.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/group2/file2.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/missing-default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/missing-optional-default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/missing_init_py/.gitignore +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/missing_init_py/test.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/optional-default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/overriding_output_dir.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/overriding_run_dir.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/package_tests/group1/option1.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/package_tests/group1/option2.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/package_tests/group2/option1.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/package_tests/group2/option2.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/package_tests/pkg_override.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/package_tests/two_packages_one_group.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/schema_key_error.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/schema_validation_error.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/some_config.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/top_level_list/file1.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/test_utils/configs/unspecified_mandatory_default.yaml +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra_core.egg-info/dependency_links.txt +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra_core.egg-info/entry_points.txt +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra_core.egg-info/top_level.txt +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/setup.cfg +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_basic_launcher.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_completion.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_config_search_path.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_env_defaults.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_errors.py +0 -0
- {hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/tests/test_plugin_interface.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hydra-core
|
|
3
|
-
Version: 1.4.0.
|
|
3
|
+
Version: 1.4.0.dev9
|
|
4
4
|
Summary: A framework for elegantly configuring complex applications
|
|
5
|
-
Home-page: https://github.com/
|
|
5
|
+
Home-page: https://github.com/hydra-ecosystem/hydra
|
|
6
6
|
Author: Omry Yadan
|
|
7
|
-
Author-email: omry@
|
|
7
|
+
Author-email: omry@yadan.net
|
|
8
8
|
License: MIT
|
|
9
9
|
Keywords: command-line configuration yaml tab-completion
|
|
10
10
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -19,7 +19,7 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: omegaconf>=2.4.0.
|
|
22
|
+
Requires-Dist: omegaconf>=2.4.0.dev15
|
|
23
23
|
Dynamic: author
|
|
24
24
|
Dynamic: author-email
|
|
25
25
|
Dynamic: classifier
|
|
@@ -33,17 +33,19 @@ Dynamic: requires-dist
|
|
|
33
33
|
Dynamic: requires-python
|
|
34
34
|
Dynamic: summary
|
|
35
35
|
|
|
36
|
-
<p align="center"><img src="https://raw.githubusercontent.com/
|
|
36
|
+
<p align="center"><img src="https://raw.githubusercontent.com/hydra-ecosystem/hydra/main/website/static/img/Hydra-Readme-logo2.svg" alt="logo" width="70%" /></p>
|
|
37
37
|
|
|
38
38
|
<p align="center">
|
|
39
39
|
<a href="https://pypi.org/project/hydra-core/"><img src="https://img.shields.io/pypi/v/hydra-core" alt="PyPI" /></a>
|
|
40
40
|
<a href="#"><img src="https://img.shields.io/pypi/pyversions/hydra-core" alt="PyPI - Python Version" /></a>
|
|
41
|
-
<a href="https://github.com/
|
|
41
|
+
<a href="https://github.com/hydra-ecosystem/hydra/actions/workflows/core_tests.yml"><img src="https://github.com/hydra-ecosystem/hydra/actions/workflows/core_tests.yml/badge.svg?branch=main" alt="GitHub Actions build" /></a>
|
|
42
42
|
<a href="https://www.pepy.tech/projects/hydra-core?versions=0.11.*&versions=1.0.*&versions=1.1.*&versions=1.2.*&versions=1.3.*&versions=1.4.*"><img src="https://pepy.tech/badge/hydra-core/month" alt="Downloads" /></a>
|
|
43
|
+
<a href="https://hydra.cc"><img src="https://hydra.cc/img/hydra-config-badge.svg" alt="Config: Hydra" /></a>
|
|
44
|
+
<a href="https://cli.dev"><img src="https://cli.dev/img/badges/cli-dev-ecosystem.svg" alt="ecosystem: cli.dev" /></a>
|
|
43
45
|
</p>
|
|
44
46
|
|
|
45
47
|
<p align="center">
|
|
46
|
-
<a href="https://github.com/
|
|
48
|
+
<a href="https://github.com/hydra-ecosystem/hydra/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/hydra-core" alt="PyPI - License" /></a>
|
|
47
49
|
<a href="https://hydra-framework.zulipchat.com/"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="Zulip chat" /></a>
|
|
48
50
|
<a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/badge/code%20style-ruff-261230.svg" alt="Code style: Ruff" /></a>
|
|
49
51
|
</p>
|
|
@@ -57,6 +59,16 @@ Dynamic: summary
|
|
|
57
59
|
|
|
58
60
|
----------------------
|
|
59
61
|
|
|
62
|
+
> [!IMPORTANT]
|
|
63
|
+
> **Hydra project transition:** Hydra moved from the `facebookresearch`
|
|
64
|
+
> GitHub organization to
|
|
65
|
+
> [`hydra-ecosystem`](https://github.com/hydra-ecosystem). The repository moved
|
|
66
|
+
> with its history, issues, and pull requests intact. Hydra remains MIT-licensed.
|
|
67
|
+
> No action is required from Hydra users at this time. Contributors should
|
|
68
|
+
> review the current guidance in [CONTRIBUTING.md](CONTRIBUTING.md). Read
|
|
69
|
+
> [Hydra's next chapter: independent stewardship](https://hydra.cc/blog/2026/08/13/independent-stewardship/)
|
|
70
|
+
> for more about the transition.
|
|
71
|
+
|
|
60
72
|
### Releases
|
|
61
73
|
|
|
62
74
|
#### Development
|
|
@@ -79,16 +91,14 @@ See the [NEWS.md](NEWS.md) file for a summary of recent changes to Hydra.
|
|
|
79
91
|
### License
|
|
80
92
|
Hydra is licensed under [MIT License](LICENSE).
|
|
81
93
|
|
|
82
|
-
## Hydra
|
|
94
|
+
## Hydra Landscape
|
|
83
95
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
* [hydra-torch](https://github.com/pytorch/hydra-torch): [configen](https://github.com/facebookresearch/hydra/tree/main/tools/configen)-generated configuration classes enabling type-safe PyTorch configuration for Hydra apps.
|
|
88
|
-
* NVIDIA's DeepLearningExamples repository contains a Hydra Launcher plugin, the [distributed_launcher](https://github.com/NVIDIA/DeepLearningExamples/tree/9c34e35c218514b8607d7cf381d8a982a01175e9/Tools/PyTorch/TimeSeriesPredictionPlatform/distributed_launcher), which makes use of the pytorch [distributed.launch](https://pytorch.org/docs/stable/distributed.html#launch-utility) API.
|
|
96
|
+
See the [Hydra Landscape](https://hydra.cc/docs/landscape/) for
|
|
97
|
+
third-party libraries, templates, plugins, and projects that use or extend
|
|
98
|
+
Hydra.
|
|
89
99
|
|
|
90
|
-
#### Ask questions in
|
|
91
|
-
* [
|
|
100
|
+
#### Ask questions in GitHub Discussions or StackOverflow (Use the tag #fb-hydra or #omegaconf):
|
|
101
|
+
* [GitHub Discussions](https://github.com/hydra-ecosystem/hydra/discussions)
|
|
92
102
|
* [StackOverflow](https://stackexchange.com/filters/391828/hydra-questions)
|
|
93
103
|
* [X](https://twitter.com/Hydra_Framework)
|
|
94
104
|
|
|
@@ -102,6 +112,6 @@ If you use Hydra in your research please use the following BibTeX entry:
|
|
|
102
112
|
title = {Hydra - A framework for elegantly configuring complex applications},
|
|
103
113
|
howpublished = {Github},
|
|
104
114
|
year = {2019},
|
|
105
|
-
url = {https://github.com/
|
|
115
|
+
url = {https://github.com/hydra-ecosystem/hydra}
|
|
106
116
|
}
|
|
107
117
|
```
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
<p align="center"><img src="https://raw.githubusercontent.com/
|
|
1
|
+
<p align="center"><img src="https://raw.githubusercontent.com/hydra-ecosystem/hydra/main/website/static/img/Hydra-Readme-logo2.svg" alt="logo" width="70%" /></p>
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<a href="https://pypi.org/project/hydra-core/"><img src="https://img.shields.io/pypi/v/hydra-core" alt="PyPI" /></a>
|
|
5
5
|
<a href="#"><img src="https://img.shields.io/pypi/pyversions/hydra-core" alt="PyPI - Python Version" /></a>
|
|
6
|
-
<a href="https://github.com/
|
|
6
|
+
<a href="https://github.com/hydra-ecosystem/hydra/actions/workflows/core_tests.yml"><img src="https://github.com/hydra-ecosystem/hydra/actions/workflows/core_tests.yml/badge.svg?branch=main" alt="GitHub Actions build" /></a>
|
|
7
7
|
<a href="https://www.pepy.tech/projects/hydra-core?versions=0.11.*&versions=1.0.*&versions=1.1.*&versions=1.2.*&versions=1.3.*&versions=1.4.*"><img src="https://pepy.tech/badge/hydra-core/month" alt="Downloads" /></a>
|
|
8
|
+
<a href="https://hydra.cc"><img src="https://hydra.cc/img/hydra-config-badge.svg" alt="Config: Hydra" /></a>
|
|
9
|
+
<a href="https://cli.dev"><img src="https://cli.dev/img/badges/cli-dev-ecosystem.svg" alt="ecosystem: cli.dev" /></a>
|
|
8
10
|
</p>
|
|
9
11
|
|
|
10
12
|
<p align="center">
|
|
11
|
-
<a href="https://github.com/
|
|
13
|
+
<a href="https://github.com/hydra-ecosystem/hydra/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/hydra-core" alt="PyPI - License" /></a>
|
|
12
14
|
<a href="https://hydra-framework.zulipchat.com/"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="Zulip chat" /></a>
|
|
13
15
|
<a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/badge/code%20style-ruff-261230.svg" alt="Code style: Ruff" /></a>
|
|
14
16
|
</p>
|
|
@@ -22,6 +24,16 @@
|
|
|
22
24
|
|
|
23
25
|
----------------------
|
|
24
26
|
|
|
27
|
+
> [!IMPORTANT]
|
|
28
|
+
> **Hydra project transition:** Hydra moved from the `facebookresearch`
|
|
29
|
+
> GitHub organization to
|
|
30
|
+
> [`hydra-ecosystem`](https://github.com/hydra-ecosystem). The repository moved
|
|
31
|
+
> with its history, issues, and pull requests intact. Hydra remains MIT-licensed.
|
|
32
|
+
> No action is required from Hydra users at this time. Contributors should
|
|
33
|
+
> review the current guidance in [CONTRIBUTING.md](CONTRIBUTING.md). Read
|
|
34
|
+
> [Hydra's next chapter: independent stewardship](https://hydra.cc/blog/2026/08/13/independent-stewardship/)
|
|
35
|
+
> for more about the transition.
|
|
36
|
+
|
|
25
37
|
### Releases
|
|
26
38
|
|
|
27
39
|
#### Development
|
|
@@ -44,16 +56,14 @@ See the [NEWS.md](NEWS.md) file for a summary of recent changes to Hydra.
|
|
|
44
56
|
### License
|
|
45
57
|
Hydra is licensed under [MIT License](LICENSE).
|
|
46
58
|
|
|
47
|
-
## Hydra
|
|
59
|
+
## Hydra Landscape
|
|
48
60
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* [hydra-torch](https://github.com/pytorch/hydra-torch): [configen](https://github.com/facebookresearch/hydra/tree/main/tools/configen)-generated configuration classes enabling type-safe PyTorch configuration for Hydra apps.
|
|
53
|
-
* NVIDIA's DeepLearningExamples repository contains a Hydra Launcher plugin, the [distributed_launcher](https://github.com/NVIDIA/DeepLearningExamples/tree/9c34e35c218514b8607d7cf381d8a982a01175e9/Tools/PyTorch/TimeSeriesPredictionPlatform/distributed_launcher), which makes use of the pytorch [distributed.launch](https://pytorch.org/docs/stable/distributed.html#launch-utility) API.
|
|
61
|
+
See the [Hydra Landscape](https://hydra.cc/docs/landscape/) for
|
|
62
|
+
third-party libraries, templates, plugins, and projects that use or extend
|
|
63
|
+
Hydra.
|
|
54
64
|
|
|
55
|
-
#### Ask questions in
|
|
56
|
-
* [
|
|
65
|
+
#### Ask questions in GitHub Discussions or StackOverflow (Use the tag #fb-hydra or #omegaconf):
|
|
66
|
+
* [GitHub Discussions](https://github.com/hydra-ecosystem/hydra/discussions)
|
|
57
67
|
* [StackOverflow](https://stackexchange.com/filters/391828/hydra-questions)
|
|
58
68
|
* [X](https://twitter.com/Hydra_Framework)
|
|
59
69
|
|
|
@@ -67,6 +77,6 @@ If you use Hydra in your research please use the following BibTeX entry:
|
|
|
67
77
|
title = {Hydra - A framework for elegantly configuring complex applications},
|
|
68
78
|
howpublished = {Github},
|
|
69
79
|
year = {2019},
|
|
70
|
-
url = {https://github.com/
|
|
80
|
+
url = {https://github.com/hydra-ecosystem/hydra}
|
|
71
81
|
}
|
|
72
82
|
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
|
|
2
2
|
|
|
3
3
|
# Source of truth for Hydra's version
|
|
4
|
-
__version__ = "1.4.0.
|
|
4
|
+
__version__ = "1.4.0.dev9"
|
|
5
5
|
from hydra import utils
|
|
6
6
|
from hydra.errors import MissingConfigException
|
|
7
7
|
from hydra.main import main
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Contributors to Hydra
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
from importlib import import_module
|
|
5
|
+
from types import ModuleType
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _locate(path: str) -> Any:
|
|
10
|
+
"""
|
|
11
|
+
Locate an object by name or dotted path, importing as necessary.
|
|
12
|
+
This is similar to the pydoc function `locate`, except that it checks for
|
|
13
|
+
the module from the given path from back to front.
|
|
14
|
+
"""
|
|
15
|
+
if path == "":
|
|
16
|
+
raise ImportError("Empty path")
|
|
17
|
+
|
|
18
|
+
parts = [part for part in path.split(".")]
|
|
19
|
+
for part in parts:
|
|
20
|
+
if not len(part):
|
|
21
|
+
raise ValueError(
|
|
22
|
+
f"Error loading '{path}': invalid dotstring."
|
|
23
|
+
+ "\nRelative imports are not supported."
|
|
24
|
+
)
|
|
25
|
+
assert len(parts) > 0
|
|
26
|
+
part0 = parts[0]
|
|
27
|
+
try:
|
|
28
|
+
obj = import_module(part0)
|
|
29
|
+
except Exception as exc_import:
|
|
30
|
+
raise ImportError(
|
|
31
|
+
f"Error loading '{path}':\n{repr(exc_import)}"
|
|
32
|
+
+ f"\nAre you sure that module '{part0}' is installed?"
|
|
33
|
+
) from exc_import
|
|
34
|
+
for m in range(1, len(parts)):
|
|
35
|
+
part = parts[m]
|
|
36
|
+
try:
|
|
37
|
+
obj = getattr(obj, part)
|
|
38
|
+
except AttributeError as exc_attr:
|
|
39
|
+
parent_dotpath = ".".join(parts[:m])
|
|
40
|
+
if isinstance(obj, ModuleType):
|
|
41
|
+
mod = ".".join(parts[: m + 1])
|
|
42
|
+
try:
|
|
43
|
+
obj = import_module(mod)
|
|
44
|
+
continue
|
|
45
|
+
except ModuleNotFoundError as exc_import:
|
|
46
|
+
raise ImportError(
|
|
47
|
+
f"Error loading '{path}':\n{repr(exc_import)}"
|
|
48
|
+
+ f"\nAre you sure that '{part}' is importable from module '{parent_dotpath}'?"
|
|
49
|
+
) from exc_import
|
|
50
|
+
except Exception as exc_import:
|
|
51
|
+
raise ImportError(
|
|
52
|
+
f"Error loading '{path}':\n{repr(exc_import)}"
|
|
53
|
+
) from exc_import
|
|
54
|
+
raise ImportError(
|
|
55
|
+
f"Error loading '{path}':\n{repr(exc_attr)}"
|
|
56
|
+
+ f"\nAre you sure that '{part}' is an attribute of '{parent_dotpath}'?"
|
|
57
|
+
) from exc_attr
|
|
58
|
+
return obj
|
|
@@ -1,54 +1,23 @@
|
|
|
1
1
|
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
|
|
2
2
|
import warnings
|
|
3
|
-
from typing import TYPE_CHECKING, Any,
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
4
4
|
|
|
5
5
|
from omegaconf import DictConfig, OmegaConf
|
|
6
6
|
|
|
7
|
-
from hydra.core.singleton import Singleton
|
|
8
7
|
from hydra.types import TaskFunction
|
|
9
8
|
|
|
10
9
|
if TYPE_CHECKING:
|
|
11
10
|
from hydra.core.utils import JobReturn
|
|
12
11
|
|
|
13
12
|
|
|
14
|
-
class CallbacksCache(metaclass=Singleton):
|
|
15
|
-
"""
|
|
16
|
-
A singleton class to cache callbacks so they are not reinstantiated during
|
|
17
|
-
compose config and start run.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
@staticmethod
|
|
21
|
-
def instance() -> "CallbacksCache":
|
|
22
|
-
return Singleton.instance(CallbacksCache) # type: ignore
|
|
23
|
-
|
|
24
|
-
cache: Dict[int, "Callbacks"]
|
|
25
|
-
|
|
26
|
-
def __init__(self) -> None:
|
|
27
|
-
self.cache = {}
|
|
28
|
-
|
|
29
|
-
|
|
30
13
|
class Callbacks:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def __init__(
|
|
34
|
-
self, config: Optional[DictConfig] = None, check_cache: bool = True
|
|
35
|
-
) -> None:
|
|
36
|
-
if config is None:
|
|
37
|
-
return
|
|
38
|
-
cache = CallbacksCache.instance().cache
|
|
39
|
-
if check_cache:
|
|
40
|
-
cached_callback = cache.get(id(config))
|
|
41
|
-
if cached_callback is not None:
|
|
42
|
-
self.callbacks = cached_callback.callbacks
|
|
43
|
-
return
|
|
44
|
-
|
|
14
|
+
def __init__(self, config: Optional[DictConfig] = None) -> None:
|
|
45
15
|
self.callbacks = []
|
|
46
16
|
from hydra.utils import instantiate
|
|
47
17
|
|
|
48
18
|
if config is not None and OmegaConf.select(config, "hydra.callbacks"):
|
|
49
19
|
for params in config.hydra.callbacks.values():
|
|
50
20
|
self.callbacks.append(instantiate(params))
|
|
51
|
-
cache[id(config)] = self
|
|
52
21
|
|
|
53
22
|
def _notify(self, function_name: str, reverse: bool = False, **kwargs: Any) -> None:
|
|
54
23
|
callbacks = reversed(self.callbacks) if reverse else self.callbacks
|
|
@@ -94,16 +63,3 @@ class Callbacks:
|
|
|
94
63
|
reverse=True,
|
|
95
64
|
**kwargs,
|
|
96
65
|
)
|
|
97
|
-
|
|
98
|
-
def on_compose_config(
|
|
99
|
-
self,
|
|
100
|
-
config: DictConfig,
|
|
101
|
-
config_name: Optional[str],
|
|
102
|
-
overrides: List[str],
|
|
103
|
-
) -> None:
|
|
104
|
-
self._notify(
|
|
105
|
-
function_name="on_compose_config",
|
|
106
|
-
config=config,
|
|
107
|
-
config_name=config_name,
|
|
108
|
-
overrides=overrides,
|
|
109
|
-
)
|
|
@@ -36,11 +36,9 @@ from hydra.core.override_parser.overrides_parser import OverridesParser
|
|
|
36
36
|
from hydra.core.override_parser.types import Override, ValueType
|
|
37
37
|
from hydra.core.utils import JobRuntime
|
|
38
38
|
from hydra.errors import ConfigCompositionException, MissingConfigException
|
|
39
|
-
from hydra.plugins.config_source import
|
|
39
|
+
from hydra.plugins.config_source import ConfigResult, ConfigSource
|
|
40
40
|
from hydra.types import RunMode
|
|
41
41
|
|
|
42
|
-
from .deprecation_warning import deprecation_warning
|
|
43
|
-
|
|
44
42
|
|
|
45
43
|
class ConfigLoaderImpl(ConfigLoader):
|
|
46
44
|
"""
|
|
@@ -315,7 +313,7 @@ class ConfigLoaderImpl(ConfigLoader):
|
|
|
315
313
|
# The Hydra node should not be read-only even if the root config is read-only.
|
|
316
314
|
OmegaConf.set_readonly(cfg.hydra, False)
|
|
317
315
|
|
|
318
|
-
# Apply command line overrides after enabling
|
|
316
|
+
# Apply command line overrides after enabling struct mode
|
|
319
317
|
ConfigLoaderImpl._apply_overrides_to_config(config_overrides, cfg)
|
|
320
318
|
for override in parsed_overrides:
|
|
321
319
|
if override.is_hydra_override():
|
|
@@ -528,69 +526,6 @@ class ConfigLoaderImpl(ConfigLoader):
|
|
|
528
526
|
f" {type(ret.config).__name__}"
|
|
529
527
|
)
|
|
530
528
|
|
|
531
|
-
if not ret.is_schema_source:
|
|
532
|
-
schema = None
|
|
533
|
-
try:
|
|
534
|
-
schema_source = repo.get_schema_source()
|
|
535
|
-
cname = ConfigSource._normalize_file_name(filename=config_path)
|
|
536
|
-
schema = schema_source.load_config(cname)
|
|
537
|
-
except ConfigLoadError:
|
|
538
|
-
# schema not found, ignore
|
|
539
|
-
pass
|
|
540
|
-
|
|
541
|
-
if schema is not None:
|
|
542
|
-
try:
|
|
543
|
-
url = "https://hydra.cc/docs/1.2/upgrades/1.0_to_1.1/automatic_schema_matching"
|
|
544
|
-
if "defaults" in schema.config:
|
|
545
|
-
raise ConfigCompositionException(
|
|
546
|
-
dedent(f"""\
|
|
547
|
-
'{config_path}' is validated against ConfigStore schema with the same name.
|
|
548
|
-
This behavior is deprecated in Hydra 1.1 and will be removed in Hydra 1.2.
|
|
549
|
-
In addition, the automatically matched schema contains a defaults list.
|
|
550
|
-
This combination is no longer supported.
|
|
551
|
-
See {url} for migration instructions.""")
|
|
552
|
-
)
|
|
553
|
-
else:
|
|
554
|
-
deprecation_warning(
|
|
555
|
-
dedent(f"""\
|
|
556
|
-
|
|
557
|
-
'{config_path}' is validated against ConfigStore schema with the same name.
|
|
558
|
-
This behavior is deprecated in Hydra 1.1 and will be removed in Hydra 1.2.
|
|
559
|
-
See {url} for migration instructions."""),
|
|
560
|
-
stacklevel=11,
|
|
561
|
-
)
|
|
562
|
-
|
|
563
|
-
# if primary config has a hydra node, remove it during validation and add it back.
|
|
564
|
-
# This allows overriding Hydra's configuration without declaring it's node
|
|
565
|
-
# in the schema of every primary config
|
|
566
|
-
hydra = None
|
|
567
|
-
hydra_config_group = (
|
|
568
|
-
default.config_path is not None
|
|
569
|
-
and default.config_path.startswith("hydra/")
|
|
570
|
-
)
|
|
571
|
-
config = ret.config
|
|
572
|
-
if (
|
|
573
|
-
default.primary
|
|
574
|
-
and isinstance(config, DictConfig)
|
|
575
|
-
and "hydra" in config
|
|
576
|
-
and not hydra_config_group
|
|
577
|
-
):
|
|
578
|
-
hydra = config.pop("hydra")
|
|
579
|
-
|
|
580
|
-
merged = OmegaConf.merge(schema.config, config)
|
|
581
|
-
assert isinstance(merged, DictConfig)
|
|
582
|
-
|
|
583
|
-
if hydra is not None:
|
|
584
|
-
with open_dict(merged):
|
|
585
|
-
merged.hydra = hydra
|
|
586
|
-
ret.config = merged
|
|
587
|
-
except OmegaConfBaseException as e:
|
|
588
|
-
raise ConfigCompositionException(
|
|
589
|
-
f"Error merging '{config_path}' with schema"
|
|
590
|
-
) from e
|
|
591
|
-
|
|
592
|
-
assert isinstance(merged, DictConfig)
|
|
593
|
-
|
|
594
529
|
res = self._embed_result_config(ret, default.package)
|
|
595
530
|
if (
|
|
596
531
|
not default.primary
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import copy
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
4
|
from dataclasses import dataclass
|
|
5
|
-
from textwrap import dedent
|
|
6
5
|
from typing import Dict, List, Optional, Tuple
|
|
7
6
|
|
|
8
7
|
from omegaconf import (
|
|
@@ -15,13 +14,11 @@ from omegaconf import (
|
|
|
15
14
|
read_write,
|
|
16
15
|
)
|
|
17
16
|
|
|
18
|
-
from hydra import version
|
|
19
17
|
from hydra.core.config_search_path import ConfigSearchPath
|
|
20
18
|
from hydra.core.object_type import ObjectType
|
|
21
19
|
from hydra.plugins.config_source import ConfigResult, ConfigSource
|
|
22
20
|
|
|
23
21
|
from ..core.default_element import ConfigDefault, GroupDefault, InputDefault
|
|
24
|
-
from .deprecation_warning import deprecation_warning
|
|
25
22
|
from .sources_registry import SourcesRegistry
|
|
26
23
|
|
|
27
24
|
|
|
@@ -170,24 +167,10 @@ class ConfigRepository(IConfigRepository):
|
|
|
170
167
|
config_path: str,
|
|
171
168
|
defaults: ListConfig,
|
|
172
169
|
) -> List[InputDefault]:
|
|
173
|
-
def issue_deprecated_name_warning() -> None:
|
|
174
|
-
# DEPRECATED: remove in 1.2
|
|
175
|
-
url = "https://hydra.cc/docs/1.2/upgrades/1.0_to_1.1/changes_to_package_header"
|
|
176
|
-
deprecation_warning(
|
|
177
|
-
message=dedent(f"""\
|
|
178
|
-
In {config_path}: Defaults List contains deprecated keyword _name_, see {url}
|
|
179
|
-
"""),
|
|
180
|
-
)
|
|
181
|
-
|
|
182
170
|
res: List[InputDefault] = []
|
|
183
171
|
for item in defaults._iter_ex(resolve=False):
|
|
184
172
|
default: InputDefault
|
|
185
173
|
if isinstance(item, DictConfig):
|
|
186
|
-
old_optional = None
|
|
187
|
-
if not version.base_at_least("1.2"):
|
|
188
|
-
if len(item) > 1:
|
|
189
|
-
if "optional" in item:
|
|
190
|
-
old_optional = item.pop("optional")
|
|
191
174
|
keys = list(item.keys())
|
|
192
175
|
|
|
193
176
|
if len(keys) > 1:
|
|
@@ -205,25 +188,10 @@ class ConfigRepository(IConfigRepository):
|
|
|
205
188
|
config_path, config_group, keywords
|
|
206
189
|
)
|
|
207
190
|
|
|
208
|
-
if not version.base_at_least("1.2"):
|
|
209
|
-
if not keywords.optional and old_optional is not None:
|
|
210
|
-
keywords.optional = old_optional
|
|
211
|
-
|
|
212
191
|
node = item._get_node(key)
|
|
213
192
|
assert node is not None and isinstance(node, Node)
|
|
214
193
|
config_value = node._value()
|
|
215
194
|
|
|
216
|
-
if not version.base_at_least("1.2"):
|
|
217
|
-
if old_optional is not None:
|
|
218
|
-
msg = dedent(
|
|
219
|
-
f"""
|
|
220
|
-
In {config_path}: 'optional: true' is deprecated.
|
|
221
|
-
Use 'optional {key}: {config_value}' instead.
|
|
222
|
-
Support for the old style is removed for Hydra version_base >= 1.2"""
|
|
223
|
-
)
|
|
224
|
-
|
|
225
|
-
deprecation_warning(msg)
|
|
226
|
-
|
|
227
195
|
if config_value is not None and not isinstance(
|
|
228
196
|
config_value, (str, list)
|
|
229
197
|
):
|
|
@@ -244,9 +212,20 @@ class ConfigRepository(IConfigRepository):
|
|
|
244
212
|
options.append(vv)
|
|
245
213
|
config_value = options
|
|
246
214
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
215
|
+
normalized_shorthand = False
|
|
216
|
+
original_group = None
|
|
217
|
+
if (
|
|
218
|
+
isinstance(config_value, str)
|
|
219
|
+
and "/" in config_value
|
|
220
|
+
and ".." not in config_value.split("/")
|
|
221
|
+
and "${" not in config_value
|
|
222
|
+
and config_value != "???"
|
|
223
|
+
):
|
|
224
|
+
original_group = keywords.group
|
|
225
|
+
group_suffix, option_name = config_value.rsplit("/", 1)
|
|
226
|
+
keywords.group = f"{keywords.group}/{group_suffix}"
|
|
227
|
+
config_value = option_name
|
|
228
|
+
normalized_shorthand = True
|
|
250
229
|
|
|
251
230
|
default = GroupDefault(
|
|
252
231
|
group=keywords.group,
|
|
@@ -255,13 +234,11 @@ class ConfigRepository(IConfigRepository):
|
|
|
255
234
|
optional=keywords.optional,
|
|
256
235
|
override=keywords.override,
|
|
257
236
|
)
|
|
237
|
+
default.normalized_shorthand = normalized_shorthand
|
|
238
|
+
default.original_group = original_group
|
|
258
239
|
|
|
259
240
|
elif isinstance(item, str):
|
|
260
241
|
path, package, _package2 = self._split_group(item)
|
|
261
|
-
if not version.base_at_least("1.2"):
|
|
262
|
-
if package is not None and "_name_" in package:
|
|
263
|
-
issue_deprecated_name_warning()
|
|
264
|
-
|
|
265
242
|
default = ConfigDefault(path=path, package=package)
|
|
266
243
|
else:
|
|
267
244
|
raise ValueError(
|
{hydra_core-1.4.0.dev6 → hydra_core-1.4.0.dev9}/hydra/_internal/core_plugins/basic_launcher.py
RENAMED
|
@@ -56,7 +56,11 @@ class BasicLauncher(Launcher):
|
|
|
56
56
|
assert self.config is not None
|
|
57
57
|
assert self.task_function is not None
|
|
58
58
|
|
|
59
|
-
configure_log(
|
|
59
|
+
configure_log(
|
|
60
|
+
self.config.hydra.hydra_logging,
|
|
61
|
+
self.config.hydra.verbose,
|
|
62
|
+
execution_whitelist=self.hydra_context.execution_whitelist,
|
|
63
|
+
)
|
|
60
64
|
sweep_dir = self.config.hydra.sweep.dir
|
|
61
65
|
Path(str(sweep_dir)).mkdir(parents=True, exist_ok=True)
|
|
62
66
|
log.info(f"Launching {len(job_overrides)} jobs locally")
|
|
@@ -79,5 +83,9 @@ class BasicLauncher(Launcher):
|
|
|
79
83
|
job_subdir_key="hydra.sweep.subdir",
|
|
80
84
|
)
|
|
81
85
|
runs.append(ret)
|
|
82
|
-
configure_log(
|
|
86
|
+
configure_log(
|
|
87
|
+
self.config.hydra.hydra_logging,
|
|
88
|
+
self.config.hydra.verbose,
|
|
89
|
+
execution_whitelist=self.hydra_context.execution_whitelist,
|
|
90
|
+
)
|
|
83
91
|
return runs
|