Merge pull request #2304 from pared/2285

metric: show: xpath should override stage file xpath
This commit is contained in:
Ruslan Kuprieiev
2019-07-25 18:43:29 +03:00
committed by GitHub
2 changed files with 20 additions and 1 deletions
+7 -1
View File
@@ -188,10 +188,16 @@ def _collect_metrics(repo, path, recursive, typ, xpath, branch):
if not o.metric:
continue
# NOTE this case assumes that metric has been modified with
# `dvc metric modify -t {} -x {}`, so stage file should contain
# info what type metric is and what is its xpath
if not typ and isinstance(o.metric, dict):
t = o.metric.get(o.PARAM_METRIC_TYPE, typ)
x = o.metric.get(o.PARAM_METRIC_XPATH, xpath)
# NOTE user might want to check different xpath, hence xpath first
x = xpath or o.metric.get(o.PARAM_METRIC_XPATH)
else:
# NOTE if metric has not been modified, user needs to provide
# both metric type and xpath
t = typ
x = xpath
+13
View File
@@ -831,3 +831,16 @@ class TestShouldDisplayMetricsEvenIfMetricIsMissing(object):
in caplog.text
)
assert 0 == ret
def test_show_xpath_should_override_stage_xpath(dvc_repo):
metric_file = "metric"
metric = {"m1": 0.1, "m2": 0.2}
with open(metric_file, "w") as fobj:
json.dump(metric, fobj)
dvc_repo.run(cmd="", overwrite=True, metrics=[metric_file])
dvc_repo.metrics.modify(metric_file, typ="json", xpath="m2")
result = dvc_repo.metrics.show(xpath="m1")
assert result == {"": {metric_file: [0.1]}}