Files
2026-07-13 13:22:34 +08:00

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)