From 77f56090ffd3a28b4462123e268e4e3e65262da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Trifir=C3=B2?= Date: Tue, 30 Aug 2022 14:35:55 +0200 Subject: [PATCH] do not checkout partials imports on fetch --- dvc/repo/fetch.py | 10 +++++++++- dvc/stage/__init__.py | 9 +++------ dvc/stage/imports.py | 13 ++++--------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dvc/repo/fetch.py b/dvc/repo/fetch.py index 213e1efdb..6a7b712df 100644 --- a/dvc/repo/fetch.py +++ b/dvc/repo/fetch.py @@ -127,8 +127,16 @@ def _fetch_partial_imports(repo, targets, **kwargs): downloaded = 0 failed = 0 for stage in repo.partial_imports(targets, **kwargs): + dep = stage.deps[0] + out = stage.outs[0] try: - stage.run() + if dep.changed_checksum(): + raise DataSourceChanged(f"{stage} ({dep})") + + logger.info("Importing '%s' -> '%s'", dep, out) + out.transfer( + dep.def_path, jobs=kwargs.get("jobs"), odb=repo.odb.local + ) except DataSourceChanged as exc: logger.warning(f"{exc}") failed += 1 diff --git a/dvc/stage/__init__.py b/dvc/stage/__init__.py index 02e0cb103..85f686865 100644 --- a/dvc/stage/__init__.py +++ b/dvc/stage/__init__.py @@ -554,9 +554,8 @@ class Stage(params.StageParams): self.remove_outs(ignore_remove=False, force=False) if (not self.frozen and self.is_import) or self.is_partial_import: - jobs = kwargs.get("jobs", None) self._sync_import( - dry, force, jobs, no_download, check_changed=self.frozen + dry, force, kwargs.get("jobs", None), no_download ) elif not self.frozen and self.cmd: self._run_stage(dry, force, **kwargs) @@ -580,10 +579,8 @@ class Stage(params.StageParams): return run_stage(self, dry, force, **kwargs) @rwlocked(read=["deps"], write=["outs"]) - def _sync_import( - self, dry, force, jobs, no_download, check_changed: bool = False - ): - sync_import(self, dry, force, jobs, no_download, check_changed) + def _sync_import(self, dry, force, jobs, no_download): + sync_import(self, dry, force, jobs, no_download) @rwlocked(read=["outs"]) def _check_missing_outputs(self): diff --git a/dvc/stage/imports.py b/dvc/stage/imports.py index 3b999f6c1..ac1f28b7e 100644 --- a/dvc/stage/imports.py +++ b/dvc/stage/imports.py @@ -46,7 +46,6 @@ def sync_import( force=False, jobs=None, no_download=False, - check_changed=False, ): """Synchronize import's outs to the workspace.""" logger.info("Importing '%s' -> '%s'", stage.deps[0], stage.outs[0]) @@ -56,13 +55,9 @@ def sync_import( if not force and stage.already_cached(): stage.outs[0].checkout() else: - if check_changed: - old_hash_info = stage.deps[0].hash_info stage.save_deps() - if check_changed and not old_hash_info == stage.deps[0].hash_info: - from dvc.stage.exceptions import DataSourceChanged - - raise DataSourceChanged(f"{stage} ({stage.deps[0]})") - if not no_download: - stage.deps[0].download(stage.outs[0], jobs=jobs) + stage.deps[0].download( + stage.outs[0], + jobs=jobs, + )