def run(self): try: diff = self.repo.params.diff( a_rev=self.args.a_rev, b_rev=self.args.b_rev, targets=self.args.targets, all=self.args.all, deps=self.args.deps, ) except DvcException: logger.exception("failed to show params diff") return 1 if self.args.json: ui.write_json(diff) else: from dvc.compare import show_diff show_diff( diff, title="Param", markdown=self.args.markdown, no_path=self.args.no_path, show_changes=False, ) return 0
def run(self): try: diff = self.repo.metrics.diff( a_rev=self.args.a_rev, b_rev=self.args.b_rev, targets=self.args.targets, recursive=self.args.recursive, all=self.args.all, ) except DvcException: logger.exception("failed to show metrics diff") return 1 if self.args.json: ui.write_json(diff) else: from dvc.compare import show_diff show_diff( diff, title="Metric", markdown=self.args.markdown, no_path=self.args.no_path, precision=self.args.precision or DEFAULT_PRECISION, round_digits=True, a_rev=self.args.a_rev, b_rev=self.args.b_rev, ) return 0
def test_metrics_diff_md(capsys): show_diff( { "metrics.yaml": { "x.b": { "old": 5, "new": 6 }, "a.d.e": { "old": 3, "new": 4, "diff": 1 }, "a.b.c": { "old": 1, "new": 2, "diff": 1 }, } }, "Metric", markdown=True, ) out, _ = capsys.readouterr() assert out == textwrap.dedent("""\ | Path | Metric | Old | New | Change | |--------------|----------|-------|-------|----------| | metrics.yaml | a.b.c | 1 | 2 | 1 | | metrics.yaml | a.d.e | 3 | 4 | 1 | | metrics.yaml | x.b | 5 | 6 | - | """)
def test_diff_default(capsys): show_diff( { "metrics.yaml": { "x.b": { "old": 5, "new": 6 }, "a.d.e": { "old": 3, "new": 4, "diff": 1 }, "a.b.c": { "old": 1, "new": 2, "diff": 1 }, } }, "Metric", ) out, _ = capsys.readouterr() assert out == textwrap.dedent("""\ Path Metric Old New Change metrics.yaml a.b.c 1 2 1 metrics.yaml a.d.e 3 4 1 metrics.yaml x.b 5 6 - """)
def run(self): try: diff = self.repo.metrics.diff( a_rev=self.args.a_rev, b_rev=self.args.b_rev, targets=self.args.targets, recursive=self.args.recursive, all=self.args.all, ) except DvcException: logger.exception("failed to show metrics diff") return 1 if self.args.show_json: import json logger.info(json.dumps(diff)) else: from dvc.compare import show_diff show_diff( diff, title="Metric", markdown=self.args.show_md, no_path=self.args.no_path, precision=self.args.precision or DEFAULT_PRECISION, ) return 0
def test_diff_mocked(mocker, markdown): ret = mocker.MagicMock() m = mocker.patch("dvc.compare.diff_table", return_value=ret) show_diff({}, "metrics", markdown=markdown) m.assert_called_once_with( {}, title="metrics", old=True, no_path=False, precision=None, on_empty_diff=None, show_changes=True, round_digits=False, ) ret.render.assert_called_once_with(markdown=markdown)
def run(self): try: diff = self.repo.experiments.diff( a_rev=self.args.a_rev, b_rev=self.args.b_rev, all=self.args.all, param_deps=self.args.param_deps, ) except DvcException: logger.exception("failed to show experiments diff") return 1 if self.args.show_json: import json logger.info(json.dumps(diff)) else: from dvc.compare import show_diff precision = self.args.precision or DEFAULT_PRECISION diffs = [("metrics", "Metric"), ("params", "Param")] for idx, (key, title) in enumerate(diffs): if idx: from dvc.ui import ui # we are printing tables even in `--quiet` mode # so we should also be printing the "table" separator ui.write(force=True) show_diff( diff[key], title=title, markdown=self.args.show_md, no_path=self.args.no_path, old=self.args.old, on_empty_diff="diff not supported", precision=precision if key == "metrics" else None, ) return 0