hydra-core 1.4.0.dev5__tar.gz → 1.4.0.dev8__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 (187) hide show
  1. {hydra_core-1.4.0.dev5/hydra_core.egg-info → hydra_core-1.4.0.dev8}/PKG-INFO +3 -4
  2. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/README.md +1 -1
  3. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/__init__.py +1 -1
  4. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/callbacks.py +2 -46
  5. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/config_loader_impl.py +55 -67
  6. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/config_repository.py +16 -48
  7. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/bash_completion.py +6 -1
  8. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/structured_config_source.py +0 -1
  9. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/defaults_list.py +205 -106
  10. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/deprecation_warning.py +5 -2
  11. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/grammar/grammar_functions.py +9 -2
  12. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/hydra.py +47 -31
  13. hydra_core-1.4.0.dev8/hydra/_internal/instantiate/_instantiate2.py +869 -0
  14. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/utils.py +29 -35
  15. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/compose.py +4 -20
  16. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/__init__.py +1 -2
  17. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/config_store.py +3 -0
  18. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/default_element.py +31 -51
  19. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/override_parser/overrides_parser.py +2 -3
  20. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/override_parser/overrides_visitor.py +9 -1
  21. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/override_parser/types.py +0 -13
  22. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/plugins.py +6 -1
  23. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/utils.py +36 -30
  24. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/errors.py +8 -0
  25. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/experimental/callback.py +1 -13
  26. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/experimental/callbacks.py +2 -47
  27. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/initialize.py +4 -24
  28. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/main.py +3 -22
  29. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/plugins/completion_plugin.py +1 -1
  30. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/plugins/config_source.py +5 -8
  31. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/plugins/sweeper.py +6 -12
  32. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/completion.py +1 -3
  33. hydra_core-1.4.0.dev8/hydra/test_utils/configs/package_tests/__init__.py +1 -0
  34. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/example_app.py +1 -1
  35. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/launcher_common_tests.py +2 -1
  36. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/test_utils.py +7 -10
  37. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/types.py +0 -25
  38. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/utils.py +21 -13
  39. hydra_core-1.4.0.dev8/hydra/version.py +85 -0
  40. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8/hydra_core.egg-info}/PKG-INFO +3 -4
  41. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra_core.egg-info/SOURCES.txt +0 -2
  42. hydra_core-1.4.0.dev8/hydra_core.egg-info/requires.txt +1 -0
  43. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/pyproject.toml +50 -25
  44. hydra_core-1.4.0.dev8/requirements/requirements.txt +1 -0
  45. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_basic_sweeper.py +54 -2
  46. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_callbacks.py +29 -19
  47. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_completion.py +54 -0
  48. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_compose.py +154 -162
  49. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_config_loader.py +30 -34
  50. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_config_repository.py +47 -1
  51. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_hydra.py +82 -47
  52. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_hydra_cli_errors.py +1 -1
  53. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_hydra_context_warnings.py +1 -11
  54. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_internal_utils.py +50 -1
  55. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_overrides_parser.py +41 -35
  56. hydra_core-1.4.0.dev8/tests/test_plugin_interface.py +106 -0
  57. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_utils.py +79 -3
  58. hydra_core-1.4.0.dev5/hydra/_internal/instantiate/_instantiate2.py +0 -478
  59. hydra_core-1.4.0.dev5/hydra/experimental/__init__.py +0 -10
  60. hydra_core-1.4.0.dev5/hydra/experimental/compose.py +0 -31
  61. hydra_core-1.4.0.dev5/hydra/experimental/initialize.py +0 -134
  62. hydra_core-1.4.0.dev5/hydra/version.py +0 -82
  63. hydra_core-1.4.0.dev5/hydra_core.egg-info/requires.txt +0 -2
  64. hydra_core-1.4.0.dev5/requirements/requirements.txt +0 -2
  65. hydra_core-1.4.0.dev5/tests/test_plugin_interface.py +0 -52
  66. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/LICENSE +0 -0
  67. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/MANIFEST.in +0 -0
  68. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/build_helpers/__init__.py +0 -0
  69. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/build_helpers/bin/__init__.py +0 -0
  70. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/build_helpers/bin/antlr-4.11.1-complete.jar +0 -0
  71. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/build_helpers/build_helpers.py +0 -0
  72. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/build_helpers/test_helpers.py +0 -0
  73. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/__init__.py +0 -0
  74. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/config_search_path_impl.py +0 -0
  75. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/__init__.py +0 -0
  76. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/basic_launcher.py +0 -0
  77. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/basic_sweeper.py +0 -0
  78. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/file_config_source.py +0 -0
  79. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/fish_completion.py +0 -0
  80. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/importlib_resources_config_source.py +0 -0
  81. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/core_plugins/zsh_completion.py +0 -0
  82. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/grammar/__init__.py +0 -0
  83. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/grammar/functions.py +0 -0
  84. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/grammar/utils.py +0 -0
  85. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/instantiate/__init__.py +0 -0
  86. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/_internal/sources_registry.py +0 -0
  87. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/env/default.yaml +0 -0
  88. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/help/default.yaml +0 -0
  89. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/hydra_help/default.yaml +0 -0
  90. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/hydra_logging/default.yaml +0 -0
  91. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/hydra_logging/disabled.yaml +0 -0
  92. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/hydra_logging/hydra_debug.yaml +0 -0
  93. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/hydra_logging/none.yaml +0 -0
  94. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/job_logging/default.yaml +0 -0
  95. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/job_logging/disabled.yaml +0 -0
  96. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/job_logging/none.yaml +0 -0
  97. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/job_logging/stdout.yaml +0 -0
  98. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/conf/hydra/output/default.yaml +0 -0
  99. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/__init__.py +0 -0
  100. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/config_loader.py +0 -0
  101. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/config_search_path.py +0 -0
  102. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/global_hydra.py +0 -0
  103. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/hydra_config.py +0 -0
  104. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/object_type.py +0 -0
  105. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/override_parser/__init__.py +0 -0
  106. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/core/singleton.py +0 -0
  107. {hydra_core-1.4.0.dev5/hydra/grammar → hydra_core-1.4.0.dev8/hydra/experimental}/__init__.py +0 -0
  108. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/extra/pytest_plugin.py +0 -0
  109. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/.gitignore +0 -0
  110. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/OverrideLexer.g4 +0 -0
  111. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/OverrideParser.g4 +0 -0
  112. {hydra_core-1.4.0.dev5/hydra/plugins → hydra_core-1.4.0.dev8/hydra/grammar}/__init__.py +0 -0
  113. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/.gitignore +0 -0
  114. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideLexer.interp +0 -0
  115. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideLexer.py +0 -0
  116. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideLexer.tokens +0 -0
  117. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideParser.interp +0 -0
  118. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideParser.py +0 -0
  119. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideParser.tokens +0 -0
  120. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideParserListener.py +0 -0
  121. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/grammar/gen/OverrideParserVisitor.py +0 -0
  122. {hydra_core-1.4.0.dev5/hydra/test_utils → hydra_core-1.4.0.dev8/hydra/plugins}/__init__.py +0 -0
  123. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/plugins/launcher.py +0 -0
  124. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/plugins/plugin.py +0 -0
  125. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/plugins/search_path_plugin.py +0 -0
  126. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/py.typed +0 -0
  127. {hydra_core-1.4.0.dev5/hydra/test_utils/configs → hydra_core-1.4.0.dev8/hydra/test_utils}/__init__.py +0 -0
  128. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/a_module.py +0 -0
  129. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/config_source_common_tests.py +0 -0
  130. {hydra_core-1.4.0.dev5/hydra/test_utils/configs/completion_test_additional_package → hydra_core-1.4.0.dev8/hydra/test_utils/configs}/__init__.py +0 -0
  131. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/accessing_hydra_config.yaml +0 -0
  132. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/additional_searchpath.yaml +0 -0
  133. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/config.yaml +0 -0
  134. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/group/dict.yaml +0 -0
  135. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/group/list.yaml +0 -0
  136. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/hydra/launcher/fairtask.yaml +0 -0
  137. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/missing_default.yaml +0 -0
  138. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test/test_hydra/launcher/fairtask.yaml +0 -0
  139. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test_additional_file/additional_group/file_opt_additional.yaml +0 -0
  140. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test_additional_file/group/file_opt.yaml +0 -0
  141. {hydra_core-1.4.0.dev5/hydra/test_utils/configs/package_tests → hydra_core-1.4.0.dev8/hydra/test_utils/configs/completion_test_additional_package}/__init__.py +0 -0
  142. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test_additional_package/additional_group/pkg_opt_additional.yaml +0 -0
  143. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/completion_test_additional_package/group/pkg_opt.yaml +0 -0
  144. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/compose.yaml +0 -0
  145. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/conf.zip +0 -0
  146. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/config.yaml +0 -0
  147. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/config.yml +0 -0
  148. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/custom_resolver.yaml +0 -0
  149. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/db/mysql.yaml +0 -0
  150. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/db/postgresql.yaml +0 -0
  151. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/db/validated_mysql.yaml +0 -0
  152. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/db/validated_postgresql.yaml +0 -0
  153. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/db_conf.yaml +0 -0
  154. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/defaults_not_list.yaml +0 -0
  155. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/group1/abc.cde.yaml +0 -0
  156. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/group1/file1.yaml +0 -0
  157. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/group1/file2.yaml +0 -0
  158. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/group2/file1.yaml +0 -0
  159. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/group2/file2.yaml +0 -0
  160. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/missing-default.yaml +0 -0
  161. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/missing-optional-default.yaml +0 -0
  162. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/missing_init_py/.gitignore +0 -0
  163. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/missing_init_py/test.yaml +0 -0
  164. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/optional-default.yaml +0 -0
  165. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/overriding_output_dir.yaml +0 -0
  166. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/overriding_run_dir.yaml +0 -0
  167. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/package_tests/group1/option1.yaml +0 -0
  168. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/package_tests/group1/option2.yaml +0 -0
  169. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/package_tests/group2/option1.yaml +0 -0
  170. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/package_tests/group2/option2.yaml +0 -0
  171. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/package_tests/pkg_override.yaml +0 -0
  172. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/package_tests/two_packages_one_group.yaml +0 -0
  173. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/schema_key_error.yaml +0 -0
  174. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/schema_validation_error.yaml +0 -0
  175. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/some_config.yaml +0 -0
  176. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/top_level_list/file1.yaml +0 -0
  177. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra/test_utils/configs/unspecified_mandatory_default.yaml +0 -0
  178. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra_core.egg-info/dependency_links.txt +0 -0
  179. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra_core.egg-info/entry_points.txt +0 -0
  180. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/hydra_core.egg-info/top_level.txt +0 -0
  181. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/setup.cfg +0 -0
  182. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/setup.py +0 -0
  183. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_basic_launcher.py +0 -0
  184. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_config_search_path.py +0 -0
  185. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_core_utils.py +0 -0
  186. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_env_defaults.py +0 -0
  187. {hydra_core-1.4.0.dev5 → hydra_core-1.4.0.dev8}/tests/test_errors.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.dev8
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.dev8"
5
5
  from hydra import utils
