Beispiel #1
0
def test_interpolation_readonly_node() -> None:
    cfg = OmegaConf.structured(User(name="7", age=II("name")))
    resolved = dereference_node(cfg, "age")
    assert resolved == 7
    # The `resolved` node must be read-only because `age` is an integer, so the
    # interpolation cannot return directly the `name` node.
    assert resolved._get_flag("readonly")
def test_resolver_output_list_to_listconfig(restore_resolvers: Any,
                                            cfg: List[Any],
                                            expected: List[Any]) -> None:
    OmegaConf.register_new_resolver("list", lambda: cfg)
    c = OmegaConf.create({"x": "${list:}", "y": -1})
    assert isinstance(c.x, ListConfig)
    assert c.x == expected
    assert dereference_node(c, "x")._get_flag("readonly")
Beispiel #3
0
def test_resolver_output_dict(restore_resolvers: Any, readonly: bool) -> None:
    some_dict = {"a": 0, "b": "${y}"}
    OmegaConf.register_new_resolver("dict", lambda: some_dict)
    c = OmegaConf.create({"x": "${dict:}", "y": -1})
    OmegaConf.set_readonly(c, readonly)
    assert isinstance(c.x, dict)
    assert c.x == some_dict
    x_node = dereference_node(c, "x")
    assert isinstance(x_node, InterpolationResultNode)
    assert x_node._get_flag("readonly")
def test_interpolation_like_result_is_not_an_interpolation(
    node_type: Any, value: str, expected: str
) -> None:
    cfg = OmegaConf.create({"x": node_type(value), "y1": "{foo}", "y2": "{foo"})
    assert cfg.x == expected

    # Check that the resulting node is not considered to be an interpolation.
    resolved_node = dereference_node(cfg, "x")
    assert not resolved_node._is_interpolation()

    # Check that the resulting node is read-only.
    with raises(ReadonlyConfigError):
        resolved_node._set_value("foo")
Beispiel #5
0
def test_resolver_output_plain_dict_list(restore_resolvers: Any,
                                         readonly: bool, data: Any,
                                         expected_type: type) -> None:
    OmegaConf.register_new_resolver("get_data", lambda: data)
    c = OmegaConf.create({"x": "${get_data:}", "y": -1})
    OmegaConf.set_readonly(c, readonly)

    assert isinstance(c.x, expected_type)
    assert c.x == data

    x_node = dereference_node(c, "x")
    assert isinstance(x_node, InterpolationResultNode)
    assert x_node._get_flag("readonly")