hydra-core 1.4.0.dev5__tar.gz → 1.4.0.dev6__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.
Files changed (184) hide show
  1. {hydra_core-1.4.0.dev5/hydra_core.egg-info → hydra_core-1.4.0.dev6}/PKG-INFO +3 -4
  2. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/README.md +1 -1
  3. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/__init__.py +1 -1
  4. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/config_loader_impl.py +57 -4
  5. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/config_repository.py +16 -8
  6. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/bash_completion.py +6 -1
  7. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/structured_config_source.py +0 -1
  8. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/defaults_list.py +16 -6
  9. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/grammar/grammar_functions.py +1 -1
  10. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/hydra.py +47 -17
  11. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/instantiate/_instantiate2.py +389 -64
  12. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/compose.py +7 -5
  13. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/default_element.py +31 -14
  14. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/override_parser/overrides_parser.py +2 -2
  15. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/override_parser/overrides_visitor.py +2 -1
  16. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/plugins.py +6 -1
  17. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/utils.py +20 -1
  18. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/completion_plugin.py +1 -1
  19. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/test_utils.py +3 -3
  20. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/utils.py +4 -0
  21. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/version.py +30 -18
  22. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6/hydra_core.egg-info}/PKG-INFO +3 -4
  23. hydra_core-1.4.0.dev6/hydra_core.egg-info/requires.txt +1 -0
  24. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/pyproject.toml +50 -25
  25. hydra_core-1.4.0.dev6/requirements/requirements.txt +1 -0
  26. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_basic_sweeper.py +21 -2
  27. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_callbacks.py +29 -0
  28. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_completion.py +54 -0
  29. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_compose.py +55 -3
  30. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_config_loader.py +1 -2
  31. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_hydra.py +17 -2
  32. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_hydra_cli_errors.py +1 -1
  33. hydra_core-1.4.0.dev6/tests/test_plugin_interface.py +106 -0
  34. hydra_core-1.4.0.dev5/hydra_core.egg-info/requires.txt +0 -2
  35. hydra_core-1.4.0.dev5/requirements/requirements.txt +0 -2
  36. hydra_core-1.4.0.dev5/tests/test_plugin_interface.py +0 -52
  37. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/LICENSE +0 -0
  38. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/MANIFEST.in +0 -0
  39. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/build_helpers/__init__.py +0 -0
  40. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/build_helpers/bin/__init__.py +0 -0
  41. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/build_helpers/bin/antlr-4.11.1-complete.jar +0 -0
  42. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/build_helpers/build_helpers.py +0 -0
  43. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/build_helpers/test_helpers.py +0 -0
  44. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/__init__.py +0 -0
  45. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/callbacks.py +0 -0
  46. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/config_search_path_impl.py +0 -0
  47. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/__init__.py +0 -0
  48. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/basic_launcher.py +0 -0
  49. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/basic_sweeper.py +0 -0
  50. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/file_config_source.py +0 -0
  51. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/fish_completion.py +0 -0
  52. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/importlib_resources_config_source.py +0 -0
  53. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/core_plugins/zsh_completion.py +0 -0
  54. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/deprecation_warning.py +0 -0
  55. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/grammar/__init__.py +0 -0
  56. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/grammar/functions.py +0 -0
  57. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/grammar/utils.py +0 -0
  58. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/instantiate/__init__.py +0 -0
  59. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/sources_registry.py +0 -0
  60. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/_internal/utils.py +0 -0
  61. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/__init__.py +0 -0
  62. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/env/default.yaml +0 -0
  63. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/help/default.yaml +0 -0
  64. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/hydra_help/default.yaml +0 -0
  65. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/hydra_logging/default.yaml +0 -0
  66. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/hydra_logging/disabled.yaml +0 -0
  67. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/hydra_logging/hydra_debug.yaml +0 -0
  68. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/hydra_logging/none.yaml +0 -0
  69. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/job_logging/default.yaml +0 -0
  70. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/job_logging/disabled.yaml +0 -0
  71. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/job_logging/none.yaml +0 -0
  72. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/job_logging/stdout.yaml +0 -0
  73. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/conf/hydra/output/default.yaml +0 -0
  74. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/__init__.py +0 -0
  75. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/config_loader.py +0 -0
  76. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/config_search_path.py +0 -0
  77. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/config_store.py +0 -0
  78. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/global_hydra.py +0 -0
  79. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/hydra_config.py +0 -0
  80. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/object_type.py +0 -0
  81. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/override_parser/__init__.py +0 -0
  82. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/override_parser/types.py +0 -0
  83. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/core/singleton.py +0 -0
  84. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/errors.py +0 -0
  85. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/experimental/__init__.py +0 -0
  86. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/experimental/callback.py +0 -0
  87. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/experimental/callbacks.py +0 -0
  88. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/experimental/compose.py +0 -0
  89. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/experimental/initialize.py +0 -0
  90. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/extra/pytest_plugin.py +0 -0
  91. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/.gitignore +0 -0
  92. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/OverrideLexer.g4 +0 -0
  93. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/OverrideParser.g4 +0 -0
  94. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/__init__.py +0 -0
  95. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/.gitignore +0 -0
  96. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideLexer.interp +0 -0
  97. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideLexer.py +0 -0
  98. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideLexer.tokens +0 -0
  99. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideParser.interp +0 -0
  100. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideParser.py +0 -0
  101. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideParser.tokens +0 -0
  102. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideParserListener.py +0 -0
  103. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/grammar/gen/OverrideParserVisitor.py +0 -0
  104. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/initialize.py +0 -0
  105. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/main.py +0 -0
  106. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/__init__.py +0 -0
  107. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/config_source.py +0 -0
  108. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/launcher.py +0 -0
  109. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/plugin.py +0 -0
  110. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/search_path_plugin.py +0 -0
  111. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/plugins/sweeper.py +0 -0
  112. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/py.typed +0 -0
  113. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/__init__.py +0 -0
  114. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/a_module.py +0 -0
  115. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/completion.py +0 -0
  116. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/config_source_common_tests.py +0 -0
  117. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/__init__.py +0 -0
  118. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/accessing_hydra_config.yaml +0 -0
  119. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/additional_searchpath.yaml +0 -0
  120. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/config.yaml +0 -0
  121. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/group/dict.yaml +0 -0
  122. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/group/list.yaml +0 -0
  123. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/hydra/launcher/fairtask.yaml +0 -0
  124. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/missing_default.yaml +0 -0
  125. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test/test_hydra/launcher/fairtask.yaml +0 -0
  126. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test_additional_file/additional_group/file_opt_additional.yaml +0 -0
  127. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test_additional_file/group/file_opt.yaml +0 -0
  128. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test_additional_package/__init__.py +0 -0
  129. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test_additional_package/additional_group/pkg_opt_additional.yaml +0 -0
  130. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/completion_test_additional_package/group/pkg_opt.yaml +0 -0
  131. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/compose.yaml +0 -0
  132. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/conf.zip +0 -0
  133. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/config.yaml +0 -0
  134. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/config.yml +0 -0
  135. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/custom_resolver.yaml +0 -0
  136. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/db/mysql.yaml +0 -0
  137. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/db/postgresql.yaml +0 -0
  138. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/db/validated_mysql.yaml +0 -0
  139. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/db/validated_postgresql.yaml +0 -0
  140. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/db_conf.yaml +0 -0
  141. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/defaults_not_list.yaml +0 -0
  142. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/group1/abc.cde.yaml +0 -0
  143. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/group1/file1.yaml +0 -0
  144. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/group1/file2.yaml +0 -0
  145. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/group2/file1.yaml +0 -0
  146. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/group2/file2.yaml +0 -0
  147. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/missing-default.yaml +0 -0
  148. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/missing-optional-default.yaml +0 -0
  149. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/missing_init_py/.gitignore +0 -0
  150. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/missing_init_py/test.yaml +0 -0
  151. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/optional-default.yaml +0 -0
  152. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/overriding_output_dir.yaml +0 -0
  153. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/overriding_run_dir.yaml +0 -0
  154. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/__init__.py +0 -0
  155. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/group1/option1.yaml +0 -0
  156. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/group1/option2.yaml +0 -0
  157. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/group2/option1.yaml +0 -0
  158. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/group2/option2.yaml +0 -0
  159. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/pkg_override.yaml +0 -0
  160. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/package_tests/two_packages_one_group.yaml +0 -0
  161. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/schema_key_error.yaml +0 -0
  162. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/schema_validation_error.yaml +0 -0
  163. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/some_config.yaml +0 -0
  164. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/top_level_list/file1.yaml +0 -0
  165. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/configs/unspecified_mandatory_default.yaml +0 -0
  166. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/example_app.py +0 -0
  167. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/test_utils/launcher_common_tests.py +0 -0
  168. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra/types.py +0 -0
  169. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra_core.egg-info/SOURCES.txt +0 -0
  170. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra_core.egg-info/dependency_links.txt +0 -0
  171. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra_core.egg-info/entry_points.txt +0 -0
  172. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/hydra_core.egg-info/top_level.txt +0 -0
  173. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/setup.cfg +0 -0
  174. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/setup.py +0 -0
  175. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_basic_launcher.py +0 -0
  176. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_config_repository.py +0 -0
  177. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_config_search_path.py +0 -0
  178. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_core_utils.py +0 -0
  179. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_env_defaults.py +0 -0
  180. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_errors.py +0 -0
  181. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_hydra_context_warnings.py +0 -0
  182. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_internal_utils.py +0 -0
  183. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_overrides_parser.py +0 -0
  184. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev6}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydra-core
