def test_select_unwrap(): context = Context({"dct": {"foo": "bar"}}, lst=[1, 2, 3], foo="foo") assert context.select("dct.foo", unwrap=True) == "bar" assert context.select("lst.0", unwrap=True) == 1 assert context.select("foo", unwrap=True) == "foo" node = context.select("dct", unwrap=True) assert isinstance(node, dict) and recurse_not_a_node(node) assert node == {"foo": "bar"} node = context.select("lst", unwrap=True) assert isinstance(node, list) and recurse_not_a_node(node) assert node == [1, 2, 3]
def test_node_value(): d = {"dct": {"foo": "bar"}, "lst": [1, 2, 3], "foo": "foo"} context = Context(d) assert isinstance(context, (Context, CtxDict)) assert isinstance(context["dct"], CtxDict) assert isinstance(context["lst"], CtxList) assert isinstance(context["foo"], Value) assert isinstance(context["dct"]["foo"], Value) assert isinstance(context["lst"][0], Value) assert context.value == d assert recurse_not_a_node(context.value) assert isinstance(context.value["dct"], dict) assert isinstance(context.value["lst"], list) assert isinstance(context.value["foo"], str) assert isinstance(context.value["dct"]["foo"], str) assert isinstance(context.value["lst"][0], int) assert isinstance(context["dct"].value, dict) assert context["dct"]["foo"].value == "bar" assert isinstance(context["lst"].value, list) assert context["lst"][1].value == 2 assert context["foo"].value == "foo"
def assert_stage_equal(d1, d2): """Keeps the params section in order, and then checks for equality.""" for d in [d1, d2]: assert recurse_not_a_node(d) for _, stage_d in d.get("stages", {}).items(): params = _merge_params(stage_d.get("params", [])) for k in params: params[k] = sorted(params[k]) if params: stage_d["params"] = params assert d1 == d2
def test_resolve_collection(): from tests.func.parsing import ( CONTEXT_DATA, RESOLVED_DVC_YAML_DATA, TEMPLATED_DVC_YAML_DATA, ) context = Context(CONTEXT_DATA) resolved = context.resolve(TEMPLATED_DVC_YAML_DATA) assert resolved == RESOLVED_DVC_YAML_DATA assert recurse_not_a_node(resolved)