def test_read_params_nested(tmp_dir, dvc):
    dump_yaml(DEFAULT_PARAMS_FILE,
              {"some": {
                  "path": {
                      "foo": ["val1", "val2"]
                  }
              }})
    dep = ParamsDependency(Stage(dvc), None, ["some.path.foo"])
    assert dep.read_params() == {"some.path.foo": ["val1", "val2"]}
Exemple #2
0
def test_read_params_nested(tmp_dir, dvc):
    tmp_dir.gen("params.yaml",
                yaml.dump({"some": {
                    "path": {
                        "foo": ["val1", "val2"]
                    }
                }}))
    dep = ParamsDependency(Stage(dvc), None, ["some.path.foo"])
    assert dep.read_params() == {"some.path.foo": ["val1", "val2"]}
def test_params_with_false_values(tmp_dir, dvc, param_value):
    """These falsy params values should not ignored by `status` on loading."""
    key = "param"
    dep = ParamsDependency(Stage(dvc), DEFAULT_PARAMS_FILE, [key])
    (tmp_dir / DEFAULT_PARAMS_FILE).write_text(f"{key}: {param_value}")

    dep.fill_values(load_yaml(DEFAULT_PARAMS_FILE))

    assert dep.status() == {}
Exemple #4
0
def test_params_with_false_values(tmp_dir, dvc, param_value):
    key = "param"
    dep = ParamsDependency(Stage(dvc), DEFAULT_PARAMS_FILE, [key])
    (tmp_dir / DEFAULT_PARAMS_FILE).write_text(f"{key}: {param_value}")

    dep.fill_values(load_yaml(DEFAULT_PARAMS_FILE))

    with dvc.state:
        assert dep.status() == {}
Exemple #5
0
def test_read_params_toml(tmp_dir, dvc):
    parameters_file = "parameters.toml"
    tmp_dir.gen(
        parameters_file,
        toml.dumps({"some": {
            "path": {
                "foo": ["val1", "val2"]
            }
        }}),
    )
    dep = ParamsDependency(Stage(dvc), parameters_file, ["some.path.foo"])
    assert dep.read_params() == {"some.path.foo": ["val1", "val2"]}
Exemple #6
0
def test_read_params_wrong_suffix(tmp_dir, dvc):
    parameters_file = "parameters.toml"
    tmp_dir.gen(
        parameters_file,
        yaml.dump({"some": {
            "path": {
                "foo": ["val1", "val2"]
            }
        }}),
    )
    dep = ParamsDependency(Stage(dvc), parameters_file, ["some.path.foo"])
    with pytest.raises(BadParamFileError):
        dep.read_params()
Exemple #7
0
def test_read_params_unsupported_format(tmp_dir, dvc):
    tmp_dir.gen("params.yaml", b"\0\1\2\3\4\5\6\7")
    dep = ParamsDependency(Stage(dvc), None, ["foo"])
    with pytest.raises(BadParamFileError):
        dep.read_params()
Exemple #8
0
def test_read_params_nonexistent_file(dvc):
    dep = ParamsDependency(Stage(dvc), None, ["foo"])
    assert dep.read_params() == {}
Exemple #9
0
def test_dumpd_without_info(dvc):
    dep = ParamsDependency(Stage(dvc), None, list(PARAMS.keys()))
    assert dep.dumpd() == {
        "path": "params.yaml",
        "params": list(PARAMS.keys()),
    }
Exemple #10
0
def test_dumpd_with_info(dvc):
    dep = ParamsDependency(Stage(dvc), None, PARAMS)
    assert dep.dumpd() == {
        "path": "params.yaml",
        "params": PARAMS,
    }
def test_get_hash_missing_param(tmp_dir, dvc):
    tmp_dir.gen(DEFAULT_PARAMS_FILE, "bar: baz")
    dep = ParamsDependency(Stage(dvc), None, ["foo"])
    with pytest.raises(MissingParamsError):
        dep.get_hash()
def test_get_hash_missing_config(dvc):
    dep = ParamsDependency(Stage(dvc), None, ["foo"])
    with pytest.raises(MissingParamsError):
        dep.get_hash()
def test_read_params_py(tmp_dir, dvc):
    parameters_file = "parameters.py"
    tmp_dir.gen(
        parameters_file,
        "INT: int = 5\n"
        "FLOAT = 0.001\n"
        "STR = 'abc'\n"
        "BOOL: bool = True\n"
        "DICT = {'a': 1}\n"
        "LIST = [1, 2, 3]\n"
        "SET = {4, 5, 6}\n"
        "TUPLE = (10, 100)\n"
        "NONE = None\n",
    )
    dep = ParamsDependency(
        Stage(dvc),
        parameters_file,
        [
            "INT",
            "FLOAT",
            "STR",
            "BOOL",
            "DICT",
            "LIST",
            "SET",
            "TUPLE",
            "NONE",
        ],
    )
    assert dep.read_params() == {
        "INT": 5,
        "FLOAT": 0.001,
        "STR": "abc",
        "BOOL": True,
        "DICT": {
            "a": 1
        },
        "LIST": [1, 2, 3],
        "SET": {4, 5, 6},
        "TUPLE": (10, 100),
        "NONE": None,
    }

    tmp_dir.gen(
        parameters_file,
        "class Train:\n    foo = 'val1'\n    bar = 'val2'\n",
    )
    dep = ParamsDependency(Stage(dvc), parameters_file, ["Train.foo"])
    assert dep.read_params() == {"Train.foo": "val1"}

    dep = ParamsDependency(Stage(dvc), parameters_file, ["Train"])
    assert dep.read_params() == {
        "Train": {
            "foo": "val1",
            "bar": "val2"
        },
    }

    tmp_dir.gen(
        parameters_file,
        "x = 4\n"
        "config.x = 3\n"
        "class Klass:\n"
        "    def __init__(self):\n"
        "        self.a = 'val1'\n"
        "        container.a = 2\n"
        "        self.container.a = 1\n"
        "        a = 'val2'\n",
    )
    dep = ParamsDependency(Stage(dvc), parameters_file, ["x", "Klass.a"])
    assert dep.read_params() == {"x": 4, "Klass.a": "val1"}
def test_read_params_default_loader(tmp_dir, dvc):
    parameters_file = "parameters.foo"
    dump_yaml(parameters_file, {"some": {"path": {"foo": ["val1", "val2"]}}})
    dep = ParamsDependency(Stage(dvc), parameters_file, ["some.path.foo"])
    assert dep.read_params() == {"some.path.foo": ["val1", "val2"]}
Exemple #15
0
def test_save_info_missing_config(dvc):
    dep = ParamsDependency(Stage(dvc), None, ["foo"])
    with pytest.raises(MissingParamsError):
        dep.save_info()
Exemple #16
0
def test_save_info_missing_param(tmp_dir, dvc):
    tmp_dir.gen("params.yaml", "bar: baz")
    dep = ParamsDependency(Stage(dvc), None, ["foo"])
    with pytest.raises(MissingParamsError):
        dep.save_info()
def test_dumpd_with_info(dvc):
    dep = ParamsDependency(Stage(dvc), None, PARAMS)
    assert dep.dumpd() == {
        "path": DEFAULT_PARAMS_FILE,
        "params": PARAMS,
    }