hydra-core 1.4.0.dev3__tar.gz → 1.4.0.dev4__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 (181) hide show
  1. {hydra_core-1.4.0.dev3/hydra_core.egg-info → hydra_core-1.4.0.dev4}/PKG-INFO +1 -2
  2. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/__init__.py +1 -1
  3. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/grammar/grammar_functions.py +47 -16
  4. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/override_parser/types.py +17 -17
  5. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4/hydra_core.egg-info}/PKG-INFO +1 -2
  6. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/setup.py +0 -1
  7. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_overrides_parser.py +49 -2
  8. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/LICENSE +0 -0
  9. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/MANIFEST.in +0 -0
  10. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/README.md +0 -0
  11. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/build_helpers/__init__.py +0 -0
  12. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/build_helpers/bin/__init__.py +0 -0
  13. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/build_helpers/bin/antlr-4.11.1-complete.jar +0 -0
  14. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/build_helpers/build_helpers.py +0 -0
  15. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/build_helpers/test_helpers.py +0 -0
  16. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/__init__.py +0 -0
  17. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/callbacks.py +0 -0
  18. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/config_loader_impl.py +0 -0
  19. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/config_repository.py +0 -0
  20. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/config_search_path_impl.py +0 -0
  21. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/__init__.py +0 -0
  22. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/bash_completion.py +0 -0
  23. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/basic_launcher.py +0 -0
  24. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/basic_sweeper.py +0 -0
  25. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/file_config_source.py +0 -0
  26. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/fish_completion.py +0 -0
  27. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/importlib_resources_config_source.py +0 -0
  28. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/structured_config_source.py +0 -0
  29. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/core_plugins/zsh_completion.py +0 -0
  30. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/defaults_list.py +0 -0
  31. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/deprecation_warning.py +0 -0
  32. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/grammar/__init__.py +0 -0
  33. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/grammar/functions.py +0 -0
  34. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/grammar/utils.py +0 -0
  35. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/hydra.py +0 -0
  36. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/instantiate/__init__.py +0 -0
  37. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/instantiate/_instantiate2.py +0 -0
  38. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/sources_registry.py +0 -0
  39. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/_internal/utils.py +0 -0
  40. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/compose.py +0 -0
  41. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/__init__.py +0 -0
  42. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/env/default.yaml +0 -0
  43. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/help/default.yaml +0 -0
  44. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/hydra_help/default.yaml +0 -0
  45. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/hydra_logging/default.yaml +0 -0
  46. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/hydra_logging/disabled.yaml +0 -0
  47. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/hydra_logging/hydra_debug.yaml +0 -0
  48. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/hydra_logging/none.yaml +0 -0
  49. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/job_logging/default.yaml +0 -0
  50. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/job_logging/disabled.yaml +0 -0
  51. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/job_logging/none.yaml +0 -0
  52. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/job_logging/stdout.yaml +0 -0
  53. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/conf/hydra/output/default.yaml +0 -0
  54. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/__init__.py +0 -0
  55. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/config_loader.py +0 -0
  56. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/config_search_path.py +0 -0
  57. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/config_store.py +0 -0
  58. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/default_element.py +0 -0
  59. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/global_hydra.py +0 -0
  60. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/hydra_config.py +0 -0
  61. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/object_type.py +0 -0
  62. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/override_parser/__init__.py +0 -0
  63. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/override_parser/overrides_parser.py +0 -0
  64. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/override_parser/overrides_visitor.py +0 -0
  65. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/plugins.py +0 -0
  66. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/singleton.py +0 -0
  67. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/core/utils.py +0 -0
  68. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/errors.py +0 -0
  69. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/experimental/__init__.py +0 -0
  70. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/experimental/callback.py +0 -0
  71. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/experimental/callbacks.py +0 -0
  72. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/experimental/compose.py +0 -0
  73. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/experimental/initialize.py +0 -0
  74. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/extra/pytest_plugin.py +0 -0
  75. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/.gitignore +0 -0
  76. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/OverrideLexer.g4 +0 -0
  77. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/OverrideParser.g4 +0 -0
  78. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/__init__.py +0 -0
  79. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/.gitignore +0 -0
  80. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideLexer.interp +0 -0
  81. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideLexer.py +0 -0
  82. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideLexer.tokens +0 -0
  83. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideParser.interp +0 -0
  84. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideParser.py +0 -0
  85. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideParser.tokens +0 -0
  86. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideParserListener.py +0 -0
  87. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/grammar/gen/OverrideParserVisitor.py +0 -0
  88. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/initialize.py +0 -0
  89. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/main.py +0 -0
  90. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/__init__.py +0 -0
  91. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/completion_plugin.py +0 -0
  92. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/config_source.py +0 -0
  93. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/launcher.py +0 -0
  94. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/plugin.py +0 -0
  95. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/search_path_plugin.py +0 -0
  96. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/plugins/sweeper.py +0 -0
  97. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/py.typed +0 -0
  98. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/__init__.py +0 -0
  99. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/a_module.py +0 -0
  100. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/completion.py +0 -0
  101. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/config_source_common_tests.py +0 -0
  102. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/__init__.py +0 -0
  103. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/accessing_hydra_config.yaml +0 -0
  104. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/additional_searchpath.yaml +0 -0
  105. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/config.yaml +0 -0
  106. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/group/dict.yaml +0 -0
  107. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/group/list.yaml +0 -0
  108. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/hydra/launcher/fairtask.yaml +0 -0
  109. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/missing_default.yaml +0 -0
  110. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test/test_hydra/launcher/fairtask.yaml +0 -0
  111. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test_additional_file/additional_group/file_opt_additional.yaml +0 -0
  112. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test_additional_file/group/file_opt.yaml +0 -0
  113. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test_additional_package/__init__.py +0 -0
  114. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test_additional_package/additional_group/pkg_opt_additional.yaml +0 -0
  115. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/completion_test_additional_package/group/pkg_opt.yaml +0 -0
  116. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/compose.yaml +0 -0
  117. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/conf.zip +0 -0
  118. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/config.yaml +0 -0
  119. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/config.yml +0 -0
  120. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/custom_resolver.yaml +0 -0
  121. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/db/mysql.yaml +0 -0
  122. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/db/postgresql.yaml +0 -0
  123. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/db/validated_mysql.yaml +0 -0
  124. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/db/validated_postgresql.yaml +0 -0
  125. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/db_conf.yaml +0 -0
  126. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/defaults_not_list.yaml +0 -0
  127. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/group1/abc.cde.yaml +0 -0
  128. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/group1/file1.yaml +0 -0
  129. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/group1/file2.yaml +0 -0
  130. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/group2/file1.yaml +0 -0
  131. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/group2/file2.yaml +0 -0
  132. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/missing-default.yaml +0 -0
  133. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/missing-optional-default.yaml +0 -0
  134. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/missing_init_py/.gitignore +0 -0
  135. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/missing_init_py/test.yaml +0 -0
  136. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/optional-default.yaml +0 -0
  137. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/overriding_output_dir.yaml +0 -0
  138. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/overriding_run_dir.yaml +0 -0
  139. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/__init__.py +0 -0
  140. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/group1/option1.yaml +0 -0
  141. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/group1/option2.yaml +0 -0
  142. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/group2/option1.yaml +0 -0
  143. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/group2/option2.yaml +0 -0
  144. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/pkg_override.yaml +0 -0
  145. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/package_tests/two_packages_one_group.yaml +0 -0
  146. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/schema_key_error.yaml +0 -0
  147. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/schema_validation_error.yaml +0 -0
  148. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/some_config.yaml +0 -0
  149. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/top_level_list/file1.yaml +0 -0
  150. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/configs/unspecified_mandatory_default.yaml +0 -0
  151. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/example_app.py +0 -0
  152. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/launcher_common_tests.py +0 -0
  153. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/test_utils/test_utils.py +0 -0
  154. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/types.py +0 -0
  155. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/utils.py +0 -0
  156. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra/version.py +0 -0
  157. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra_core.egg-info/SOURCES.txt +0 -0
  158. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra_core.egg-info/dependency_links.txt +0 -0
  159. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra_core.egg-info/entry_points.txt +0 -0
  160. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra_core.egg-info/requires.txt +0 -0
  161. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/hydra_core.egg-info/top_level.txt +0 -0
  162. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/pyproject.toml +0 -0
  163. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/requirements/requirements.txt +0 -0
  164. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/setup.cfg +0 -0
  165. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_basic_launcher.py +0 -0
  166. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_basic_sweeper.py +0 -0
  167. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_callbacks.py +0 -0
  168. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_completion.py +0 -0
  169. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_compose.py +0 -0
  170. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_config_loader.py +0 -0
  171. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_config_repository.py +0 -0
  172. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_config_search_path.py +0 -0
  173. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_core_utils.py +0 -0
  174. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_env_defaults.py +0 -0
  175. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_errors.py +0 -0
  176. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_hydra.py +0 -0
  177. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_hydra_cli_errors.py +0 -0
  178. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_hydra_context_warnings.py +0 -0
  179. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_internal_utils.py +0 -0
  180. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_plugin_interface.py +0 -0
  181. {hydra_core-1.4.0.dev3 → hydra_core-1.4.0.dev4}/tests/test_utils.py +0 -0
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydra-core
3
- Version: 1.4.0.dev3
3
+ Version: 1.4.0.dev4
4
4
  Summary: A framework for elegantly configuring complex applications
