Skip to content

Commit 7e2520c

Browse files
authored
Cleanup debug log messages when loading stages (#5125)
* Cleanup log messages when loading stages 1. Simplified callback stage debug message 2. Reduced no lock entry message to trace If lockfile does not have some entry, it will simply complain that lockfile is not uptodate once. If there is no lockfile or empty lockfile, it will complain that lockfile not found. 3. Annoying parametrization related wdir-interpolated debug message removed. * Update dvc/stage/__init__.py * black
1 parent 723477e commit 7e2520c

File tree

3 files changed

+20
-13
lines changed

3 files changed

+20
-13
lines changed

dvc/parsing/__init__.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,6 @@ def resolve_stage(self, skip_checks=False):
246246
definition = deepcopy(self.definition)
247247

248248
wdir = self._resolve_wdir(context, name, definition.get(WDIR_KWD))
249-
if self.wdir != wdir:
250-
logger.debug(
251-
"Stage %s has different wdir than dvc.yaml file", name
252-
)
253-
254249
vars_ = definition.pop(VARS_KWD, [])
255250
# FIXME: Should `vars` be templatized?
256251
check_interpolations(vars_, f"{self.where}.{name}.vars", self.relpath)

dvc/stage/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,7 @@ def changed_deps(self):
257257

258258
if self.is_callback:
259259
logger.debug(
260-
'%s is a "callback" stage '
261-
"(has a command and no dependencies) and thus always "
262-
"considered as changed.",
263-
self,
260+
"%s has a command but no dependencies", self.addressing
264261
)
265262
return True
266263

dvc/stage/loader.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from copy import deepcopy
44
from itertools import chain
55

6-
from funcy import cached_property, get_in, lcat, project
6+
from funcy import cached_property, get_in, lcat, once, project
77

88
from dvc import dependency, output
99
from dvc.hash_info import HashInfo
@@ -24,13 +24,19 @@ def __init__(self, dvcfile, data, lockfile_data=None):
2424
self.data = data or {}
2525
self.stages_data = self.data.get("stages", {})
2626
self.repo = self.dvcfile.repo
27-
self.lockfile_data = lockfile_data or {}
27+
self._lockfile_data = lockfile_data or {}
2828

2929
@cached_property
3030
def resolver(self):
3131
wdir = PathInfo(self.dvcfile.path).parent
3232
return DataResolver(self.repo, wdir, self.data)
3333

34+
@cached_property
35+
def lockfile_data(self):
36+
if not self._lockfile_data:
37+
logger.debug("Lockfile for '%s' not found", self.dvcfile.relpath)
38+
return self._lockfile_data
39+
3440
@staticmethod
3541
def fill_from_lock(stage, lock_data=None):
3642
"""Fill values for params, checksums for outs and deps from lock."""
@@ -88,6 +94,14 @@ def load_stage(cls, dvcfile, name, stage_data, lock_data=None):
8894
cls.fill_from_lock(stage, lock_data)
8995
return stage
9096

97+
@once
98+
def lockfile_needs_update(self):
99+
# if lockfile does not have all of the entries that dvc.yaml says it
100+
# should have, provide a debug message once
101+
# pylint: disable=protected-access
102+
lockfile = self.dvcfile._lockfile.relpath
103+
logger.debug("Lockfile '%s' needs to be updated.", lockfile)
104+
91105
def __getitem__(self, name):
92106
if not name:
93107
raise StageNameUnspecified(self.dvcfile)
@@ -97,8 +111,9 @@ def __getitem__(self, name):
97111
except EntryNotFound:
98112
raise StageNotFound(self.dvcfile, name)
99113

100-
if not self.lockfile_data.get(name):
101-
logger.debug(
114+
if self.lockfile_data and name not in self.lockfile_data:
115+
self.lockfile_needs_update()
116+
logger.trace( # type: ignore[attr-defined]
102117
"No lock entry found for '%s:%s'", self.dvcfile.relpath, name,
103118
)
104119

0 commit comments

Comments
 (0)