}], ), # ListConfig ( lambda value, is_optional, key=None: ListConfig( is_optional=is_optional, content=value, key=key), [[], [1, 2, 3]], ), # dataclass ( lambda value, is_optional, key=None: DictConfig(ref_type=Group, is_optional= is_optional, content=value, key=key), [Group, Group()], ), ], ids=( "BooleanNode", "BytesNode", "FloatNode", "IntegerNode", "StringNode", "EnumNode", "DictConfig", "ListConfig", "dataclass", ), ) class TestNodeTypesMatrix:
param( [{ "user": "******" }, { "user": Group }], {"user": Group}, id="merge_into_missing_node", ), param( [{ "admin": { "name": "joe", "age": 42 } }, Group(admin=None)], {"admin": None}, id="merge_none_into_existing_node", ), param( [{ "user": User() }, { "user": { "foo": "bar" } }], raises(ConfigKeyError), id="merge_unknown_key_into_structured_node", ), # DictConfig with element_type of Structured Config
), pytest.param( [{"user": User}, {"user": Group}], pytest.raises(ValidationError), id="merge_group_onto_user_error", ), pytest.param( [Plugin, ConcretePlugin], ConcretePlugin, id="merge_subclass_on_superclass" ), pytest.param( [{"user": "******"}, {"user": Group}], {"user": Group}, id="merge_into_missing_node", ), pytest.param( [{"admin": {"name": "joe", "age": 42}}, Group(admin=None)], {"admin": None}, id="merge_none_into_existing_node", ), pytest.param( [{"user": User()}, {"user": {"foo": "bar"}}], pytest.raises(ConfigKeyError), id="merge_unknown_key_into_structured_node", ), # DictConfig with element_type of Structured Config pytest.param( ( DictConfig({}, element_type=User), {"user007": {"age": 99}}, ), {"user007": {"name": "???", "age": 99}},