5
5
  Home-page: https://github.com/facebookresearch/hydra
6
6
  Author: Omry Yadan
7
7
  Author-email: omry@fb.com
8
8
  License: MIT
9
9
  Keywords: command-line configuration yaml tab-completion
10
- Classifier: License :: OSI Approved :: MIT License
11
10
  Classifier: Development Status :: 4 - Beta
12
11
  Classifier: Programming Language :: Python :: 3.10
13
12
  Classifier: Programming Language :: Python :: 3.11
@@ -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.dev3"
4
+ __version__ = "1.4.0.dev4"
5
5
  from hydra import utils
6
6
  from hydra.errors import MissingConfigException
7
7
  from hydra.main import main
@@ -1,5 +1,6 @@
1
1
  # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
2
2
  import builtins
3
+ import decimal
3
4
  import json
4
5
  import random
5
6
  from copy import copy
@@ -361,27 +362,57 @@ def _sort_sweep(
361
362
  elif isinstance(sweep, RangeSweep):
362
363
  assert sweep.start is not None
363
364
  assert sweep.stop is not None
364
- if not reverse:
365
- # ascending
366
- if sweep.start > sweep.stop:
367
- start = sweep.stop + abs(sweep.step)
368
- stop = sweep.start + abs(sweep.step)
369
- sweep.start = start
370
- sweep.stop = stop
371
- sweep.step = -sweep.step
372
- else:
373
- # descending
374
- if sweep.start < sweep.stop:
375
- start = sweep.stop - abs(sweep.step)
376
- stop = sweep.start - abs(sweep.step)
377
- sweep.start = start
378
- sweep.stop = stop
379
- sweep.step = -sweep.step
365
+ if (sweep.step > 0) == reverse:
366
+ _reverse_range_sweep(sweep)
380
367
  return sweep
381
368
  else:
382
369
  assert False
383
370
 
384
371
 
372
+ def _reverse_range_sweep(sweep: RangeSweep) -> None:
373
+ r = sweep.range()
374
+ if isinstance(r, builtins.range):
375
+ count = len(r)
376
+ if count > 1:
377
+ first = r[0]
378
+ last = r[-1]
379
+ sweep.start = last
380
+ sweep.step = -sweep.step
381
+ sweep.stop = first + sweep.step
382
+ else:
383
+ start = decimal.Decimal(str(sweep.start))
384
+ stop = decimal.Decimal(str(sweep.stop))
385
+ step = decimal.Decimal(str(sweep.step))
386
+ count = _float_range_count(start=start, stop=stop, step=step)
387
+ if count > 1:
388
+ first = start
389
+ last = start + (count - 1) * step
390
+ sweep.start = last
391
+ sweep.step = -step
392
+ sweep.stop = first + sweep.step / 2
393
+
394
+
395
+ def _float_range_count(
396
+ start: decimal.Decimal, stop: decimal.Decimal, step: decimal.Decimal
397
+ ) -> int:
398
+ if step == 0:
399
+ return 0
400
+ if step > 0:
401
+ if start >= stop:
402
+ return 0
403
+ distance = stop - start
404
+ else:
405
+ if start <= stop:
406
+ return 0
407
+ distance = start - stop
408
+ step = abs(step)
409
+ quotient, remainder = divmod(distance, step)
410
+ count = int(quotient)
411
+ if remainder != 0:
412
+ count += 1
413
+ return count
414
+
415
+
385
416
  def glob(
386
417
  include: Union[List[str], str], exclude: Optional[Union[List[str], str]] = None
387
418
  ) -> Glob:
@@ -89,14 +89,15 @@ class ChoiceSweep(Sweep):
89
89
 
90
90
  @dataclass
91
91
  class FloatRange:
92
- start: Union[decimal.Decimal, float]
93
- stop: Union[decimal.Decimal, float]
94
- step: Union[decimal.Decimal, float]
92
+ start: Union[decimal.Decimal, float, int]
93
+ stop: Union[decimal.Decimal, float, int]
94
+ step: Union[decimal.Decimal, float, int]
95
+ _idx: int = field(default=0, init=False, repr=False, compare=False)
95
96
 
96
97
  def __post_init__(self) -> None:
97
- self.start = decimal.Decimal(self.start)
98
- self.stop = decimal.Decimal(self.stop)
99
- self.step = decimal.Decimal(self.step)
98
+ self.start = decimal.Decimal(str(self.start))
99
+ self.stop = decimal.Decimal(str(self.stop))
100
+ self.step = decimal.Decimal(str(self.step))
100
101
 
101
102
  def __iter__(self) -> Any:
102
103
  return self
@@ -105,18 +106,17 @@ class FloatRange:
105
106
  assert isinstance(self.start, decimal.Decimal)
106
107
  assert isinstance(self.stop, decimal.Decimal)
107
108
  assert isinstance(self.step, decimal.Decimal)
109
+ current = self.start + self.step * self._idx
108
110
  if self.step > 0:
109
- if self.start < self.stop:
110
- ret = float(self.start)
111
- self.start += self.step
112
- return ret
111
+ if current < self.stop:
112
+ self._idx += 1
113
+ return float(current)
113
114
  else:
114
115
  raise StopIteration
115
116
  elif self.step < 0:
116
- if self.start > self.stop:
117
- ret = float(self.start)
118
- self.start += self.step
119
- return ret
117
+ if current > self.stop:
118
+ self._idx += 1
119
+ return float(current)
120
120
  else:
121
121
  raise StopIteration
122
122
  else:
@@ -131,9 +131,9 @@ class RangeSweep(Sweep):
131
131
  Discrete range of numbers
132
132
  """
133
133
 
134
- start: Optional[Union[int, float]] = None
135
- stop: Optional[Union[int, float]] = None
136
- step: Union[int, float] = 1
134
+ start: Optional[Union[int, float, decimal.Decimal]] = None
135
+ stop: Optional[Union[int, float, decimal.Decimal]] = None
136
+ step: Union[int, float, decimal.Decimal] = 1
137
137
 
138
138
  shuffle: bool = False
139
139
 
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydra-core
3
- Version: 1.4.0.dev3
3
+ Version: 1.4.0.dev4
4
4
  Summary: A framework for elegantly configuring complex applications
5
5
  Home-page: https://github.com/facebookresearch/hydra
6
6
  Author: Omry Yadan
7
7
  Author-email: omry@fb.com
8
8
  License: MIT
9
9
  Keywords: command-line configuration yaml tab-completion
10
- Classifier: License :: OSI Approved :: MIT License
11
10
  Classifier: Development Status :: 4 - Beta
12
11
  Classifier: Programming Language :: Python :: 3.10
13
12
  Classifier: Programming Language :: Python :: 3.11
@@ -44,7 +44,6 @@ with open("README.md") as fh:
44
44
  packages=find_namespace_packages(include=["hydra", "hydra.*"]),
45
45
  include_package_data=True,
46
46
  classifiers=[
47
- "License :: OSI Approved :: MIT License",
48
47
  "Development Status :: 4 - Beta",
49
48
  "Programming Language :: Python :: 3.10",
50
49
  "Programming Language :: Python :: 3.11",
@@ -12,6 +12,7 @@ except ImportError:
12
12
  from pytest import mark, param, raises, warns
13
13
 
14
14
  from hydra import version
15
+ from hydra._internal.grammar import grammar_functions
15
16
  from hydra._internal.grammar.functions import Functions
16
17
  from hydra._internal.grammar.utils import escape_special_characters
17
18
  from hydra.core.override_parser.overrides_parser import (
@@ -1403,14 +1404,30 @@ def test_tag_sweep(value: str, expected: str) -> None:
1403
1404
  ),
1404
1405
  param(
1405
1406
  "sort(range(1.5,-0.5,-0.5))",
1406
- RangeSweep(start=0.0, stop=2.0, step=0.5),
1407
+ RangeSweep(start=0.0, stop=1.75, step=0.5),
1407
1408
  id="sort(range(1.5,-0.5,-0.5))",
1408
1409
  ),
1409
1410
  param(
1410
1411
  "sort(range(0,2,0.5),reverse=true)",
1411
- RangeSweep(start=1.5, stop=-0.5, step=-0.5),
1412
+ RangeSweep(start=1.5, stop=-0.25, step=-0.5),
1412
1413
  id="range:sort:reverse)",
1413
1414
  ),
1415
+ # ranges that do not land exactly on ``stop`` (last element != stop - step)
1416
+ param(
1417
+ "sort(range(0,5,2),reverse=True)",
1418
+ RangeSweep(start=4, stop=-2, step=-2),
1419
+ id="sort:range:non_landing:reverse",
1420
+ ),
1421
+ param(
1422
+ "sort(range(4,-1,-2))",
1423
+ RangeSweep(start=0, stop=6, step=2),
1424
+ id="sort:range:non_landing:ascending",
1425
+ ),
1426
+ param(
1427
+ "sort(range(7,0,-3))",
1428
+ RangeSweep(start=1, stop=10, step=3),
1429
+ id="sort:range:non_landing:ascending2",
1430
+ ),
1414
1431
  param(
1415
1432
  "shuffle(range(1, 10))",
1416
1433
  RangeSweep(start=1, stop=10, step=1, shuffle=True),
@@ -1423,6 +1440,36 @@ def test_sort(value: str, expected: str) -> None:
1423
1440
  assert ret == expected
1424
1441
 
1425
1442
 
1443
+ @mark.parametrize(
1444
+ "start, stop, step",
1445
+ [
1446
+ param(0, 5, 2, id="int:non_landing"),
1447
+ param(4, -1, -2, id="int:non_landing:neg_step"),
1448
+ param(7, 0, -3, id="int:non_landing:neg_step2"),
1449
+ param(1, 10, 1, id="int:landing"),
1450
+ param(0, 1, 1, id="int:single_element"),
1451
+ param(0, 0, 1, id="int:empty"),
1452
+ param(1, 0, 1, id="int:empty_positive_step"),
1453
+ param(0, 2, 0.5, id="float:landing"),
1454
+ param(0, 1.3, 0.5, id="float:non_landing"),
1455
+ param(1.3, 0, -0.5, id="float:non_landing:neg_step"),
1456
+ param(0, 1, 0.1, id="float:decimal_step"),
1457
+ param(0, 1, 0.2, id="float:decimal_step2"),
1458
+ param(0, 0.3, 0.1, id="float:short_decimal_step"),
1459
+ param(1, 0, -0.1, id="float:negative_decimal_step"),
1460
+ ],
1461
+ )
1462
+ def test_sort_range_materializes_to_sorted_values(
1463
+ start: float, stop: float, step: float
1464
+ ) -> None:
1465
+ original = list(grammar_functions.range(start, stop, step).range())
1466
+ for reverse in (False, True):
1467
+ sweep = grammar_functions.sort(
1468
+ grammar_functions.range(start, stop, step), reverse=reverse
1469
+ )
1470
+ assert list(sweep.range()) == sorted(original, reverse=reverse)
1471
+
1472
+
1426
1473
  @mark.parametrize(
1427
1474
  "value, expected",
1428
1475
  [
File without changes