3
- Version: 1.4.0.dev5
3
+ Version: 1.4.0.dev6
4
4
  Summary: A framework for elegantly configuring complex applications
5
5
  Home-page: https://github.com/facebookresearch/hydra
6
6
  Author: Omry Yadan
@@ -19,8 +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.dev12
23
- Requires-Dist: packaging
22
+ Requires-Dist: omegaconf>=2.4.0.dev13
24
23
  Dynamic: author
25
24
  Dynamic: author-email
26
25
  Dynamic: classifier
@@ -46,7 +45,7 @@ Dynamic: summary
46
45
  <p align="center">
47
46
  <a href="https://github.com/facebookresearch/hydra/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/hydra-core" alt="PyPI - License" /></a>
48
47
  <a href="https://hydra-framework.zulipchat.com/"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="Zulip chat" /></a>
49
- <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black" /></a>
48
+ <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>
50
49
  </p>
51
50
 
52
51
  <p align="center">
@@ -10,7 +10,7 @@
10
10
  <p align="center">
11
11
  <a href="https://github.com/facebookresearch/hydra/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/hydra-core" alt="PyPI - License" /></a>
12
12
  <a href="https://hydra-framework.zulipchat.com/"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="Zulip chat" /></a>
13
- <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black" /></a>
13
+ <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
14
  </p>
