omegaconf 2.4.0.dev2__tar.gz → 2.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.
- {omegaconf-2.4.0.dev2/omegaconf.egg-info → omegaconf-2.4.0.dev4}/PKG-INFO +17 -4
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/build_helpers/build_helpers.py +9 -10
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/_utils.py +65 -3
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/base.py +16 -28
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/basecontainer.py +5 -8
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarLexer.py +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarParser.py +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarParserListener.py +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarParserVisitor.py +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar_parser.py +4 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar_visitor.py +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/nodes.py +1 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/omegaconf.py +8 -12
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/version.py +4 -4
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4/omegaconf.egg-info}/PKG-INFO +17 -4
- omegaconf-2.4.0.dev4/pydevd_plugins/__init__.py +3 -0
- omegaconf-2.4.0.dev4/pydevd_plugins/extensions/__init__.py +3 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/pyproject.toml +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/setup.py +4 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/__init__.py +1 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/test_oc_decode.py +2 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_compare_dictconfig_vs_dict.py +1 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_create.py +1 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_errors.py +1 -1
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_grammar.py +2 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_nodes.py +49 -2
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_omegaconf.py +10 -6
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_to_yaml.py +9 -4
- omegaconf-2.4.0.dev2/pydevd_plugins/__init__.py +0 -6
- omegaconf-2.4.0.dev2/pydevd_plugins/extensions/__init__.py +0 -6
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/LICENSE +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/MANIFEST.in +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/README.md +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/build_helpers/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/build_helpers/bin/antlr-4.11.1-complete.jar +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/build_helpers/get_vendored.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/build_helpers/test_helpers.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/_impl.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/dictconfig.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/errors.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/OmegaConfGrammarLexer.g4 +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/OmegaConfGrammarParser.g4 +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/listconfig.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/py.typed +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/resolvers/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/resolvers/oc/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/resolvers/oc/dict.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/typing.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/BufferedTokenStream.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/CommonTokenFactory.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/CommonTokenStream.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/FileStream.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/InputStream.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/IntervalSet.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/LL1Analyzer.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/Lexer.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/ListTokenSource.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/Parser.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/ParserInterpreter.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/ParserRuleContext.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/PredictionContext.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/Recognizer.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/RuleContext.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/StdinStream.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/Token.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/TokenStreamRewriter.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/Utils.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/_pygrun.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATN.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNConfig.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNConfigSet.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNDeserializationOptions.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNDeserializer.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNSimulator.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNState.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ATNType.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/LexerATNSimulator.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/LexerAction.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/LexerActionExecutor.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/ParserATNSimulator.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/PredictionMode.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/SemanticContext.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/Transition.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/atn/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/dfa/DFA.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/dfa/DFASerializer.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/dfa/DFAState.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/dfa/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/error/DiagnosticErrorListener.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/error/ErrorListener.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/error/ErrorStrategy.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/error/Errors.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/error/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/Chunk.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/ParseTreeMatch.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/ParseTreePattern.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/ParseTreePatternMatcher.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/RuleTagToken.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/TokenTagToken.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/Tree.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/Trees.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/tree/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/xpath/XPath.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/xpath/XPathLexer.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/vendor/antlr4/xpath/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf.egg-info/SOURCES.txt +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf.egg-info/dependency_links.txt +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf.egg-info/requires.txt +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf.egg-info/top_level.txt +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/pydevd_plugins/extensions/pydevd_plugin_omegaconf.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/requirements/base.txt +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/setup.cfg +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/conftest.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/data/2.0.6.pickle +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/data/2.1.0.rc1.pickle +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/data/load.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/data/save.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/examples/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/examples/dataclass_postponed_annotations.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/examples/test_dataclass_example.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/examples/test_postponed_annotations.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/test_oc_create.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/test_oc_deprecated.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/test_oc_dict.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/test_oc_env.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/built_in_resolvers/test_oc_select.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/test_custom_resolvers.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/interpolation/test_interpolation.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/data/__init__.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/data/attr_classes.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/data/dataclasses.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/data/dataclasses_pre_311.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/test_structured_basic.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/structured_conf/test_structured_config.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_base_config.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_basic_ops_dict.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_basic_ops_list.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_config_eq.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_get_full_key.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_matrix.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_merge.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_nested_containers.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_pydev_resolver_plugin.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_readonly.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_select.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_serialization.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_struct.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_to_container.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_unions.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_update.py +0 -0
- {omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/tests/test_utils.py +0 -0
|
@@ -1,23 +1,36 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: omegaconf
|
|
3
|
-
Version: 2.4.0.
|
|
3
|
+
Version: 2.4.0.dev4
|
|
4
4
|
Summary: A flexible configuration library
|
|
5
5
|
Home-page: https://github.com/omry/omegaconf
|
|
6
6
|
Author: Omry Yadan
|
|
7
7
|
Author-email: omry@yadan.net
|
|
8
8
|
Keywords: yaml configuration config
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.9
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
15
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
16
|
Classifier: Operating System :: OS Independent
|
|
15
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.9
|
|
16
18
|
Description-Content-Type: text/markdown
|
|
17
19
|
License-File: LICENSE
|
|
18
20
|
Requires-Dist: PyYAML>=5.1.0
|
|
19
21
|
Requires-Dist: dataclasses; python_version == "3.6"
|
|
20
22
|
Requires-Dist: typing-extensions; python_version <= "3.9"
|
|
23
|
+
Dynamic: author
|
|
24
|
+
Dynamic: author-email
|
|
25
|
+
Dynamic: classifier
|
|
26
|
+
Dynamic: description
|
|
27
|
+
Dynamic: description-content-type
|
|
28
|
+
Dynamic: home-page
|
|
29
|
+
Dynamic: keywords
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: requires-dist
|
|
32
|
+
Dynamic: requires-python
|
|
33
|
+
Dynamic: summary
|
|
21
34
|
|
|
22
35
|
# OmegaConf
|
|
23
36
|
| | Description |
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import codecs
|
|
2
1
|
import distutils.log
|
|
3
2
|
import errno
|
|
4
3
|
import os
|
|
@@ -64,26 +63,26 @@ class ANTLRCommand(Command): # type: ignore # pragma: no cover
|
|
|
64
63
|
build_dir = Path(__file__).parent.absolute()
|
|
65
64
|
project_root = build_dir.parent
|
|
66
65
|
lib = "antlr4"
|
|
67
|
-
pkgname =
|
|
66
|
+
pkgname = "omegaconf.vendor"
|
|
68
67
|
|
|
69
68
|
replacements = [
|
|
70
69
|
partial( # import antlr4 -> import omegaconf.vendor.antlr4
|
|
71
|
-
re.compile(r
|
|
72
|
-
r
|
|
70
|
+
re.compile(r"(^\s*)import {}\n".format(lib), flags=re.M).sub,
|
|
71
|
+
r"\1from {} import {}\n".format(pkgname, lib),
|
|
73
72
|
),
|
|
74
73
|
partial( # from antlr4 -> from fomegaconf.vendor.antlr4
|
|
75
|
-
re.compile(r
|
|
76
|
-
r
|
|
74
|
+
re.compile(r"(^\s*)from {}(\.|\s+)".format(lib), flags=re.M).sub,
|
|
75
|
+
r"\1from {}.{}\2".format(pkgname, lib),
|
|
77
76
|
),
|
|
78
77
|
]
|
|
79
78
|
|
|
80
79
|
path = project_root / "omegaconf" / "grammar" / "gen"
|
|
81
80
|
for item in path.iterdir():
|
|
82
81
|
if item.is_file() and item.name.endswith(".py"):
|
|
83
|
-
text = item.read_text(
|
|
82
|
+
text = item.read_text("utf8")
|
|
84
83
|
for replacement in replacements:
|
|
85
84
|
text = replacement(text)
|
|
86
|
-
item.write_text(text,
|
|
85
|
+
item.write_text(text, "utf8")
|
|
87
86
|
|
|
88
87
|
|
|
89
88
|
class BuildPyCommand(build_py.build_py): # pragma: no cover
|
|
@@ -148,7 +147,7 @@ class DevelopCommand(develop.develop): # pragma: no cover
|
|
|
148
147
|
|
|
149
148
|
class SDistCommand(sdist.sdist): # pragma: no cover
|
|
150
149
|
def run(self) -> None:
|
|
151
|
-
if not self.dry_run:
|
|
150
|
+
if not self.dry_run:
|
|
152
151
|
self.run_command("clean")
|
|
153
152
|
run_antlr(self)
|
|
154
153
|
sdist.sdist.run(self)
|
|
@@ -196,7 +195,7 @@ def find(
|
|
|
196
195
|
|
|
197
196
|
def find_version(*file_paths: str) -> str:
|
|
198
197
|
root = Path(__file__).parent.parent.absolute()
|
|
199
|
-
with
|
|
198
|
+
with open(root / Path(*file_paths), "r", encoding="utf-8") as fp:
|
|
200
199
|
version_file = fp.read()
|
|
201
200
|
version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M)
|
|
202
201
|
if version_match:
|
|
@@ -114,6 +114,7 @@ _DEFAULT_MARKER_: Any = Marker("_DEFAULT_MARKER_")
|
|
|
114
114
|
|
|
115
115
|
class OmegaConfDumper(BaseDumper): # type: ignore
|
|
116
116
|
str_representer_added = False
|
|
117
|
+
pathlib_representers_added = False
|
|
117
118
|
|
|
118
119
|
@staticmethod
|
|
119
120
|
def str_representer(dumper: yaml.Dumper, data: str) -> yaml.ScalarNode:
|
|
@@ -124,11 +125,51 @@ class OmegaConfDumper(BaseDumper): # type: ignore
|
|
|
124
125
|
style=("'" if with_quotes else None),
|
|
125
126
|
)
|
|
126
127
|
|
|
128
|
+
@staticmethod
|
|
129
|
+
def pathlib_path_representer(dumper: yaml.Dumper, data: Any) -> yaml.Node:
|
|
130
|
+
# Use old pathlib.Path tag for cross-version compatibility
|
|
131
|
+
# Extract constructor args from __reduce__ and use sequence representation
|
|
132
|
+
return dumper.represent_sequence( # pragma: no cover
|
|
133
|
+
"tag:yaml.org,2002:python/object/apply:pathlib.Path",
|
|
134
|
+
[str(data)],
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
@staticmethod
|
|
138
|
+
def pathlib_posix_path_representer(dumper: yaml.Dumper, data: Any) -> yaml.Node:
|
|
139
|
+
# Use old pathlib.PosixPath tag for cross-version compatibility
|
|
140
|
+
return dumper.represent_sequence(
|
|
141
|
+
"tag:yaml.org,2002:python/object/apply:pathlib.PosixPath",
|
|
142
|
+
[str(data)],
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
@staticmethod
|
|
146
|
+
def pathlib_windows_path_representer(dumper: yaml.Dumper, data: Any) -> yaml.Node:
|
|
147
|
+
# Use old pathlib.WindowsPath tag for cross-version compatibility
|
|
148
|
+
return dumper.represent_sequence( # pragma: no cover
|
|
149
|
+
"tag:yaml.org,2002:python/object/apply:pathlib.WindowsPath",
|
|
150
|
+
[str(data)],
|
|
151
|
+
)
|
|
152
|
+
|
|
127
153
|
|
|
128
154
|
def get_omega_conf_dumper() -> Type[OmegaConfDumper]:
|
|
129
155
|
if not OmegaConfDumper.str_representer_added:
|
|
130
156
|
OmegaConfDumper.add_representer(str, OmegaConfDumper.str_representer)
|
|
131
157
|
OmegaConfDumper.str_representer_added = True
|
|
158
|
+
|
|
159
|
+
# Add representers for pathlib types to ensure cross-version compatibility.
|
|
160
|
+
# Python 3.13+ uses pathlib._local.* internally, so we normalize to old pathlib.* tags
|
|
161
|
+
if not OmegaConfDumper.pathlib_representers_added:
|
|
162
|
+
from pathlib import Path, PosixPath, WindowsPath
|
|
163
|
+
|
|
164
|
+
OmegaConfDumper.add_representer(Path, OmegaConfDumper.pathlib_path_representer)
|
|
165
|
+
OmegaConfDumper.add_representer(
|
|
166
|
+
PosixPath, OmegaConfDumper.pathlib_posix_path_representer
|
|
167
|
+
)
|
|
168
|
+
OmegaConfDumper.add_representer(
|
|
169
|
+
WindowsPath, OmegaConfDumper.pathlib_windows_path_representer
|
|
170
|
+
)
|
|
171
|
+
OmegaConfDumper.pathlib_representers_added = True
|
|
172
|
+
|
|
132
173
|
return OmegaConfDumper
|
|
133
174
|
|
|
134
175
|
|
|
@@ -190,6 +231,20 @@ def get_yaml_loader() -> Any:
|
|
|
190
231
|
lambda loader, node: pathlib.WindowsPath(*loader.construct_sequence(node)),
|
|
191
232
|
)
|
|
192
233
|
|
|
234
|
+
# Python 3.13+ uses internal pathlib._local module
|
|
235
|
+
loader.add_constructor(
|
|
236
|
+
"tag:yaml.org,2002:python/object/apply:pathlib._local.Path",
|
|
237
|
+
lambda loader, node: pathlib.Path(*loader.construct_sequence(node)),
|
|
238
|
+
)
|
|
239
|
+
loader.add_constructor(
|
|
240
|
+
"tag:yaml.org,2002:python/object/apply:pathlib._local.PosixPath",
|
|
241
|
+
lambda loader, node: pathlib.PosixPath(*loader.construct_sequence(node)),
|
|
242
|
+
)
|
|
243
|
+
loader.add_constructor(
|
|
244
|
+
"tag:yaml.org,2002:python/object/apply:pathlib._local.WindowsPath",
|
|
245
|
+
lambda loader, node: pathlib.WindowsPath(*loader.construct_sequence(node)),
|
|
246
|
+
)
|
|
247
|
+
|
|
193
248
|
return loader
|
|
194
249
|
|
|
195
250
|
|
|
@@ -350,7 +405,7 @@ def get_attr_data(obj: Any, allow_objects: Optional[bool] = None) -> Dict[str, A
|
|
|
350
405
|
value = MISSING
|
|
351
406
|
if is_union_annotation(type_) and not is_supported_union_annotation(type_):
|
|
352
407
|
e = ConfigValueError(
|
|
353
|
-
f"Unions of containers are not supported:\n{name}: {type_str(type_)}"
|
|
408
|
+
f"Unions of containers are not supported:\n{name}: {type_str(type_)}" # noqa: E231
|
|
354
409
|
)
|
|
355
410
|
format_and_raise(node=None, key=None, value=value, cause=e, msg=str(e))
|
|
356
411
|
|
|
@@ -409,7 +464,7 @@ def get_dataclass_data(
|
|
|
409
464
|
|
|
410
465
|
if is_union_annotation(type_) and not is_supported_union_annotation(type_):
|
|
411
466
|
e = ConfigValueError(
|
|
412
|
-
f"Unions of containers are not supported:\n{name}: {type_str(type_)}"
|
|
467
|
+
f"Unions of containers are not supported:\n{name}: {type_str(type_)}" # noqa: E231
|
|
413
468
|
)
|
|
414
469
|
format_and_raise(node=None, key=None, value=value, cause=e, msg=str(e))
|
|
415
470
|
try:
|
|
@@ -941,7 +996,14 @@ def type_str(t: Any, include_module_name: bool = False) -> str:
|
|
|
941
996
|
and t.__module__ != "typing"
|
|
942
997
|
and not t.__module__.startswith("omegaconf.")
|
|
943
998
|
):
|
|
944
|
-
|
|
999
|
+
module_name = str(t.__module__)
|
|
1000
|
+
if isinstance(t, type) and issubclass(t, pathlib.PurePath):
|
|
1001
|
+
# Python 3.13+ uses pathlib._local internally, normalize to pathlib for # Path types
|
|
1002
|
+
# Normalize pathlib._local to pathlib for cross-version compatibility
|
|
1003
|
+
if module_name == "pathlib._local": # pragma: no cover
|
|
1004
|
+
module_name = "pathlib"
|
|
1005
|
+
|
|
1006
|
+
module_prefix = module_name + "."
|
|
945
1007
|
else:
|
|
946
1008
|
module_prefix = ""
|
|
947
1009
|
ret = module_prefix + ret
|
|
@@ -237,8 +237,7 @@ class Node(ABC):
|
|
|
237
237
|
assert False
|
|
238
238
|
|
|
239
239
|
@abstractmethod
|
|
240
|
-
def _get_full_key(self, key: Optional[Union[DictKeyType, int]]) -> str:
|
|
241
|
-
...
|
|
240
|
+
def _get_full_key(self, key: Optional[Union[DictKeyType, int]]) -> str: ...
|
|
242
241
|
|
|
243
242
|
def _dereference_node(self) -> "Node":
|
|
244
243
|
node = self._dereference_node_impl(throw_on_resolution_failure=True)
|
|
@@ -306,32 +305,27 @@ class Node(ABC):
|
|
|
306
305
|
return self._value() is None
|
|
307
306
|
|
|
308
307
|
@abstractmethod
|
|
309
|
-
def __eq__(self, other: Any) -> bool:
|
|
310
|
-
...
|
|
308
|
+
def __eq__(self, other: Any) -> bool: ...
|
|
311
309
|
|
|
312
310
|
@abstractmethod
|
|
313
|
-
def __ne__(self, other: Any) -> bool:
|
|
314
|
-
...
|
|
311
|
+
def __ne__(self, other: Any) -> bool: ...
|
|
315
312
|
|
|
316
313
|
@abstractmethod
|
|
317
|
-
def __hash__(self) -> int:
|
|
318
|
-
...
|
|
314
|
+
def __hash__(self) -> int: ...
|
|
319
315
|
|
|
320
316
|
@abstractmethod
|
|
321
|
-
def _value(self) -> Any:
|
|
322
|
-
...
|
|
317
|
+
def _value(self) -> Any: ...
|
|
323
318
|
|
|
324
319
|
@abstractmethod
|
|
325
|
-
def _set_value(
|
|
326
|
-
|
|
320
|
+
def _set_value(
|
|
321
|
+
self, value: Any, flags: Optional[Dict[str, bool]] = None
|
|
322
|
+
) -> None: ...
|
|
327
323
|
|
|
328
324
|
@abstractmethod
|
|
329
|
-
def _is_optional(self) -> bool:
|
|
330
|
-
...
|
|
325
|
+
def _is_optional(self) -> bool: ...
|
|
331
326
|
|
|
332
327
|
@abstractmethod
|
|
333
|
-
def _is_interpolation(self) -> bool:
|
|
334
|
-
...
|
|
328
|
+
def _is_interpolation(self) -> bool: ...
|
|
335
329
|
|
|
336
330
|
def _key(self) -> Any:
|
|
337
331
|
return self._metadata.key
|
|
@@ -414,8 +408,7 @@ class Container(Box):
|
|
|
414
408
|
validate_key: bool = True,
|
|
415
409
|
throw_on_missing_value: bool = False,
|
|
416
410
|
throw_on_missing_key: bool = False,
|
|
417
|
-
) -> Union[Optional[Node], List[Optional[Node]]]:
|
|
418
|
-
...
|
|
411
|
+
) -> Union[Optional[Node], List[Optional[Node]]]: ...
|
|
419
412
|
|
|
420
413
|
@abstractmethod
|
|
421
414
|
def _get_node(
|
|
@@ -425,24 +418,19 @@ class Container(Box):
|
|
|
425
418
|
validate_key: bool = True,
|
|
426
419
|
throw_on_missing_value: bool = False,
|
|
427
420
|
throw_on_missing_key: bool = False,
|
|
428
|
-
) -> Union[Optional[Node], List[Optional[Node]]]:
|
|
429
|
-
...
|
|
421
|
+
) -> Union[Optional[Node], List[Optional[Node]]]: ...
|
|
430
422
|
|
|
431
423
|
@abstractmethod
|
|
432
|
-
def __delitem__(self, key: Any) -> None:
|
|
433
|
-
...
|
|
424
|
+
def __delitem__(self, key: Any) -> None: ...
|
|
434
425
|
|
|
435
426
|
@abstractmethod
|
|
436
|
-
def __setitem__(self, key: Any, value: Any) -> None:
|
|
437
|
-
...
|
|
427
|
+
def __setitem__(self, key: Any, value: Any) -> None: ...
|
|
438
428
|
|
|
439
429
|
@abstractmethod
|
|
440
|
-
def __iter__(self) -> Iterator[Any]:
|
|
441
|
-
...
|
|
430
|
+
def __iter__(self) -> Iterator[Any]: ...
|
|
442
431
|
|
|
443
432
|
@abstractmethod
|
|
444
|
-
def __getitem__(self, key_or_index: Any) -> Any:
|
|
445
|
-
...
|
|
433
|
+
def __getitem__(self, key_or_index: Any) -> Any: ...
|
|
446
434
|
|
|
447
435
|
def _resolve_key_and_root(self, key: str) -> Tuple["Container", str]:
|
|
448
436
|
orig = key
|
|
@@ -167,8 +167,7 @@ class BaseContainer(Container, ABC):
|
|
|
167
167
|
self.__dict__.update(d)
|
|
168
168
|
|
|
169
169
|
@abstractmethod
|
|
170
|
-
def __delitem__(self, key: Any) -> None:
|
|
171
|
-
...
|
|
170
|
+
def __delitem__(self, key: Any) -> None: ...
|
|
172
171
|
|
|
173
172
|
def __len__(self) -> int:
|
|
174
173
|
if self._is_none() or self._is_missing() or self._is_interpolation():
|
|
@@ -722,12 +721,10 @@ class BaseContainer(Container, ABC):
|
|
|
722
721
|
return _is_interpolation(self.__dict__["_content"])
|
|
723
722
|
|
|
724
723
|
@abstractmethod
|
|
725
|
-
def _validate_get(self, key: Any, value: Any = None) -> None:
|
|
726
|
-
...
|
|
724
|
+
def _validate_get(self, key: Any, value: Any = None) -> None: ...
|
|
727
725
|
|
|
728
726
|
@abstractmethod
|
|
729
|
-
def _validate_set(self, key: Any, value: Any) -> None:
|
|
730
|
-
...
|
|
727
|
+
def _validate_set(self, key: Any, value: Any) -> None: ...
|
|
731
728
|
|
|
732
729
|
def _value(self) -> Any:
|
|
733
730
|
return self.__dict__["_content"]
|
|
@@ -741,9 +738,9 @@ class BaseContainer(Container, ABC):
|
|
|
741
738
|
|
|
742
739
|
def _slice_to_str(x: slice) -> str:
|
|
743
740
|
if x.step is not None:
|
|
744
|
-
return f"{x.start}:{x.stop}:{x.step}"
|
|
741
|
+
return f"{x.start}:{x.stop}:{x.step}" # noqa: E231
|
|
745
742
|
else:
|
|
746
|
-
return f"{x.start}:{x.stop}"
|
|
743
|
+
return f"{x.start}:{x.stop}" # noqa: E231
|
|
747
744
|
|
|
748
745
|
def prepand(
|
|
749
746
|
full_key: str,
|
{omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarLexer.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Generated from /home/
|
|
1
|
+
# Generated from /home/runner/work/omegaconf/omegaconf/omegaconf/grammar/OmegaConfGrammarLexer.g4 by ANTLR 4.11.1
|
|
2
2
|
from omegaconf.vendor.antlr4 import *
|
|
3
3
|
from io import StringIO
|
|
4
4
|
import sys
|
{omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarParser.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Generated from /home/
|
|
1
|
+
# Generated from /home/runner/work/omegaconf/omegaconf/omegaconf/grammar/OmegaConfGrammarParser.g4 by ANTLR 4.11.1
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
from omegaconf.vendor.antlr4 import *
|
|
4
4
|
from io import StringIO
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Generated from /home/
|
|
1
|
+
# Generated from /home/runner/work/omegaconf/omegaconf/omegaconf/grammar/OmegaConfGrammarParser.g4 by ANTLR 4.11.1
|
|
2
2
|
from omegaconf.vendor.antlr4 import *
|
|
3
3
|
if __name__ is not None and "." in __name__:
|
|
4
4
|
from .OmegaConfGrammarParser import OmegaConfGrammarParser
|
{omegaconf-2.4.0.dev2 → omegaconf-2.4.0.dev4}/omegaconf/grammar/gen/OmegaConfGrammarParserVisitor.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Generated from /home/
|
|
1
|
+
# Generated from /home/runner/work/omegaconf/omegaconf/omegaconf/grammar/OmegaConfGrammarParser.g4 by ANTLR 4.11.1
|
|
2
2
|
from omegaconf.vendor.antlr4 import *
|
|
3
3
|
if __name__ is not None and "." in __name__:
|
|
4
4
|
from .OmegaConfGrammarParser import OmegaConfGrammarParser
|
|
@@ -28,8 +28,10 @@ _node_inter = f"\\${{\\s*{_node_path}\\s*}}" # node interpolation ${foo.bar}
|
|
|
28
28
|
_id = "[a-zA-Z_][\\w\\-]*" # foo, foo_bar, foo-bar, abc123
|
|
29
29
|
_resolver_name = f"({_id}(\\.{_id})*)?" # foo, ns.bar3, ns_1.ns_2.b0z
|
|
30
30
|
_arg = r"[a-zA-Z_0-9/\-\+.$%*@?|]+" # string representing a resolver argument
|
|
31
|
-
_args = f"{_arg}(\\s*,\\s*{_arg})*" # list of resolver arguments
|
|
32
|
-
_resolver_inter =
|
|
31
|
+
_args = f"{_arg}(\\s*,\\s*{_arg})*" # list of resolver arguments # noqa: E231
|
|
32
|
+
_resolver_inter = (
|
|
33
|
+
f"\\${{\\s*{_resolver_name}\\s*:\\s*{_args}?\\s*}}" # ${foo:bar} # noqa: E231
|
|
34
|
+
)
|
|
33
35
|
_inter = f"({_node_inter}|{_resolver_inter})" # any kind of interpolation
|
|
34
36
|
_outer = "([^$]|\\$(?!{))+" # any character except $ (unless not followed by {)
|
|
35
37
|
SIMPLE_INTERPOLATION_PATTERN = re.compile(
|
|
@@ -251,7 +251,7 @@ class GrammarVisitor(OmegaConfGrammarParserVisitor):
|
|
|
251
251
|
warnings.warn(
|
|
252
252
|
f"In the sequence `{txt}` some elements are missing: please replace "
|
|
253
253
|
f"them with empty quoted strings. "
|
|
254
|
-
f"See https://github.com/omry/omegaconf/issues/572 for details.",
|
|
254
|
+
f"See https://github.com/omry/omegaconf/issues/572 for details.", # noqa: E231
|
|
255
255
|
category=UserWarning,
|
|
256
256
|
)
|
|
257
257
|
|
|
@@ -76,8 +76,7 @@ class ValueNode(Node):
|
|
|
76
76
|
return self._validate_and_convert_impl(value)
|
|
77
77
|
|
|
78
78
|
@abstractmethod
|
|
79
|
-
def _validate_and_convert_impl(self, value: Any) -> Any:
|
|
80
|
-
...
|
|
79
|
+
def _validate_and_convert_impl(self, value: Any) -> Any: ...
|
|
81
80
|
|
|
82
81
|
def __str__(self) -> str:
|
|
83
82
|
return str(self._val)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""OmegaConf module"""
|
|
2
|
+
|
|
2
3
|
import copy
|
|
3
4
|
import inspect
|
|
4
5
|
import io
|
|
@@ -129,8 +130,7 @@ class OmegaConf:
|
|
|
129
130
|
obj: str,
|
|
130
131
|
parent: Optional[BaseContainer] = None,
|
|
131
132
|
flags: Optional[Dict[str, bool]] = None,
|
|
132
|
-
) -> Union[DictConfig, ListConfig]:
|
|
133
|
-
...
|
|
133
|
+
) -> Union[DictConfig, ListConfig]: ...
|
|
134
134
|
|
|
135
135
|
@staticmethod
|
|
136
136
|
@overload
|
|
@@ -138,8 +138,7 @@ class OmegaConf:
|
|
|
138
138
|
obj: Union[List[Any], Tuple[Any, ...]],
|
|
139
139
|
parent: Optional[BaseContainer] = None,
|
|
140
140
|
flags: Optional[Dict[str, bool]] = None,
|
|
141
|
-
) -> ListConfig:
|
|
142
|
-
...
|
|
141
|
+
) -> ListConfig: ...
|
|
143
142
|
|
|
144
143
|
@staticmethod
|
|
145
144
|
@overload
|
|
@@ -147,8 +146,7 @@ class OmegaConf:
|
|
|
147
146
|
obj: DictConfig,
|
|
148
147
|
parent: Optional[BaseContainer] = None,
|
|
149
148
|
flags: Optional[Dict[str, bool]] = None,
|
|
150
|
-
) -> DictConfig:
|
|
151
|
-
...
|
|
149
|
+
) -> DictConfig: ...
|
|
152
150
|
|
|
153
151
|
@staticmethod
|
|
154
152
|
@overload
|
|
@@ -156,8 +154,7 @@ class OmegaConf:
|
|
|
156
154
|
obj: ListConfig,
|
|
157
155
|
parent: Optional[BaseContainer] = None,
|
|
158
156
|
flags: Optional[Dict[str, bool]] = None,
|
|
159
|
-
) -> ListConfig:
|
|
160
|
-
...
|
|
157
|
+
) -> ListConfig: ...
|
|
161
158
|
|
|
162
159
|
@staticmethod
|
|
163
160
|
@overload
|
|
@@ -165,8 +162,7 @@ class OmegaConf:
|
|
|
165
162
|
obj: Optional[Dict[Any, Any]] = None,
|
|
166
163
|
parent: Optional[BaseContainer] = None,
|
|
167
164
|
flags: Optional[Dict[str, bool]] = None,
|
|
168
|
-
) -> DictConfig:
|
|
169
|
-
...
|
|
165
|
+
) -> DictConfig: ...
|
|
170
166
|
|
|
171
167
|
@staticmethod
|
|
172
168
|
def create( # noqa F811
|
|
@@ -376,7 +372,7 @@ class OmegaConf:
|
|
|
376
372
|
f"to be an interpolation. Nested interpolations are not supported for "
|
|
377
373
|
f"resolvers registered with `[legacy_]register_resolver()`, please use "
|
|
378
374
|
f"`register_new_resolver()` instead (see "
|
|
379
|
-
f"https://github.com/omry/omegaconf/issues/426 for migration instructions)."
|
|
375
|
+
f"https://github.com/omry/omegaconf/issues/426 for migration instructions)." # noqa: E231
|
|
380
376
|
)
|
|
381
377
|
key = args_str
|
|
382
378
|
val = cache[key] if key in cache else resolver(*args_unesc)
|
|
@@ -489,7 +485,7 @@ class OmegaConf:
|
|
|
489
485
|
Returns a bool: True if resolver is removed and False if not removed.
|
|
490
486
|
|
|
491
487
|
.. warning:
|
|
492
|
-
This method can remove
|
|
488
|
+
This method can remove default resolvers as well.
|
|
493
489
|
|
|
494
490
|
:param name: Name of the resolver.
|
|
495
491
|
:return: A bool (``True`` if resolver is removed, ``False`` if not found before removing).
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import sys # pragma: no cover
|
|
2
2
|
|
|
3
|
-
__version__ = "2.4.0.
|
|
3
|
+
__version__ = "2.4.0.dev4"
|
|
4
4
|
|
|
5
|
-
msg = """OmegaConf 2.4 and above is compatible with Python 3.
|
|
5
|
+
msg = """OmegaConf 2.4 and above is compatible with Python 3.9 and newer.
|
|
6
6
|
You have the following options:
|
|
7
|
-
1. Upgrade to Python 3.
|
|
7
|
+
1. Upgrade to Python 3.9 or newer.
|
|
8
8
|
This is highly recommended. new features will not be added to OmegaConf 2.3.
|
|
9
9
|
2. Continue using OmegaConf 2.3:
|
|
10
10
|
You can pip install 'OmegaConf<2.4' to do that.
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
if sys.version_info < (3,
|
|
13
|
+
if sys.version_info < (3, 9):
|
|
14
14
|
raise ImportError(msg) # pragma: no cover
|
|
@@ -1,23 +1,36 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: omegaconf
|
|
3
|
-
Version: 2.4.0.
|
|
3
|
+
Version: 2.4.0.dev4
|
|
4
4
|
Summary: A flexible configuration library
|
|
5
5
|
Home-page: https://github.com/omry/omegaconf
|
|
6
6
|
Author: Omry Yadan
|
|
7
7
|
Author-email: omry@yadan.net
|
|
8
8
|
Keywords: yaml configuration config
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.9
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
15
|
Classifier: License :: OSI Approved :: BSD License
|
|
14
16
|
Classifier: Operating System :: OS Independent
|
|
15
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.9
|
|
16
18
|
Description-Content-Type: text/markdown
|
|
17
19
|
License-File: LICENSE
|
|
18
20
|
Requires-Dist: PyYAML>=5.1.0
|
|
19
21
|
Requires-Dist: dataclasses; python_version == "3.6"
|
|
20
22
|
Requires-Dist: typing-extensions; python_version <= "3.9"
|
|
23
|
+
Dynamic: author
|
|
24
|
+
Dynamic: author-email
|
|
25
|
+
Dynamic: classifier
|
|
26
|
+
Dynamic: description
|
|
27
|
+
Dynamic: description-content-type
|
|
28
|
+
Dynamic: home-page
|
|
29
|
+
Dynamic: keywords
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
Dynamic: requires-dist
|
|
32
|
+
Dynamic: requires-python
|
|
33
|
+
Dynamic: summary
|
|
21
34
|
|
|
22
35
|
# OmegaConf
|
|
23
36
|
| | Description |
|
|
@@ -14,7 +14,7 @@ exclude = '''
|
|
|
14
14
|
'''
|
|
15
15
|
|
|
16
16
|
[tool.pytest.ini_options]
|
|
17
|
-
addopts = "--import-mode=append -Werror
|
|
17
|
+
addopts = "--import-mode=append -Werror"
|
|
18
18
|
pythonpath = ["."]
|
|
19
19
|
|
|
20
20
|
[tool.towncrier]
|
|
@@ -70,12 +70,14 @@ with open("README.md", "r") as fh:
|
|
|
70
70
|
"pydevd_plugins.extensions",
|
|
71
71
|
]
|
|
72
72
|
+ vendored_packages,
|
|
73
|
-
python_requires=">=3.
|
|
73
|
+
python_requires=">=3.9",
|
|
74
74
|
classifiers=[
|
|
75
|
-
"Programming Language :: Python :: 3.8",
|
|
76
75
|
"Programming Language :: Python :: 3.9",
|
|
77
76
|
"Programming Language :: Python :: 3.10",
|
|
78
77
|
"Programming Language :: Python :: 3.11",
|
|
78
|
+
"Programming Language :: Python :: 3.12",
|
|
79
|
+
"Programming Language :: Python :: 3.13",
|
|
80
|
+
"Programming Language :: Python :: 3.14",
|
|
79
81
|
"License :: OSI Approved :: BSD License",
|
|
80
82
|
"Operating System :: OS Independent",
|
|
81
83
|
],
|
|
@@ -49,7 +49,7 @@ def test_decode(monkeypatch: Any, value: Optional[str], expected: Any) -> None:
|
|
|
49
49
|
{
|
|
50
50
|
# The node of interest is "node" (others are used to test interpolations).
|
|
51
51
|
"parent": {
|
|
52
|
-
"node": f"${{oc.decode:'{value}'}}",
|
|
52
|
+
"node": f"${{oc.decode:'{value}'}}", # noqa: E231
|
|
53
53
|
"sibling": 1,
|
|
54
54
|
},
|
|
55
55
|
"uncle": 2,
|
|
@@ -100,6 +100,6 @@ def test_decode_none() -> None:
|
|
|
100
100
|
],
|
|
101
101
|
)
|
|
102
102
|
def test_decode_error(monkeypatch: Any, value: Any, exc: Any) -> None:
|
|
103
|
-
c = OmegaConf.create({"x": f"${{oc.decode:{value}}}"})
|
|
103
|
+
c = OmegaConf.create({"x": f"${{oc.decode:{value}}}"}) # noqa: E231
|
|
104
104
|
with exc:
|
|
105
105
|
c.x
|
|
@@ -18,6 +18,7 @@ We have separate test classes for the following cases:
|
|
|
18
18
|
TestPrimitiveTypeDunderMethods: for DictConfig where key_type is primitive
|
|
19
19
|
TestEnumTypeDunderMethods: for DictConfig where key_type is Enum
|
|
20
20
|
"""
|
|
21
|
+
|
|
21
22
|
from copy import deepcopy
|
|
22
23
|
from enum import Enum
|
|
23
24
|
from typing import Any, Dict, Optional
|
|
@@ -1663,7 +1663,7 @@ def test_resolver_error(restore_resolvers: Any, register_func: Any) -> None:
|
|
|
1663
1663
|
c = OmegaConf.create({"div_by_zero": "${div:1,0}"})
|
|
1664
1664
|
expected_msg = dedent(
|
|
1665
1665
|
"""\
|
|
1666
|
-
ZeroDivisionError raised while resolving interpolation: float division( by zero)?
|
|
1666
|
+
ZeroDivisionError raised while resolving interpolation: (float )?division( by zero)?
|
|
1667
1667
|
full_key: div_by_zero
|
|
1668
1668
|
object_type=dict"""
|
|
1669
1669
|
)
|
|
@@ -191,9 +191,9 @@ PARAMS_SINGLE_ELEMENT_NO_INTERPOLATION: List[Tuple[str, str, Any]] = [
|
|
|
191
191
|
),
|
|
192
192
|
(
|
|
193
193
|
"dict_unquoted_key",
|
|
194
|
-
rf"{{a0-null-1-3.14-NaN- {TAB}-true-False-{UNQUOTED_SPECIAL}\(\)\[\]\{{\}}\:\=\ \{TAB}\,:0}}",
|
|
194
|
+
rf"{{a0-null-1-3.14-NaN- {TAB}-true-False-{UNQUOTED_SPECIAL}\(\)\[\]\{{\}}\:\=\ \{TAB}\,:0}}", # noqa: E231
|
|
195
195
|
{
|
|
196
|
-
rf"a0-null-1-3.14-NaN- {TAB}-true-False-{UNQUOTED_SPECIAL}()[]{{}}:= {TAB},": 0
|
|
196
|
+
rf"a0-null-1-3.14-NaN- {TAB}-true-False-{UNQUOTED_SPECIAL}()[]{{}}:= {TAB},": 0 # noqa: E231
|
|
197
197
|
},
|
|
198
198
|
),
|
|
199
199
|
(
|