6
6
  from hydra.errors import MissingConfigException
7
7
  from hydra.main import main
@@ -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, Dict, List, Optional
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
- callbacks: List[Any]
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 ConfigLoadError, ConfigResult, ConfigSource
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
  """
@@ -53,6 +51,7 @@ class ConfigLoaderImpl(ConfigLoader):
53
51
  ) -> None:
54
52
  self.config_search_path = config_search_path
55
53
  self.repository = ConfigRepository(config_search_path=config_search_path)
54
+ self._active_repository: Optional[IConfigRepository] = None
56
55
 
57
56
  @staticmethod
58
57
  def validate_sweep_overrides_legal(
@@ -142,6 +141,41 @@ class ConfigLoaderImpl(ConfigLoader):
142
141
  run_mode: RunMode,
143
142
  from_shell: bool = True,
144
143
  validate_sweep_overrides: bool = True,
144
+ ) -> DictConfig:
145
+ return self._load_configuration(
146
+ config_name=config_name,
147
+ overrides=overrides,
148
+ run_mode=run_mode,
149
+ from_shell=from_shell,
150
+ validate_sweep_overrides=validate_sweep_overrides,
151
+ activate_config_repository=False,
152
+ )
153
+
154
+ def _load_configuration_with_active_repository(
155
+ self,
156
+ config_name: Optional[str],
157
+ overrides: List[str],
158
+ run_mode: RunMode,
159
+ from_shell: bool = True,
160
+ validate_sweep_overrides: bool = True,
161
+ ) -> DictConfig:
162
+ return self._load_configuration(
163
+ config_name=config_name,
164
+ overrides=overrides,
165
+ run_mode=run_mode,
166
+ from_shell=from_shell,
167
+ validate_sweep_overrides=validate_sweep_overrides,
168
+ activate_config_repository=True,
169
+ )
170
+
171
+ def _load_configuration(
172
+ self,
173
+ config_name: Optional[str],
174
+ overrides: List[str],
175
+ run_mode: RunMode,
176
+ from_shell: bool,
177
+ validate_sweep_overrides: bool,
178
+ activate_config_repository: bool,
145
179
  ) -> DictConfig:
146
180
  try:
147
181
  return self._load_configuration_impl(
@@ -150,6 +184,7 @@ class ConfigLoaderImpl(ConfigLoader):
150
184
  run_mode=run_mode,
151
185
  from_shell=from_shell,
152
186
  validate_sweep_overrides=validate_sweep_overrides,
187
+ activate_config_repository=activate_config_repository,
153
188
  )
154
189
  except OmegaConfBaseException as e:
155
190
  raise ConfigCompositionException().with_traceback(sys.exc_info()[2]) from e
@@ -242,6 +277,7 @@ class ConfigLoaderImpl(ConfigLoader):
242
277
  run_mode: RunMode,
243
278
  from_shell: bool = True,
244
279
  validate_sweep_overrides: bool = True,
280
+ activate_config_repository: bool = False,
245
281
  ) -> DictConfig:
246
282
  from hydra import __version__, version
247
283
 
@@ -277,7 +313,7 @@ class ConfigLoaderImpl(ConfigLoader):
277
313
  # The Hydra node should not be read-only even if the root config is read-only.
278
314
  OmegaConf.set_readonly(cfg.hydra, False)
279
315
 
280
- # Apply command line overrides after enabling strict flag
316
+ # Apply command line overrides after enabling struct mode
281
317
  ConfigLoaderImpl._apply_overrides_to_config(config_overrides, cfg)
282
318
  for override in parsed_overrides:
283
319
  if override.is_hydra_override():
@@ -304,6 +340,9 @@ class ConfigLoaderImpl(ConfigLoader):
304
340
 
305
341
  cfg.hydra.job.config_name = config_name
306
342
 
343
+ if activate_config_repository:
344
+ self._active_repository = caching_repo
345
+
307
346
  return cfg
308
347
 
309
348
  def load_sweep_config(
@@ -441,11 +480,13 @@ class ConfigLoaderImpl(ConfigLoader):
441
480
  OmegaConf.update(cfg, key, value, merge=True, force_add=True)
442
481
  else:
443
482
  assert override.input_line is not None
444
- raise ConfigCompositionException(dedent(f"""\
483
+ raise ConfigCompositionException(
484
+ dedent(f"""\
445
485
  Could not append to config. An item is already at '{override.key_or_group}'.
446
486
  Either remove + prefix: '{override.input_line[1:]}'
447
487
  Or add a second + to add or override '{override.key_or_group}': '+{override.input_line}'
448
- """))
488
+ """)
489
+ )
449
490
  elif override.is_force_add():
450
491
  OmegaConf.update(cfg, key, value, merge=True, force_add=True)
451
492
  elif override.is_list_extend():
@@ -485,67 +526,6 @@ class ConfigLoaderImpl(ConfigLoader):
485
526
  f" {type(ret.config).__name__}"
486
527
  )
487
528
 
488
- if not ret.is_schema_source:
489
- schema = None
490
- try:
491
- schema_source = repo.get_schema_source()
492
- cname = ConfigSource._normalize_file_name(filename=config_path)
493
- schema = schema_source.load_config(cname)
494
- except ConfigLoadError:
495
- # schema not found, ignore
496
- pass
497
-
498
- if schema is not None:
499
- try:
500
- url = "https://hydra.cc/docs/1.2/upgrades/1.0_to_1.1/automatic_schema_matching"
501
- if "defaults" in schema.config:
502
- raise ConfigCompositionException(dedent(f"""\
503
- '{config_path}' is validated against ConfigStore schema with the same name.
504
- This behavior is deprecated in Hydra 1.1 and will be removed in Hydra 1.2.
505
- In addition, the automatically matched schema contains a defaults list.
506
- This combination is no longer supported.
507
- See {url} for migration instructions."""))
508
- else:
509
- deprecation_warning(
510
- dedent(f"""\
511
-
512
- '{config_path}' is validated against ConfigStore schema with the same name.
513
- This behavior is deprecated in Hydra 1.1 and will be removed in Hydra 1.2.
514
- See {url} for migration instructions."""),
515
- stacklevel=11,
516
- )
517
-
518
- # if primary config has a hydra node, remove it during validation and add it back.
519
- # This allows overriding Hydra's configuration without declaring it's node
520
- # in the schema of every primary config
521
- hydra = None
522
- hydra_config_group = (
523
- default.config_path is not None
524
- and default.config_path.startswith("hydra/")
525
- )
526
- config = ret.config
527
- if (
528
- default.primary
529
- and isinstance(config, DictConfig)
530
- and "hydra" in config
531
- and not hydra_config_group
532
- ):
533
- hydra = config.pop("hydra")
534
-
535
- merged = OmegaConf.merge(schema.config, config)
536
- assert isinstance(merged, DictConfig)
537
-
538
- if hydra is not None:
539
- with open_dict(merged):
540
- merged.hydra = hydra
541
- ret.config = merged
542
- except OmegaConfBaseException as e:
543
- raise ConfigCompositionException(
544
- f"Error merging '{config_path}' with schema"
545
- ) from e
546
-
547
- assert isinstance(merged, DictConfig)
548
-
549
529
  res = self._embed_result_config(ret, default.package)
550
530
  if (
551
531
  not default.primary
@@ -588,6 +568,12 @@ class ConfigLoaderImpl(ConfigLoader):
588
568
  config_name: Optional[str] = None,
589
569
  overrides: Optional[List[str]] = None,
590
570
  ) -> List[str]:
571
+ if (
572
+ config_name is None
573
+ and overrides is None
574
+ and self._active_repository is not None
575
+ ):
576
+ return self._active_repository.get_group_options(group_name, results_filter)
591
577
  if overrides is None:
592
578
  overrides = []
593
579
  _, caching_repo = self._parse_overrides_and_create_caching_repo(
@@ -630,6 +616,8 @@ class ConfigLoaderImpl(ConfigLoader):
630
616
  return cfg
631
617
 
632
618
  def get_sources(self) -> List[ConfigSource]:
619
+ if self._active_repository is not None:
620
+ return self._active_repository.get_sources()
633
621
  return self.repository.get_sources()
634
622
 
635
623
  def compute_defaults_list(
@@ -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
 
@@ -51,6 +48,8 @@ class IConfigRepository(ABC):
51
48
 
52
49
 
53
50
  class ConfigRepository(IConfigRepository):
51
+ _KNOWN_DEFAULTS_LIST_KEYWORDS = ("optional", "override")
52
+
54
53
  config_search_path: ConfigSearchPath
55
54
  sources: List[ConfigSource]
56
55
 
@@ -168,24 +167,10 @@ class ConfigRepository(IConfigRepository):
168
167
  config_path: str,
169
168
  defaults: ListConfig,
170
169
  ) -> List[InputDefault]:
171
- def issue_deprecated_name_warning() -> None:
172
- # DEPRECATED: remove in 1.2
173
- url = "https://hydra.cc/docs/1.2/upgrades/1.0_to_1.1/changes_to_package_header"
174
- deprecation_warning(
175
- message=dedent(f"""\
176
- In {config_path}: Defaults List contains deprecated keyword _name_, see {url}
177
- """),
178
- )
179
-
180
170
  res: List[InputDefault] = []
181
171
  for item in defaults._iter_ex(resolve=False):
182
172
  default: InputDefault
183
173
  if isinstance(item, DictConfig):
184
- old_optional = None
185
- if not version.base_at_least("1.2"):
186
- if len(item) > 1:
187
- if "optional" in item:
188
- old_optional = item.pop("optional")
189
174
  keys = list(item.keys())
190
175
 
191
176
  if len(keys) > 1:
@@ -199,27 +184,14 @@ class ConfigRepository(IConfigRepository):
199
184
  assert isinstance(key, str)
200
185
  config_group, package, _package2 = self._split_group(key)
201
186
  keywords = ConfigRepository.Keywords()
202
- self._extract_keywords_from_config_group(config_group, keywords)
203
-
204
- if not version.base_at_least("1.2"):
205
- if not keywords.optional and old_optional is not None:
206
- keywords.optional = old_optional
187
+ self._extract_keywords_from_config_group(
188
+ config_path, config_group, keywords
189
+ )
207
190
 
208
191
  node = item._get_node(key)
209
192
  assert node is not None and isinstance(node, Node)
210
193
  config_value = node._value()
211
194
 
212
- if not version.base_at_least("1.2"):
213
- if old_optional is not None:
214
- msg = dedent(
215
- f"""
216
- In {config_path}: 'optional: true' is deprecated.
217
- Use 'optional {key}: {config_value}' instead.
218
- Support for the old style is removed for Hydra version_base >= 1.2"""
219
- )
220
-
221
- deprecation_warning(msg)
222
-
223
195
  if config_value is not None and not isinstance(
224
196
  config_value, (str, list)
225
197
  ):
@@ -240,10 +212,6 @@ class ConfigRepository(IConfigRepository):
240
212
  options.append(vv)
241
213
  config_value = options
242
214
 
243
- if not version.base_at_least("1.2"):
244
- if package is not None and "_name_" in package:
245
- issue_deprecated_name_warning()
246
-
247
215
  default = GroupDefault(
248
216
  group=keywords.group,
249
217
  value=config_value,
@@ -254,10 +222,6 @@ class ConfigRepository(IConfigRepository):
254
222
 
255
223
  elif isinstance(item, str):
256
224
  path, package, _package2 = self._split_group(item)
257
- if not version.base_at_least("1.2"):
258
- if package is not None and "_name_" in package:
259
- issue_deprecated_name_warning()
260
-
261
225
  default = ConfigDefault(path=path, package=package)
262
226
  else:
263
227
  raise ValueError(
@@ -301,18 +265,22 @@ class ConfigRepository(IConfigRepository):
301
265
 
302
266
  @staticmethod
303
267
  def _extract_keywords_from_config_group(
304
- group: str, keywords: "ConfigRepository.Keywords"
268
+ config_path: str, group: str, keywords: "ConfigRepository.Keywords"
305
269
  ) -> None:
306
- elements = group.split(" ")
270
+ elements = group.split()
271
+ if not elements:
272
+ raise ValueError(f"In {config_path}: Missing group name in defaults list")
307
273
  group = elements[-1]
308
274
  elements = elements[0:-1]
309
- for idx, e in enumerate(elements):
310
- if e == "optional":
275
+ for keyword in elements:
276
+ if keyword not in ConfigRepository._KNOWN_DEFAULTS_LIST_KEYWORDS:
277
+ raise ValueError(
278
+ f"In {config_path}: Unsupported keyword '{keyword}' in defaults list"
279
+ )
280
+ if keyword == "optional":
311
281
  keywords.optional = True
312
- elif e == "override":
282
+ elif keyword == "override":
313
283
  keywords.override = True
314
- else:
315
- break
316
284
  keywords.group = group
317
285
 
318
286
 
@@ -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.