15
15
 
16
16
  <p align="center">
@@ -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.dev5"
4
+ __version__ = "1.4.0.dev6"
5
5
  from hydra import utils
6
6
  from hydra.errors import MissingConfigException
7
7
  from hydra.main import main
@@ -53,6 +53,7 @@ class ConfigLoaderImpl(ConfigLoader):
53
53
  ) -> None:
54
54
  self.config_search_path = config_search_path
55
55
  self.repository = ConfigRepository(config_search_path=config_search_path)
56
+ self._active_repository: Optional[IConfigRepository] = None
56
57
 
57
58
  @staticmethod
58
59
  def validate_sweep_overrides_legal(
@@ -142,6 +143,41 @@ class ConfigLoaderImpl(ConfigLoader):
142
143
  run_mode: RunMode,
143
144
  from_shell: bool = True,
144
145
  validate_sweep_overrides: bool = True,
146
+ ) -> DictConfig:
147
+ return self._load_configuration(
148
+ config_name=config_name,
149
+ overrides=overrides,
150
+ run_mode=run_mode,
151
+ from_shell=from_shell,
152
+ validate_sweep_overrides=validate_sweep_overrides,
153
+ activate_config_repository=False,
154
+ )
155
+
156
+ def _load_configuration_with_active_repository(
157
+ self,
158
+ config_name: Optional[str],
159
+ overrides: List[str],
160
+ run_mode: RunMode,
161
+ from_shell: bool = True,
162
+ validate_sweep_overrides: bool = True,
163
+ ) -> DictConfig:
164
+ return self._load_configuration(
165
+ config_name=config_name,
166
+ overrides=overrides,
167
+ run_mode=run_mode,
168
+ from_shell=from_shell,
169
+ validate_sweep_overrides=validate_sweep_overrides,
170
+ activate_config_repository=True,
171
+ )
172
+
173
+ def _load_configuration(
174
+ self,
175
+ config_name: Optional[str],
176
+ overrides: List[str],
177
+ run_mode: RunMode,
178
+ from_shell: bool,
179
+ validate_sweep_overrides: bool,
180
+ activate_config_repository: bool,
145
181
  ) -> DictConfig:
