40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
from mlflow.entities import RunData
|
|
|
|
|
|
def _check_metrics(metric_objs, metrics_dict, expected_metrics):
|
|
assert {m.key for m in metric_objs} == {m.key for m in expected_metrics}
|
|
assert {m.value for m in metric_objs} == {m.value for m in expected_metrics}
|
|
assert {m.timestamp for m in metric_objs} == {m.timestamp for m in expected_metrics}
|
|
assert {m.step for m in metric_objs} == {m.step for m in expected_metrics}
|
|
assert len(metrics_dict) == len(expected_metrics)
|
|
assert metrics_dict == {m.key: m.value for m in expected_metrics}
|
|
|
|
|
|
def _check_params(params_dict, expected_params):
|
|
assert params_dict == {p.key: p.value for p in expected_params}
|
|
|
|
|
|
def _check_tags(tags_dict, expected_tags):
|
|
assert tags_dict == {t.key: t.value for t in expected_tags}
|
|
|
|
|
|
def _check(rd, metrics, params, tags):
|
|
assert isinstance(rd, RunData)
|
|
_check_metrics(rd._metric_objs, rd.metrics, metrics)
|
|
_check_params(rd.params, params)
|
|
_check_tags(rd.tags, tags)
|
|
|
|
|
|
def test_creation_and_hydration(run_data):
|
|
rd, metrics, params, tags = run_data
|
|
_check(rd, metrics, params, tags)
|
|
as_dict = {
|
|
"metrics": {m.key: m.value for m in metrics},
|
|
"params": {p.key: p.value for p in params},
|
|
"tags": {t.key: t.value for t in tags},
|
|
}
|
|
assert dict(rd) == as_dict
|
|
proto = rd.to_proto()
|
|
rd2 = RunData.from_proto(proto)
|
|
_check(rd2, metrics, params, tags)
|