mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-10 07:18:27 +01:00
Merge pull request #2304 from pared/2285
metric: show: xpath should override stage file xpath
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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]}}
|
||||
|
||||
Reference in New Issue
Block a user