146
182
  try:
147
183
  return self._load_configuration_impl(
@@ -150,6 +186,7 @@ class ConfigLoaderImpl(ConfigLoader):
150
186
  run_mode=run_mode,
151
187
  from_shell=from_shell,
152
188
  validate_sweep_overrides=validate_sweep_overrides,
189
+ activate_config_repository=activate_config_repository,
153
190
  )
154
191
  except OmegaConfBaseException as e:
155
192
  raise ConfigCompositionException().with_traceback(sys.exc_info()[2]) from e
@@ -242,6 +279,7 @@ class ConfigLoaderImpl(ConfigLoader):
242
279
  run_mode: RunMode,
243
280
  from_shell: bool = True,
244
281
  validate_sweep_overrides: bool = True,
282
+ activate_config_repository: bool = False,
245
283
  ) -> DictConfig:
246
284
  from hydra import __version__, version
247
285
 
@@ -304,6 +342,9 @@ class ConfigLoaderImpl(ConfigLoader):
304
342
 
305
343
  cfg.hydra.job.config_name = config_name
306
344
 
345
+ if activate_config_repository:
346
+ self._active_repository = caching_repo
347
+
307
348
  return cfg
308
349
 
309
350
  def load_sweep_config(
@@ -441,11 +482,13 @@ class ConfigLoaderImpl(ConfigLoader):
441
482
  OmegaConf.update(cfg, key, value, merge=True, force_add=True)
442
483
  else:
443
484
  assert override.input_line is not None
444
- raise ConfigCompositionException(dedent(f"""\
485
+ raise ConfigCompositionException(
486
+ dedent(f"""\
445
487
  Could not append to config. An item is already at '{override.key_or_group}'.
446
488
  Either remove + prefix: '{override.input_line[1:]}'
447
489
  Or add a second + to add or override '{override.key_or_group}': '+{override.input_line}'
448
- """))
490
+ """)
491
+ )
449
492
  elif override.is_force_add():
450
493
  OmegaConf.update(cfg, key, value, merge=True, force_add=True)
451
494
  elif override.is_list_extend():
@@ -499,12 +542,14 @@ class ConfigLoaderImpl(ConfigLoader):
499
542
  try:
500
543
  url = "https://hydra.cc/docs/1.2/upgrades/1.0_to_1.1/automatic_schema_matching"
501
544
  if "defaults" in schema.config:
502
- raise ConfigCompositionException(dedent(f"""\
545
+ raise ConfigCompositionException(
546
+ dedent(f"""\
503
547
  '{config_path}' is validated against ConfigStore schema with the same name.
504
548
  This behavior is deprecated in Hydra 1.1 and will be removed in Hydra 1.2.
505
549
  In addition, the automatically matched schema contains a defaults list.
506
550
  This combination is no longer supported.
507
- See {url} for migration instructions."""))
551
+ See {url} for migration instructions.""")
552
+ )
508
553
  else:
509
554
  deprecation_warning(
510
555
  dedent(f"""\
@@ -588,6 +633,12 @@ class ConfigLoaderImpl(ConfigLoader):
588
633
  config_name: Optional[str] = None,
589
634
  overrides: Optional[List[str]] = None,
590
635
  ) -> List[str]:
636
+ if (
637
+ config_name is None
638
+ and overrides is None
639
+ and self._active_repository is not None
640
+ ):
641
+ return self._active_repository.get_group_options(group_name, results_filter)
591
642
  if overrides is None:
592
643
  overrides = []
593
644
  _, caching_repo = self._parse_overrides_and_create_caching_repo(
@@ -630,6 +681,8 @@ class ConfigLoaderImpl(ConfigLoader):
630
681
  return cfg
631
682
 
632
683
  def get_sources(self) -> List[ConfigSource]:
684
+ if self._active_repository is not None:
685
+ return self._active_repository.get_sources()
633
686
  return self.repository.get_sources()
634
687
 
635
688
  def compute_defaults_list(
@@ -51,6 +51,8 @@ class IConfigRepository(ABC):
51
51
 
52
52
 
53
53
  class ConfigRepository(IConfigRepository):
54
+ _KNOWN_DEFAULTS_LIST_KEYWORDS = ("optional", "override")
55
+
54
56
  config_search_path: ConfigSearchPath
55
57
  sources: List[ConfigSource]
56
58
 
@@ -199,7 +201,9 @@ class ConfigRepository(IConfigRepository):
199
201
  assert isinstance(key, str)
200
202
  config_group, package, _package2 = self._split_group(key)
201
203
  keywords = ConfigRepository.Keywords()
202
- self._extract_keywords_from_config_group(config_group, keywords)
204
+ self._extract_keywords_from_config_group(
205
+ config_path, config_group, keywords
206
+ )
203
207
 
204
208
  if not version.base_at_least("1.2"):
205
209
  if not keywords.optional and old_optional is not None:
@@ -301,18 +305,22 @@ class ConfigRepository(IConfigRepository):
301
305
 
302
306
  @staticmethod
303
307
  def _extract_keywords_from_config_group(
304
- group: str, keywords: "ConfigRepository.Keywords"
308
+ config_path: str, group: str, keywords: "ConfigRepository.Keywords"
305
309
  ) -> None:
306
- elements = group.split(" ")
310
+ elements = group.split()
311
+ if not elements:
312
+ raise ValueError(f"In {config_path}: Missing group name in defaults list")
307
313
  group = elements[-1]
308
314
  elements = elements[0:-1]
309
- for idx, e in enumerate(elements):
310
- if e == "optional":
315
+ for keyword in elements:
316
+ if keyword not in ConfigRepository._KNOWN_DEFAULTS_LIST_KEYWORDS:
317
+ raise ValueError(
318
+ f"In {config_path}: Unsupported keyword '{keyword}' in defaults list"
319
+ )
320
+ if keyword == "optional":
311
321
  keywords.optional = True
312
- elif e == "override":
322
+ elif keyword == "override":
313
323
  keywords.override = True
314
- else:
315
- break
316
324
  keywords.group = group
317
325
 
318
326
 
@@ -22,11 +22,16 @@ class BashCompletion(CompletionPlugin):
22
22
  if (( ${#words[@]} < 2 )); then
23
23
  return
24
24
  fi
25
+ if [[ "${words[1]}" == -* ]]; then
26
+ return
27
+ fi
25
28
  file_path=$(pwd)/${words[1]}
26
29
  if [ ! -f "$file_path" ]; then
27
30
  return
28
31
  fi
29
- grep "@hydra.main" $file_path -q
32
+ if ! grep -Fq -- "@hydra.main" "$file_path"; then
33
+ return
34
+ fi
30
35
  helper="${words[0]} ${words[1]}"
31
36
  else
32
37
  helper="${words[0]}"
@@ -9,7 +9,6 @@ from hydra.plugins.config_source import ConfigResult, ConfigSource
9
9
 
10
10
 
11
11
  class StructuredConfigSource(ConfigSource):
12
-
13
12
  def __init__(self, provider: str, path: str) -> None:
14
13
  super().__init__(provider=provider, path=path)
15
14
  # Import the module, the __init__ there is expected to register the configs.
@@ -337,7 +337,7 @@ def _check_not_missing(
337
337
  return False
338
338
 
339
339
 
340
- def _create_interpolation_map(
340
+ def _create_legacy_interpolation_map(
341
341
  overrides: Overrides,
342
342
  defaults_list: List[InputDefault],
343
343
  self_added: bool,
@@ -402,9 +402,11 @@ def _update_overrides(
402
402
  pcp = parent.get_config_path()
403
403
  okey = last_override_seen.get_override_key()
404
404
  oval = last_override_seen.get_name()
405
- raise ConfigCompositionException(dedent(f"""\
405
+ raise ConfigCompositionException(
406
+ dedent(f"""\
406
407
  In {pcp}: Override '{okey} : {oval}' is defined before '{d.get_override_key()}: {d.get_name()}'.
407
- Overrides must be at the end of the defaults list"""))
408
+ Overrides must be at the end of the defaults list""")
409
+ )
408
410
 
409
411
  if isinstance(d, GroupDefault):
410
412
  if legacy_hydra_override:
@@ -424,10 +426,12 @@ def _update_overrides(
424
426
  if interpolated_subtree:
425
427
  # Since interpolations are deferred for until all the config groups are already set,
426
428
  # Their subtree may not contain config group overrides
427
- raise ConfigCompositionException(dedent(f"""\
429
+ raise ConfigCompositionException(
430
+ dedent(f"""\
428
431
  {parent.get_config_path()}: Default List Overrides are not allowed in the subtree
429
432
  of an in interpolated config group (override {d.get_override_key()}={d.get_name()}).
430
- """))
433
+ """)
434
+ )
431
435
  overrides.add_override(parent.get_config_path(), d)
432
436
 
433
437
 
@@ -581,7 +585,13 @@ def _create_defaults_tree_impl(
581
585
  add_child(children, new_root)
582
586
 
583
587
  # processed deferred interpolations
584
- known_choices = _create_interpolation_map(overrides, defaults_list, self_added)
588
+ known_choices = OmegaConf.create(overrides.known_choices)
589
+ # TODO: Remove Hydra 1.1 compatibility in
590
+ # https://github.com/facebookresearch/hydra/issues/3221.
591
+ if not version.base_at_least("1.2"):
592
+ known_choices = _create_legacy_interpolation_map(
593
+ overrides, defaults_list, self_added
594
+ )
585
595
 
586
596
  for idx, dd in enumerate(children):
587
597
  if isinstance(dd, InputDefault) and dd.is_interpolation():
@@ -204,7 +204,7 @@ def cast_bool(*args: CastType, value: Optional[CastType] = None) -> Any:
204
204
 
205
205
 
206
206
  def choice(
207
- *args: Union[str, int, float, bool, Dict[Any, Any], List[Any], ChoiceSweep]
207
+ *args: Union[str, int, float, bool, Dict[Any, Any], List[Any], ChoiceSweep],
208
208
  ) -> ChoiceSweep:
209
209
  """
210
210
  A choice sweep over the specified values
@@ -25,6 +25,7 @@ from hydra.core.plugins import Plugins
25
25
  from hydra.core.utils import (
26
26
  JobReturn,
27
27
  JobRuntime,
28
+ JobStatus,
28
29
  configure_log,
29
30
  run_job,
30
31
  setup_globals,
@@ -149,6 +150,7 @@ class Hydra:
149
150
  overrides=overrides,
150
151
  with_log_configuration=with_log_configuration,
151
152
  run_mode=RunMode.RUN,
153
+ activate_config_repository=True,
152
154
  )
153
155
  if cfg.hydra.mode is None:
154
156
  cfg.hydra.mode = RunMode.RUN
@@ -158,16 +160,30 @@ class Hydra:
158
160
  callbacks = Callbacks(cfg)
159
161
  callbacks.on_run_start(config=cfg, config_name=config_name)
160
162
 
161
- ret = run_job(
162
- hydra_context=HydraContext(
163
- config_loader=self.config_loader, callbacks=callbacks
164
- ),
165
- task_function=task_function,
166
- config=cfg,
167
- job_dir_key="hydra.run.dir",
168
- job_subdir_key=None,
169
- configure_logging=with_log_configuration,
170
- )
163
+ try:
164
+ ret = run_job(
165
+ hydra_context=HydraContext(
166
+ config_loader=self.config_loader, callbacks=callbacks
167
+ ),
168
+ task_function=task_function,
169
+ config=cfg,
170
+ job_dir_key="hydra.run.dir",
171
+ job_subdir_key=None,
172
+ configure_logging=with_log_configuration,
173
+ )
174
+ except KeyboardInterrupt as e:
175
+ # run_job attaches its populated JobReturn to the interrupt before
176
+ # re-raising; fall back to a minimal one if the interrupt happened
177
+ # before the job ran (e.g. during on_job_start)
178
+ job_return = getattr(e, "job_return", None)
179
+ if not isinstance(job_return, JobReturn):
180
+ job_return = JobReturn()
181
+ job_return.status = JobStatus.FAILED
182
+ job_return.return_value = e
183
+ callbacks.on_run_end(
184
+ config=cfg, config_name=config_name, job_return=job_return
185
+ )
186
+ raise
171
187
  callbacks.on_run_end(config=cfg, config_name=config_name, job_return=ret)
172
188
 
173
189
  # access the result to trigger an exception in case the job failed.
@@ -187,6 +203,7 @@ class Hydra:
187
203
  overrides=overrides,
188
204
  with_log_configuration=with_log_configuration,
189
205
  run_mode=RunMode.MULTIRUN,
206
+ activate_config_repository=True,
190
207
  )
191
208
 
192
209
  callbacks = Callbacks(cfg)
@@ -629,6 +646,7 @@ class Hydra:
629
646
  from_shell: bool = True,
630
647
  validate_sweep_overrides: bool = True,
631
648
  run_callback: bool = True,
649
+ activate_config_repository: bool = False,
632
650
  ) -> DictConfig:
633
651
  """
634
652
  :param config_name:
@@ -639,16 +657,28 @@ class Hydra:
639
657
  :param validate_sweep_overrides: True if sweep overrides should be validated
640
658
  :param run_callback: True if the on_compose_config callback should be called, generally should always
641
659
  be True except for internal use cases
660
+ :param activate_config_repository: True to retain the effective repository on the invocation loader
642
661
  :return:
643
662
  """
644
663
 
645
- cfg = self.config_loader.load_configuration(
646
- config_name=config_name,
647
- overrides=overrides,
648
- run_mode=run_mode,
649
- from_shell=from_shell,
650
- validate_sweep_overrides=validate_sweep_overrides,
651
- )
664
+ if activate_config_repository and isinstance(
665
+ self.config_loader, ConfigLoaderImpl
666
+ ):
667
+ cfg = self.config_loader._load_configuration_with_active_repository(
668
+ config_name=config_name,
669
+ overrides=overrides,
670
+ run_mode=run_mode,
671
+ from_shell=from_shell,
672
+ validate_sweep_overrides=validate_sweep_overrides,
673
+ )
674
+ else:
675
+ cfg = self.config_loader.load_configuration(
676
+ config_name=config_name,
677
+ overrides=overrides,
678
+ run_mode=run_mode,
679
+ from_shell=from_shell,
680
+ validate_sweep_overrides=validate_sweep_overrides,
681
+ )
652
682
  if with_log_configuration:
653
683
  configure_log(cfg.hydra.hydra_logging, cfg.hydra.verbose)
654
684
  global log