diff --git a/dvc/commands/plots.py b/dvc/commands/plots.py index 04a3d65d09..c9f9befd75 100644 --- a/dvc/commands/plots.py +++ b/dvc/commands/plots.py @@ -22,49 +22,6 @@ def _show_json(renderers, split=False): ui.write_json(result, highlight=False) -def _adjust_vega_renderers(renderers): - from dvc.render import REVISION_FIELD, VERSION_FIELD - from dvc_render import VegaRenderer - - for r in renderers: - if isinstance(r, VegaRenderer): - if _data_versions_count(r) > 1: - summary = _summarize_version_infos(r) - for dp in r.datapoints: - vi = dp.pop(VERSION_FIELD, {}) - keys = list(vi.keys()) - for key in keys: - if not (len(summary.get(key, set())) > 1): - vi.pop(key) - if vi: - dp["rev"] = "::".join(vi.values()) - else: - for dp in r.datapoints: - dp[REVISION_FIELD] = dp[VERSION_FIELD]["revision"] - dp.pop(VERSION_FIELD, {}) - - -def _summarize_version_infos(renderer): - from collections import defaultdict - - from dvc.render import VERSION_FIELD - - result = defaultdict(set) - - for dp in renderer.datapoints: - for key, value in dp.get(VERSION_FIELD, {}).items(): - result[key].add(value) - return dict(result) - - -def _data_versions_count(renderer): - from itertools import product - - summary = _summarize_version_infos(renderer) - x = product(summary.get("filename", {None}), summary.get("field", {None})) - return len(set(x)) - - class CmdPlots(CmdBase): def _func(self, *args, **kwargs): raise NotImplementedError @@ -132,7 +89,6 @@ def run(self) -> int: # noqa: C901, PLR0911, PLR0912 _show_json(renderers, self.args.split) return 0 - _adjust_vega_renderers(renderers) if self.args.show_vega: renderer = first(filter(lambda r: r.TYPE == "vega", renderers)) if renderer: diff --git a/dvc/render/__init__.py b/dvc/render/__init__.py index bedc1414cf..cb504bd9e2 100644 --- a/dvc/render/__init__.py +++ b/dvc/render/__init__.py @@ -1,7 +1,7 @@ INDEX_FIELD = "step" REVISION_FIELD = "rev" FILENAME_FIELD = "filename" -VERSION_FIELD = "dvc_data_version_info" +FIELD_PREFIX = "dvc_" REVISIONS_KEY = "revisions" TYPE_KEY = "type" SRC_FIELD = "src" diff --git a/dvc/render/convert.py b/dvc/render/convert.py index 828f5383b2..688861941a 100644 --- a/dvc/render/convert.py +++ b/dvc/render/convert.py @@ -2,7 +2,7 @@ from collections import defaultdict from typing import Dict, List, Union -from dvc.render import REVISION_FIELD, REVISIONS_KEY, SRC_FIELD, TYPE_KEY, VERSION_FIELD +from dvc.render import FIELD_PREFIX, REVISION_FIELD, REVISIONS_KEY, SRC_FIELD, TYPE_KEY from dvc.render.converter.image import ImageConverter from dvc.render.converter.vega import VegaConverter @@ -23,7 +23,7 @@ def _get_converter( def _group_by_rev(datapoints): grouped = defaultdict(list) for datapoint in datapoints: - rev = datapoint.get(VERSION_FIELD, {}).get("revision") + rev = datapoint.get(f"{FIELD_PREFIX}rev") grouped[rev].append(datapoint) return dict(grouped) diff --git a/dvc/render/converter/vega.py b/dvc/render/converter/vega.py index 38979552bb..0e85d06fdf 100644 --- a/dvc/render/converter/vega.py +++ b/dvc/render/converter/vega.py @@ -4,7 +4,7 @@ from funcy import first, last from dvc.exceptions import DvcException -from dvc.render import FILENAME_FIELD, INDEX_FIELD, VERSION_FIELD +from dvc.render import FIELD_PREFIX, FILENAME_FIELD, INDEX_FIELD, REVISION_FIELD from . import Converter @@ -202,13 +202,7 @@ def flat_datapoints(self, revision): # noqa: C901, PLR0912 xs = list(_get_xs(properties, file2datapoints)) # assign "step" if no x provided - if not xs: - x_file, x_field = ( - None, - INDEX_FIELD, - ) - else: - x_file, x_field = xs[0] + x_file, x_field = _get_x_props(xs) props_update["x"] = x_field ys = list(_get_ys(properties, file2datapoints)) @@ -222,15 +216,10 @@ def flat_datapoints(self, revision): # noqa: C901, PLR0912 ) all_datapoints = [] - if ys: - all_y_files, all_y_fields = list(zip(*ys)) - all_y_fields = set(all_y_fields) - all_y_files = set(all_y_files) - else: - all_y_files = set() - all_y_fields = set() + all_y_files, all_y_fields = _get_all_y_props(ys) # override to unified y field name if there are different y fields + # also get common prefix to drop from field names if len(all_y_fields) > 1: props_update["y"] = "dvc_inferred_y_value" else: @@ -272,14 +261,17 @@ def flat_datapoints(self, revision): # noqa: C901, PLR0912 ) y_file_short = y_file[common_prefix_len:].strip("/\\") + all_fields = [revision, y_file_short, y_field] + joined_all = "::".join([f for f in all_fields if f]) + _update_all( datapoints, update_dict={ - VERSION_FIELD: { - "revision": revision, - FILENAME_FIELD: y_file_short, - "field": y_field, - } + REVISION_FIELD: joined_all, + f"{FIELD_PREFIX}id": joined_all, + f"{FIELD_PREFIX}rev": revision, + f"{FIELD_PREFIX}{FILENAME_FIELD}": y_file_short, + f"{FIELD_PREFIX}field": y_field, }, ) @@ -344,3 +336,19 @@ def _update_from_index(datapoints: List[Dict], new_field: str): def _update_all(datapoints: List[Dict], update_dict: Dict): for datapoint in datapoints: datapoint.update(update_dict) + + +def _get_x_props(xs: List): + if not xs: + return ( + None, + INDEX_FIELD, + ) + return xs[0] + + +def _get_all_y_props(ys: List): + if ys: + all_y_files, all_y_fields = list(zip(*ys)) + return set(all_y_files), set(all_y_fields) + return set(), set() diff --git a/tests/integration/plots/test_plots.py b/tests/integration/plots/test_plots.py index c8db3923ec..6ca1bce5f7 100644 --- a/tests/integration/plots/test_plots.py +++ b/tests/integration/plots/test_plots.py @@ -11,7 +11,7 @@ from funcy import first from dvc.cli import main -from dvc.render import REVISION_FIELD, VERSION_FIELD +from dvc.render import REVISION_FIELD JSON_OUT = "vis_data" @@ -187,17 +187,21 @@ def test_repo_with_plots(tmp_dir, scm, dvc, capsys, run_copy_metrics, repo_with_ ] == _update_datapoints( linear_v1, { - VERSION_FIELD: { - "revision": "workspace", - "filename": "linear.json", - "field": "y", - }, + REVISION_FIELD: "workspace::linear.json::y", + "dvc_id": "workspace::linear.json::y", + "dvc_rev": "workspace", + "dvc_filename": "linear.json", + "dvc_field": "y", }, ) assert html_result["linear.json"]["data"]["values"] == _update_datapoints( linear_v1, { - REVISION_FIELD: "workspace", + REVISION_FIELD: "workspace::linear.json::y", + "dvc_id": "workspace::linear.json::y", + "dvc_rev": "workspace", + "dvc_filename": "linear.json", + "dvc_field": "y", }, ) assert json_result["confusion.json"][0]["content"]["data"][ @@ -205,17 +209,21 @@ def test_repo_with_plots(tmp_dir, scm, dvc, capsys, run_copy_metrics, repo_with_ ] == _update_datapoints( confusion_v1, { - VERSION_FIELD: { - "revision": "workspace", - "filename": "confusion.json", - "field": "actual", - }, + REVISION_FIELD: "workspace::confusion.json::actual", + "dvc_id": "workspace::confusion.json::actual", + "dvc_rev": "workspace", + "dvc_filename": "confusion.json", + "dvc_field": "actual", }, ) assert html_result["confusion.json"]["data"]["values"] == _update_datapoints( confusion_v1, { - REVISION_FIELD: "workspace", + REVISION_FIELD: "workspace::confusion.json::actual", + "dvc_id": "workspace::confusion.json::actual", + "dvc_rev": "workspace", + "dvc_filename": "confusion.json", + "dvc_field": "actual", }, ) verify_image(tmp_dir, "workspace", "image.png", image_v1, html_path, json_result) @@ -259,31 +267,39 @@ def test_repo_with_plots(tmp_dir, scm, dvc, capsys, run_copy_metrics, repo_with_ ] == _update_datapoints( linear_v2, { - VERSION_FIELD: { - "revision": "workspace", - "filename": "../linear.json", - "field": "y", - }, + REVISION_FIELD: "workspace::../linear.json::y", + "dvc_rev": "workspace", + "dvc_filename": "../linear.json", + "dvc_field": "y", + "dvc_id": "workspace::../linear.json::y", }, ) + _update_datapoints( linear_v1, { - VERSION_FIELD: { - "revision": "HEAD", - "filename": "../linear.json", - "field": "y", - }, + REVISION_FIELD: "HEAD::../linear.json::y", + "dvc_rev": "HEAD", + "dvc_filename": "../linear.json", + "dvc_field": "y", + "dvc_id": "HEAD::../linear.json::y", }, ) assert html_result["../linear.json"]["data"]["values"] == _update_datapoints( linear_v2, { - REVISION_FIELD: "workspace", + REVISION_FIELD: "workspace::../linear.json::y", + "dvc_rev": "workspace", + "dvc_filename": "../linear.json", + "dvc_field": "y", + "dvc_id": "workspace::../linear.json::y", }, ) + _update_datapoints( linear_v1, { - REVISION_FIELD: "HEAD", + REVISION_FIELD: "HEAD::../linear.json::y", + "dvc_rev": "HEAD", + "dvc_filename": "../linear.json", + "dvc_field": "y", + "dvc_id": "HEAD::../linear.json::y", }, ) assert json_result["../confusion.json"][0]["content"]["data"][ @@ -291,31 +307,39 @@ def test_repo_with_plots(tmp_dir, scm, dvc, capsys, run_copy_metrics, repo_with_ ] == _update_datapoints( confusion_v2, { - VERSION_FIELD: { - "revision": "workspace", - "filename": "../confusion.json", - "field": "actual", - }, + REVISION_FIELD: "workspace::../confusion.json::actual", + "dvc_rev": "workspace", + "dvc_filename": "../confusion.json", + "dvc_field": "actual", + "dvc_id": "workspace::../confusion.json::actual", }, ) + _update_datapoints( confusion_v1, { - VERSION_FIELD: { - "revision": "HEAD", - "filename": "../confusion.json", - "field": "actual", - }, + REVISION_FIELD: "HEAD::../confusion.json::actual", + "dvc_rev": "HEAD", + "dvc_filename": "../confusion.json", + "dvc_field": "actual", + "dvc_id": "HEAD::../confusion.json::actual", }, ) assert html_result["../confusion.json"]["data"]["values"] == _update_datapoints( confusion_v2, { - REVISION_FIELD: "workspace", + REVISION_FIELD: "workspace::../confusion.json::actual", + "dvc_rev": "workspace", + "dvc_filename": "../confusion.json", + "dvc_field": "actual", + "dvc_id": "workspace::../confusion.json::actual", }, ) + _update_datapoints( confusion_v1, { - REVISION_FIELD: "HEAD", + REVISION_FIELD: "HEAD::../confusion.json::actual", + "dvc_rev": "HEAD", + "dvc_filename": "../confusion.json", + "dvc_field": "actual", + "dvc_id": "HEAD::../confusion.json::actual", }, ) @@ -412,12 +436,20 @@ def test_repo_with_config_plots(tmp_dir, capsys, repo_with_config_plots): ble = _update_datapoints( plots["data"]["linear_train.json"], { - REVISION_FIELD: "linear_train.json", + REVISION_FIELD: "workspace::linear_train.json::y", + "dvc_id": "workspace::linear_train.json::y", + "dvc_rev": "workspace", + "dvc_filename": "linear_train.json", + "dvc_field": "y", }, ) + _update_datapoints( plots["data"]["linear_test.json"], { - REVISION_FIELD: "linear_test.json", + REVISION_FIELD: "workspace::linear_test.json::y", + "dvc_id": "workspace::linear_test.json::y", + "dvc_rev": "workspace", + "dvc_filename": "linear_test.json", + "dvc_field": "y", }, ) diff --git a/tests/unit/render/test_convert.py b/tests/unit/render/test_convert.py index 44b83acb25..78345bf52e 100644 --- a/tests/unit/render/test_convert.py +++ b/tests/unit/render/test_convert.py @@ -1,4 +1,4 @@ -from dvc.render import REVISION_FIELD, REVISIONS_KEY, SRC_FIELD, TYPE_KEY, VERSION_FIELD +from dvc.render import REVISION_FIELD, REVISIONS_KEY, SRC_FIELD, TYPE_KEY from dvc.render.convert import to_json @@ -10,14 +10,22 @@ def test_to_json_vega(mocker): { "x": 1, "y": 2, - VERSION_FIELD: {"revision": "foo"}, "filename": "foo.json", + REVISION_FIELD: "foo::foo.json::y", + "dvc_id": "foo::foo.json::y", + "dvc_rev": "foo", + "dvc_filename": "foo.json", + "dvc_field": "y", }, { "x": 2, "y": 1, - VERSION_FIELD: {"revision": "bar"}, "filename": "foo.json", + REVISION_FIELD: "bar::foo.json::y", + "dvc_id": "bar::foo.json::y", + "dvc_rev": "bar", + "dvc_filename": "foo.json", + "dvc_field": "y", }, ] result = to_json(vega_renderer) @@ -31,7 +39,11 @@ def test_to_json_vega(mocker): "x": 1, "y": 2, "filename": "foo.json", - VERSION_FIELD: {"revision": "foo"}, + REVISION_FIELD: "foo::foo.json::y", + "dvc_id": "foo::foo.json::y", + "dvc_rev": "foo", + "dvc_filename": "foo.json", + "dvc_field": "y", }, ], "bar": [ @@ -39,7 +51,11 @@ def test_to_json_vega(mocker): "x": 2, "y": 1, "filename": "foo.json", - VERSION_FIELD: {"revision": "bar"}, + REVISION_FIELD: "bar::foo.json::y", + "dvc_id": "bar::foo.json::y", + "dvc_rev": "bar", + "dvc_filename": "foo.json", + "dvc_field": "y", }, ], }, @@ -55,14 +71,22 @@ def test_to_json_vega_split(mocker): { "x": 1, "y": 2, - VERSION_FIELD: {"revision": "foo"}, "filename": "foo.json", + REVISION_FIELD: "foo::foo.json::y", + "dvc_id": "foo::foo.json::y", + "dvc_rev": "foo", + "dvc_filename": "foo.json", + "dvc_field": "y", }, { "x": 2, "y": 1, - VERSION_FIELD: {"revision": "bar"}, "filename": "foo.json", + REVISION_FIELD: "bar::foo.json::y", + "dvc_id": "bar::foo.json::y", + "dvc_rev": "bar", + "dvc_filename": "foo.json", + "dvc_field": "y", }, ] result = to_json(vega_renderer, split=True) @@ -76,7 +100,11 @@ def test_to_json_vega_split(mocker): "x": 1, "y": 2, "filename": "foo.json", - VERSION_FIELD: {"revision": "foo"}, + REVISION_FIELD: "foo::foo.json::y", + "dvc_id": "foo::foo.json::y", + "dvc_rev": "foo", + "dvc_filename": "foo.json", + "dvc_field": "y", } ], "bar": [ @@ -84,7 +112,11 @@ def test_to_json_vega_split(mocker): "x": 2, "y": 1, "filename": "foo.json", - VERSION_FIELD: {"revision": "bar"}, + REVISION_FIELD: "bar::foo.json::y", + "dvc_id": "bar::foo.json::y", + "dvc_rev": "bar", + "dvc_filename": "foo.json", + "dvc_field": "y", } ], }, diff --git a/tests/unit/render/test_match.py b/tests/unit/render/test_match.py index 02316559ab..fbee5e3d65 100644 --- a/tests/unit/render/test_match.py +++ b/tests/unit/render/test_match.py @@ -1,4 +1,4 @@ -from dvc.render import VERSION_FIELD +from dvc.render import REVISION_FIELD from dvc.render.match import PlotsData, _squash_plots_properties, match_defs_renderers @@ -81,22 +81,22 @@ def test_match_renderers(mocker): assert len(renderers) == 1 assert renderers[0].datapoints == [ { - VERSION_FIELD: { - "revision": "v1", - "filename": "file.json", - "field": "y", - }, "x": 1, "y": 1, + REVISION_FIELD: "v1::file.json::y", + "dvc_id": "v1::file.json::y", + "dvc_rev": "v1", + "dvc_filename": "file.json", + "dvc_field": "y", }, { - VERSION_FIELD: { - "revision": "v1", - "filename": "file.json", - "field": "y", - }, "x": 2, "y": 2, + REVISION_FIELD: "v1::file.json::y", + "dvc_id": "v1::file.json::y", + "dvc_rev": "v1", + "dvc_filename": "file.json", + "dvc_field": "y", }, ] assert renderers[0].properties == { diff --git a/tests/unit/render/test_vega_converter.py b/tests/unit/render/test_vega_converter.py index b68ca97624..5dd08d5ab1 100644 --- a/tests/unit/render/test_vega_converter.py +++ b/tests/unit/render/test_vega_converter.py @@ -3,7 +3,7 @@ import pytest from dvc.exceptions import DvcException -from dvc.render import VERSION_FIELD +from dvc.render import REVISION_FIELD from dvc.render.converter.vega import FieldNotFoundError, VegaConverter, _lists @@ -34,20 +34,20 @@ def test_finding_lists(dictionary, expected_result): { "v": 1, "step": 0, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { "v": 2, "step": 1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, ], {"x": "step", "y": "v", "x_label": "step", "y_label": "v"}, @@ -60,20 +60,20 @@ def test_finding_lists(dictionary, expected_result): { "v": 1, "v2": 0.1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "v": 2, "v2": 0.2, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, ], {"x": "v", "y": "v2", "x_label": "v", "y_label": "v2"}, @@ -98,20 +98,20 @@ def test_finding_lists(dictionary, expected_result): { "v": 1, "v2": 0.1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "v": 2, "v2": 0.2, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, ], {"x": "v", "y": "v2", "x_label": "x", "y_label": "y"}, @@ -122,48 +122,48 @@ def test_finding_lists(dictionary, expected_result): {"y": {"f": ["v", "v2"]}}, [ { - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, "dvc_inferred_y_value": 1, "v": 1, "v2": 0.1, "step": 0, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, "dvc_inferred_y_value": 2, "v": 2, "v2": 0.2, "step": 1, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, "dvc_inferred_y_value": 0.1, "v2": 0.1, "v": 1, "step": 0, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, "v": 2, "v2": 0.2, "dvc_inferred_y_value": 0.2, "step": 1, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, ], { @@ -188,44 +188,44 @@ def test_finding_lists(dictionary, expected_result): "z": 3, "v": 1, "step": 0, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { "dvc_inferred_y_value": 2, "z": 4, "step": 1, "v": 2, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { "dvc_inferred_y_value": 3, "v": 1, "z": 3, "step": 0, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "z", - }, + REVISION_FIELD: "r::f::z", + "dvc_id": "r::f::z", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "z", }, { "dvc_inferred_y_value": 4, "v": 2, "z": 4, "step": 1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "z", - }, + REVISION_FIELD: "r::f::z", + "dvc_id": "r::f::z", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "z", }, ], { @@ -246,29 +246,29 @@ def test_finding_lists(dictionary, expected_result): { "v": 1, "v2": 0.1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "v": 2, "v2": 0.2, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "v": 3, "v2": 0.3, - VERSION_FIELD: { - "revision": "r", - "filename": "f2", - "field": "v2", - }, + REVISION_FIELD: "r::f2::v2", + "dvc_id": "r::f2::v2", + "dvc_rev": "r", + "dvc_filename": "f2", + "dvc_field": "v2", }, ], {"x": "v", "y": "v2", "x_label": "v", "y_label": "v2"}, @@ -283,44 +283,44 @@ def test_finding_lists(dictionary, expected_result): "v": 1, "v2": 0.1, "step": 0, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { "dvc_inferred_y_value": 2, "v": 2, "v2": 0.2, "step": 1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v", - }, + REVISION_FIELD: "r::f::v", + "dvc_id": "r::f::v", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v", }, { "dvc_inferred_y_value": 0.1, "v": 1, "v2": 0.1, "step": 0, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "dvc_inferred_y_value": 0.2, "v": 2, "v2": 0.2, "step": 1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, ], { @@ -343,32 +343,32 @@ def test_finding_lists(dictionary, expected_result): "v": 1, "v2": 0.1, "v3": 0.01, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "dvc_inferred_y_value": 0.01, "v": 1, "v2": 0.1, "v3": 0.01, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v3", - }, + REVISION_FIELD: "r::f::v3", + "dvc_id": "r::f::v3", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v3", }, { "dvc_inferred_y_value": 0.1, "v": 1, "v2": 0.1, - VERSION_FIELD: { - "revision": "r", - "filename": "f2", - "field": "v2", - }, + REVISION_FIELD: "r::f2::v2", + "dvc_id": "r::f2::v2", + "dvc_rev": "r", + "dvc_filename": "f2", + "dvc_field": "v2", }, ], { @@ -389,20 +389,20 @@ def test_finding_lists(dictionary, expected_result): { "v": 1, "v2": 0.1, - VERSION_FIELD: { - "revision": "r", - "filename": "f", - "field": "v2", - }, + REVISION_FIELD: "r::f::v2", + "dvc_id": "r::f::v2", + "dvc_rev": "r", + "dvc_filename": "f", + "dvc_field": "v2", }, { "v": 1, "v2": 0.1, - VERSION_FIELD: { - "revision": "r", - "filename": "f2", - "field": "v2", - }, + REVISION_FIELD: "r::f2::v2", + "dvc_id": "r::f2::v2", + "dvc_rev": "r", + "dvc_filename": "f2", + "dvc_field": "v2", }, ], {