omegaconf 2.4.0.dev10__tar.gz → 2.4.0.dev11__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.
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/MANIFEST.in +2 -0
- {omegaconf-2.4.0.dev10/omegaconf.egg-info → omegaconf-2.4.0.dev11}/PKG-INFO +28 -6
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/README.md +5 -5
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/build_helpers/build_helpers.py +4 -4
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/build_helpers/get_vendored.py +1 -1
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/__init__.py +2 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/_impl.py +22 -26
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/_utils.py +256 -194
- omegaconf-2.4.0.dev11/omegaconf/_yaml.py +310 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/base.py +113 -9
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/basecontainer.py +109 -20
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/dictconfig.py +22 -5
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/errors.py +1 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar_parser.py +1 -1
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar_visitor.py +19 -8
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/listconfig.py +14 -39
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/nodes.py +51 -1
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/omegaconf.py +485 -30
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/typing.py +4 -4
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/version.py +1 -1
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11/omegaconf.egg-info}/PKG-INFO +28 -6
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf.egg-info/SOURCES.txt +4 -0
- omegaconf-2.4.0.dev11/omegaconf.egg-info/requires.txt +23 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/pyproject.toml +25 -4
- omegaconf-2.4.0.dev11/requirements/dev.txt +19 -0
- omegaconf-2.4.0.dev11/requirements/docs.txt +2 -0
- omegaconf-2.4.0.dev11/setup.cfg +12 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/setup.py +22 -7
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/__init__.py +2 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/test_oc_create.py +2 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/test_oc_select.py +32 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/data/attr_classes.py +33 -7
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/data/dataclasses.py +38 -8
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/data/dataclasses_pre_311.py +38 -8
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/test_structured_basic.py +22 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/test_structured_config.py +174 -3
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_base_config.py +4 -4
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_basic_ops_dict.py +102 -4
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_basic_ops_list.py +56 -1
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_config_eq.py +1 -0
- omegaconf-2.4.0.dev11/tests/test_container_unions.py +478 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_create.py +219 -12
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_errors.py +108 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_grammar.py +8 -3
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_merge.py +137 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_nodes.py +94 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_omegaconf.py +143 -31
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_select.py +66 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_serialization.py +50 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_to_yaml.py +53 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_update.py +54 -2
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_utils.py +209 -32
- omegaconf-2.4.0.dev10/omegaconf.egg-info/requires.txt +0 -1
- omegaconf-2.4.0.dev10/setup.cfg +0 -27
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/LICENSE +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/build_helpers/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/build_helpers/bin/antlr-4.11.1-complete.jar +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/build_helpers/test_helpers.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/OmegaConfGrammarLexer.g4 +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/OmegaConfGrammarParser.g4 +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/gen/OmegaConfGrammarLexer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/gen/OmegaConfGrammarParser.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/gen/OmegaConfGrammarParserListener.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/gen/OmegaConfGrammarParserVisitor.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/grammar/gen/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/py.typed +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/resolvers/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/resolvers/oc/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/resolvers/oc/dict.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/BufferedTokenStream.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/CommonTokenFactory.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/CommonTokenStream.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/FileStream.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/InputStream.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/IntervalSet.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/LL1Analyzer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/Lexer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/ListTokenSource.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/Parser.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/ParserInterpreter.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/ParserRuleContext.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/PredictionContext.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/Recognizer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/RuleContext.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/StdinStream.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/Token.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/TokenStreamRewriter.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/Utils.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/_pygrun.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATN.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNConfig.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNConfigSet.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNDeserializationOptions.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNDeserializer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNSimulator.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNState.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ATNType.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/LexerATNSimulator.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/LexerAction.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/LexerActionExecutor.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/ParserATNSimulator.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/PredictionMode.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/SemanticContext.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/Transition.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/atn/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/dfa/DFA.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/dfa/DFASerializer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/dfa/DFAState.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/dfa/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/error/DiagnosticErrorListener.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/error/ErrorListener.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/error/ErrorStrategy.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/error/Errors.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/error/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/Chunk.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/ParseTreeMatch.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/ParseTreePattern.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/ParseTreePatternMatcher.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/RuleTagToken.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/TokenTagToken.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/Tree.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/Trees.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/tree/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/xpath/XPath.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/xpath/XPathLexer.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf/vendor/antlr4/xpath/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf.egg-info/dependency_links.txt +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/omegaconf.egg-info/top_level.txt +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/requirements/base.txt +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/conftest.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/data/2.0.6.pickle +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/data/2.1.0.rc1.pickle +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/data/load.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/data/save.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/examples/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/examples/dataclass_postponed_annotations.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/examples/test_dataclass_example.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/examples/test_postponed_annotations.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/test_oc_decode.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/test_oc_deprecated.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/test_oc_dict.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/built_in_resolvers/test_oc_env.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/test_custom_resolvers.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/interpolation/test_interpolation.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/structured_conf/data/__init__.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_compare_dictconfig_vs_dict.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_get_full_key.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_matrix.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_nested_containers.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_readonly.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_struct.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_to_container.py +0 -0
- {omegaconf-2.4.0.dev10 → omegaconf-2.4.0.dev11}/tests/test_unions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omegaconf
|
|
3
|
-
Version: 2.4.0.
|
|
3
|
+
Version: 2.4.0.dev11
|
|
4
4
|
Summary: A flexible configuration library
|
|
5
5
|
Home-page: https://github.com/omry/omegaconf
|
|
6
6
|
Author: Omry Yadan
|
|
@@ -17,6 +17,27 @@ Requires-Python: >=3.10
|
|
|
17
17
|
Description-Content-Type: text/markdown
|
|
18
18
|
License-File: LICENSE
|
|
19
19
|
Requires-Dist: PyYAML>=5.1.0
|
|
20
|
+
Provides-Extra: dev
|
|
21
|
+
Requires-Dist: PyYAML>=5.1.0; extra == "dev"
|
|
22
|
+
Requires-Dist: sphinx; extra == "dev"
|
|
23
|
+
Requires-Dist: sphinx-tabs; extra == "dev"
|
|
24
|
+
Requires-Dist: attrs; extra == "dev"
|
|
25
|
+
Requires-Dist: black[jupyter]==26.3.1; extra == "dev"
|
|
26
|
+
Requires-Dist: build; extra == "dev"
|
|
27
|
+
Requires-Dist: bump-my-version; extra == "dev"
|
|
28
|
+
Requires-Dist: coveralls; extra == "dev"
|
|
29
|
+
Requires-Dist: flake8==7.3.0; extra == "dev"
|
|
30
|
+
Requires-Dist: isort==5.13.2; extra == "dev"
|
|
31
|
+
Requires-Dist: nox[pbs]; extra == "dev"
|
|
32
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
33
|
+
Requires-Dist: pyflakes; extra == "dev"
|
|
34
|
+
Requires-Dist: pyrefly==0.62.0; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-benchmark; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-mock; extra == "dev"
|
|
38
|
+
Requires-Dist: towncrier; extra == "dev"
|
|
39
|
+
Requires-Dist: twine; extra == "dev"
|
|
40
|
+
Requires-Dist: pydevd; extra == "dev"
|
|
20
41
|
Dynamic: author
|
|
21
42
|
Dynamic: author-email
|
|
22
43
|
Dynamic: classifier
|
|
@@ -25,6 +46,7 @@ Dynamic: description-content-type
|
|
|
25
46
|
Dynamic: home-page
|
|
26
47
|
Dynamic: keywords
|
|
27
48
|
Dynamic: license-file
|
|
49
|
+
Dynamic: provides-extra
|
|
28
50
|
Dynamic: requires-dist
|
|
29
51
|
Dynamic: requires-python
|
|
30
52
|
Dynamic: summary
|
|
@@ -33,8 +55,9 @@ Dynamic: summary
|
|
|
33
55
|
| | Description |
|
|
34
56
|
| --- | --- |
|
|
35
57
|
| Project | [](https://badge.fury.io/py/omegaconf)[](https://pepy.tech/project/omegaconf) |
|
|
36
|
-
| Code quality| [](https://omegaconf.readthedocs.io/en/2.
|
|
58
|
+
| Code quality| [](https://dl.circleci.com/status-badge/redirect/gh/omry/omegaconf/tree/main)[](https://coveralls.io/github/omry/omegaconf)|
|
|
59
|
+
| Docs and support |[](https://omegaconf.readthedocs.io/en/2.3_branch/)[](https://mybinder.org/v2/gh/omry/omegaconf/master?filepath=docs%2Fnotebook%2FTutorial.ipynb)[](https://hydra-framework.zulipchat.com/)|
|
|
60
|
+
| Backlog | [Issues & PRs backlog](https://omry.github.io/omegaconf/) |
|
|
38
61
|
|
|
39
62
|
|
|
40
63
|
OmegaConf is a hierarchical configuration system, with support for merging configurations from multiple sources (YAML config files, dataclasses/objects and CLI arguments)
|
|
@@ -51,6 +74,8 @@ OmegaConf 2.4.0.dev is the upcoming development version.
|
|
|
51
74
|
* [Documentation](https://omegaconf.readthedocs.io/en/latest/)
|
|
52
75
|
* [Source code](https://github.com/omry/omegaconf/tree/master)
|
|
53
76
|
|
|
77
|
+
Install with `pip install --upgrade --pre omegaconf`
|
|
78
|
+
|
|
54
79
|
### Stable (2.3)
|
|
55
80
|
OmegaConf 2.3 is the current stable version.
|
|
56
81
|
* [What's new](https://github.com/omry/omegaconf/releases/tag/v2.3.0)
|
|
@@ -58,6 +83,3 @@ OmegaConf 2.3 is the current stable version.
|
|
|
58
83
|
* [Source code](https://github.com/omry/omegaconf/tree/2.3_branch)
|
|
59
84
|
|
|
60
85
|
Install with `pip install --upgrade omegaconf`
|
|
61
|
-
|
|
62
|
-
## Live tutorial
|
|
63
|
-
Run the live tutorial: [](https://mybinder.org/v2/gh/omry/omegaconf/master?filepath=docs%2Fnotebook%2FTutorial.ipynb)
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
| | Description |
|
|
3
3
|
| --- | --- |
|
|
4
4
|
| Project | [](https://badge.fury.io/py/omegaconf)[](https://pepy.tech/project/omegaconf) |
|
|
5
|
-
| Code quality| [](https://omegaconf.readthedocs.io/en/2.
|
|
5
|
+
| Code quality| [](https://dl.circleci.com/status-badge/redirect/gh/omry/omegaconf/tree/main)[](https://coveralls.io/github/omry/omegaconf)|
|
|
6
|
+
| Docs and support |[](https://omegaconf.readthedocs.io/en/2.3_branch/)[](https://mybinder.org/v2/gh/omry/omegaconf/master?filepath=docs%2Fnotebook%2FTutorial.ipynb)[](https://hydra-framework.zulipchat.com/)|
|
|
7
|
+
| Backlog | [Issues & PRs backlog](https://omry.github.io/omegaconf/) |
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
OmegaConf is a hierarchical configuration system, with support for merging configurations from multiple sources (YAML config files, dataclasses/objects and CLI arguments)
|
|
@@ -20,6 +21,8 @@ OmegaConf 2.4.0.dev is the upcoming development version.
|
|
|
20
21
|
* [Documentation](https://omegaconf.readthedocs.io/en/latest/)
|
|
21
22
|
* [Source code](https://github.com/omry/omegaconf/tree/master)
|
|
22
23
|
|
|
24
|
+
Install with `pip install --upgrade --pre omegaconf`
|
|
25
|
+
|
|
23
26
|
### Stable (2.3)
|
|
24
27
|
OmegaConf 2.3 is the current stable version.
|
|
25
28
|
* [What's new](https://github.com/omry/omegaconf/releases/tag/v2.3.0)
|
|
@@ -27,6 +30,3 @@ OmegaConf 2.3 is the current stable version.
|
|
|
27
30
|
* [Source code](https://github.com/omry/omegaconf/tree/2.3_branch)
|
|
28
31
|
|
|
29
32
|
Install with `pip install --upgrade omegaconf`
|
|
30
|
-
|
|
31
|
-
## Live tutorial
|
|
32
|
-
Run the live tutorial: [](https://mybinder.org/v2/gh/omry/omegaconf/master?filepath=docs%2Fnotebook%2FTutorial.ipynb)
|
|
@@ -7,7 +7,7 @@ import subprocess
|
|
|
7
7
|
import sys
|
|
8
8
|
from functools import partial
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import List, Optional
|
|
10
|
+
from typing import Any, ClassVar, List, Optional
|
|
11
11
|
|
|
12
12
|
from setuptools import Command
|
|
13
13
|
from setuptools.command import build_py, develop, sdist
|
|
@@ -17,7 +17,7 @@ class ANTLRCommand(Command): # type: ignore # pragma: no cover
|
|
|
17
17
|
"""Generate parsers using ANTLR."""
|
|
18
18
|
|
|
19
19
|
description = "Run ANTLR"
|
|
20
|
-
user_options:
|
|
20
|
+
user_options: ClassVar[Any] = []
|
|
21
21
|
|
|
22
22
|
def run(self) -> None:
|
|
23
23
|
"""Run command."""
|
|
@@ -100,7 +100,7 @@ class CleanCommand(Command): # type: ignore # pragma: no cover
|
|
|
100
100
|
|
|
101
101
|
description = "Cleans out generated and junk files we don't want in the repo"
|
|
102
102
|
dry_run: bool
|
|
103
|
-
user_options:
|
|
103
|
+
user_options: ClassVar[Any] = []
|
|
104
104
|
|
|
105
105
|
def run(self) -> None:
|
|
106
106
|
root = Path(__file__).parent.parent.absolute()
|
|
@@ -211,7 +211,7 @@ def matches(patterns: List[str], path: Path) -> bool:
|
|
|
211
211
|
return False
|
|
212
212
|
|
|
213
213
|
|
|
214
|
-
def run_antlr(cmd:
|
|
214
|
+
def run_antlr(cmd: Any) -> None: # pragma: no cover
|
|
215
215
|
try:
|
|
216
216
|
cmd.announce("Generating parsers with antlr4", level=distutils.log.INFO)
|
|
217
217
|
cmd.run_command("antlr")
|
|
@@ -76,8 +76,8 @@ def vendor(vendor_dir: Path, relative_imports: bool = False) -> None:
|
|
|
76
76
|
|
|
77
77
|
vendored_libs, paths = find_vendored_libs(vendor_dir, WHITELIST)
|
|
78
78
|
|
|
79
|
+
replacements: List[Callable[[str], str]] = []
|
|
79
80
|
if not relative_imports:
|
|
80
|
-
replacements: List[Callable[[str], str]] = []
|
|
81
81
|
for lib in vendored_libs:
|
|
82
82
|
replacements += (
|
|
83
83
|
partial( # import bar -> import foo.vendor.bar
|
|
@@ -15,6 +15,7 @@ from .nodes import (
|
|
|
15
15
|
EnumNode,
|
|
16
16
|
FloatNode,
|
|
17
17
|
IntegerNode,
|
|
18
|
+
LiteralNode,
|
|
18
19
|
PathNode,
|
|
19
20
|
StringNode,
|
|
20
21
|
ValueNode,
|
|
@@ -61,6 +62,7 @@ __all__ = [
|
|
|
61
62
|
"BooleanNode",
|
|
62
63
|
"EnumNode",
|
|
63
64
|
"FloatNode",
|
|
65
|
+
"LiteralNode",
|
|
64
66
|
"MISSING",
|
|
65
67
|
"SI",
|
|
66
68
|
"II",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
-
from omegaconf import
|
|
4
|
-
from omegaconf.errors import
|
|
3
|
+
from omegaconf import Container, DictConfig, ListConfig, Node, ValueNode
|
|
4
|
+
from omegaconf.errors import ConfigKeyError, ConfigTypeError
|
|
5
5
|
from omegaconf.nodes import InterpolationResultNode
|
|
6
6
|
|
|
7
7
|
from ._utils import (
|
|
@@ -17,23 +17,19 @@ def _resolve_container_value(cfg: Container, key: Any) -> None:
|
|
|
17
17
|
node = cfg._get_child(key)
|
|
18
18
|
assert isinstance(node, Node)
|
|
19
19
|
if node._is_interpolation():
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
resolved = node._dereference_node()
|
|
21
|
+
if isinstance(resolved, Container):
|
|
22
|
+
_resolve(resolved)
|
|
23
|
+
if isinstance(resolved, InterpolationResultNode):
|
|
24
|
+
resolved_value = _get_value(resolved)
|
|
25
|
+
if is_primitive_container(resolved_value) or is_structured_config(
|
|
26
|
+
resolved_value
|
|
27
|
+
):
|
|
28
|
+
resolved = _ensure_container(resolved_value)
|
|
29
|
+
if isinstance(resolved, Container) and isinstance(node, ValueNode):
|
|
30
|
+
cfg[key] = resolved
|
|
24
31
|
else:
|
|
25
|
-
|
|
26
|
-
_resolve(resolved)
|
|
27
|
-
if isinstance(resolved, InterpolationResultNode):
|
|
28
|
-
resolved_value = _get_value(resolved)
|
|
29
|
-
if is_primitive_container(resolved_value) or is_structured_config(
|
|
30
|
-
resolved_value
|
|
31
|
-
):
|
|
32
|
-
resolved = _ensure_container(resolved_value)
|
|
33
|
-
if isinstance(resolved, Container) and isinstance(node, ValueNode):
|
|
34
|
-
cfg[key] = resolved
|
|
35
|
-
else:
|
|
36
|
-
node._set_value(_get_value(resolved))
|
|
32
|
+
node._set_value(_get_value(resolved))
|
|
37
33
|
else:
|
|
38
34
|
_resolve(node)
|
|
39
35
|
|
|
@@ -41,15 +37,11 @@ def _resolve_container_value(cfg: Container, key: Any) -> None:
|
|
|
41
37
|
def _resolve(cfg: Node) -> Node:
|
|
42
38
|
assert isinstance(cfg, Node)
|
|
43
39
|
if cfg._is_interpolation():
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
except InterpolationToMissingValueError:
|
|
47
|
-
cfg._set_value(MISSING)
|
|
48
|
-
else:
|
|
49
|
-
cfg._set_value(resolved._value())
|
|
40
|
+
resolved = cfg._dereference_node()
|
|
41
|
+
cfg._set_value(resolved._value())
|
|
50
42
|
|
|
51
43
|
if isinstance(cfg, DictConfig):
|
|
52
|
-
for k in cfg.keys():
|
|
44
|
+
for k in list(cfg.keys()):
|
|
53
45
|
_resolve_container_value(cfg, k)
|
|
54
46
|
|
|
55
47
|
elif isinstance(cfg, ListConfig):
|
|
@@ -102,7 +94,11 @@ def select_node(
|
|
|
102
94
|
if not absolute_key and not key.startswith("."):
|
|
103
95
|
key = f".{key}"
|
|
104
96
|
|
|
105
|
-
|
|
97
|
+
try:
|
|
98
|
+
cfg, key = cfg._resolve_key_and_root(key)
|
|
99
|
+
except ConfigKeyError:
|
|
100
|
+
return None
|
|
101
|
+
|
|
106
102
|
_root, _last_key, node = cfg._select_impl(
|
|
107
103
|
key,
|
|
108
104
|
throw_on_missing=throw_on_missing,
|