Files
dvc/tests/unit/dependency/test_params.py
T
Helge Munk JacobsenandRuslan Kuprieiev 28748ff345 introduce hyper parameters and config (#3515)
* Work in progress

* added file parsing and name validation + adjust schema

* Exceptions on bad input

* Support multiple parameters

* Support multi 's in
Having any troubles? Hit us up at https://dvc.org/support, we are always happy to help!

* fix formatting

* dep: param: fix schema

Signed-off-by: Ruslan Kuprieiev <[email protected]>

* run: check if --params is specified

* dvc: rework param handling

* params: fix exc formatting

* params: support basic nested configs

Co-authored-by: Ruslan Kuprieiev <[email protected]>
2020-03-24 17:56:39 +02:00

82 lines
2.2 KiB
Python

import yaml
import pytest
from dvc.dependency import DependencyPARAMS, loads_params, loadd_from
from dvc.dependency.param import BadParamFileError, MissingParamsError
from dvc.stage import Stage
PARAMS = {
"foo": 1,
"bar": 53.135,
"baz": "str",
"qux": None,
}
def test_loads_params(dvc):
stage = Stage(dvc)
deps = loads_params(stage, ["foo", "bar,baz", "a_file:qux"])
assert len(deps) == 2
assert isinstance(deps[0], DependencyPARAMS)
assert deps[0].def_path == DependencyPARAMS.DEFAULT_PARAMS_FILE
assert deps[0].params == ["foo", "bar", "baz"]
assert deps[0].info == {}
assert isinstance(deps[1], DependencyPARAMS)
assert deps[1].def_path == "a_file"
assert deps[1].params == ["qux"]
assert deps[1].info == {}
def test_loadd_from(dvc):
stage = Stage(dvc)
deps = loadd_from(stage, [{"params": PARAMS}])
assert len(deps) == 1
assert isinstance(deps[0], DependencyPARAMS)
assert deps[0].def_path == DependencyPARAMS.DEFAULT_PARAMS_FILE
assert deps[0].params == list(PARAMS.keys())
assert deps[0].info == PARAMS
def test_dumpd_with_info(dvc):
dep = DependencyPARAMS(Stage(dvc), None, PARAMS)
assert dep.dumpd() == {
"path": "params.yaml",
"params": PARAMS,
}
def test_dumpd_without_info(dvc):
dep = DependencyPARAMS(Stage(dvc), None, list(PARAMS.keys()))
assert dep.dumpd() == {
"path": "params.yaml",
"params": list(PARAMS.keys()),
}
def test_get_info_nonexistent_file(dvc):
dep = DependencyPARAMS(Stage(dvc), None, ["foo"])
assert dep._get_info() == {}
def test_get_info_unsupported_format(tmp_dir, dvc):
tmp_dir.gen("params.yaml", b"\0\1\2\3\4\5\6\7")
dep = DependencyPARAMS(Stage(dvc), None, ["foo"])
with pytest.raises(BadParamFileError):
dep._get_info()
def test_get_info_nested(tmp_dir, dvc):
tmp_dir.gen("params.yaml", yaml.dump({"some": {"path": {"foo": "val"}}}))
dep = DependencyPARAMS(Stage(dvc), None, ["some.path.foo"])
assert dep._get_info() == {"some.path.foo": "val"}
def test_save_info_missing_params(dvc):
dep = DependencyPARAMS(Stage(dvc), None, ["foo"])
with pytest.raises(MissingParamsError):
dep.save_info()