def test_merge_list(): c1 = Context(lst=[1, 2, 3]) with pytest.raises(ValueError): # cannot overwrite by default c1.merge_update({"lst": [10, 11, 12]}) # lists are never merged c1.merge_update({"lst": [10, 11, 12]}, overwrite=True) assert c1.select("lst") == [10, 11, 12]
def test_merge_list(): c1 = Context(lst=[1, 2, 3]) with pytest.raises(MergeError): # cannot overwrite by default c1.merge_update({"lst": [10, 11, 12]}) # lists are never merged c1.merge_update({"lst": [10, 11, 12]}, overwrite=True) node = c1.select("lst") assert node == [10, 11, 12] assert isinstance(node, CtxList) assert node[0] == Value(10)
def test_merge_dict(): d1 = {"Train": {"us": {"lr": 10}}} d2 = {"Train": {"us": {"layers": 100}}} c1 = Context(d1) c2 = Context(d2) c1.merge_update(c2) assert c1.select("Train.us") == CtxDict(lr=10, layers=100) with pytest.raises(ValueError): # cannot overwrite by default c1.merge_update({"Train": {"us": {"lr": 15}}}) c1.merge_update({"Train": {"us": {"lr": 15}}}, overwrite=True) assert c1.select("Train.us") == CtxDict(lr=15, layers=100)
def test_merge_dict(): d1 = {"Train": {"us": {"lr": 10}}} d2 = {"Train": {"us": {"layers": 100}}} c1 = Context(d1) c2 = Context(d2) c1.merge_update(c2) assert c1.select("Train.us") == CtxDict(lr=10, layers=100) with pytest.raises(MergeError): # cannot overwrite by default c1.merge_update({"Train": {"us": {"lr": 15}}}) c1.merge_update({"Train": {"us": {"lr": 15}}}, overwrite=True) node = c1.select("Train.us") assert node == {"lr": 15, "layers": 100} assert isinstance(node, CtxDict) assert node["lr"] == Value(15) assert node["layers"] == Value(100)