From 68b24307f96b5008a6284bf44fca4cc8b82f50a7 Mon Sep 17 00:00:00 2001 From: David de la Iglesia Castro Date: Tue, 27 Dec 2022 19:04:57 +0100 Subject: [PATCH] `post_live_metrics`: Pass `params` on `start` event. --- dvc/repo/experiments/queue/workspace.py | 12 ++++++---- dvc/repo/experiments/utils.py | 29 +++++++++++++++++++++++++ tests/func/experiments/test_utils.py | 1 + 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/dvc/repo/experiments/queue/workspace.py b/dvc/repo/experiments/queue/workspace.py index 7de537e9e..69c4fcc75 100644 --- a/dvc/repo/experiments/queue/workspace.py +++ b/dvc/repo/experiments/queue/workspace.py @@ -22,7 +22,7 @@ from ..executor.base import ( ) from ..executor.local import WorkspaceExecutor from ..refs import EXEC_BRANCH, WORKSPACE_STASH -from ..utils import get_exp_rwlock +from ..utils import get_exp_rwlock, to_studio_params from .base import BaseStashQueue, QueueDoneResult, QueueEntry, QueueGetResult if TYPE_CHECKING: @@ -104,10 +104,14 @@ class WorkspaceQueue(BaseStashQueue): exec_name = self._EXEC_NAME or entry.stash_rev infofile = self.get_infofile_path(exec_name) try: - post_live_metrics( - "start", executor.info.baseline_rev, executor.info.name, "dvc" - ) rev = entry.stash_rev + post_live_metrics( + "start", + executor.info.baseline_rev, + executor.info.name, + "dvc", + params=to_studio_params(self.repo.params.show()), + ) exec_result = executor.reproduce( info=executor.info, rev=rev, diff --git a/dvc/repo/experiments/utils.py b/dvc/repo/experiments/utils.py index b69078fd8..121e39387 100644 --- a/dvc/repo/experiments/utils.py +++ b/dvc/repo/experiments/utils.py @@ -310,3 +310,32 @@ def get_random_exp_name(scm, baseline_rev): exp_ref = ExpRefInfo(baseline_sha=baseline_rev, name=name) if not scm.get_ref(str(exp_ref)): return name + + +def to_studio_params(dvc_params): + """Convert from internal DVC format to Studio format. + + From: + + { + "workspace": { + "data": { + "params.yaml": { + "data": {"foo": 1} + } + } + } + } + + To: + + { + "params.yaml": {"foo": 1} + } + """ + result = {} + for rev_data in dvc_params.values(): + for file_name, file_data in rev_data["data"].items(): + result[file_name] = file_data["data"] + + return result diff --git a/tests/func/experiments/test_utils.py b/tests/func/experiments/test_utils.py index 76dc9df6a..7b75b87e0 100644 --- a/tests/func/experiments/test_utils.py +++ b/tests/func/experiments/test_utils.py @@ -53,6 +53,7 @@ def test_post_to_studio(tmp_dir, dvc, scm, exp_stage, mocker, monkeypatch): "repo_url": "STUDIO_REPO_URL", "baseline_sha": baseline_sha, "name": name, + "params": {"params.yaml": {"foo": 1}}, "client": "dvc", }