diff --git a/dvc/stage/__init__.py b/dvc/stage/__init__.py index 0728827e9..866203001 100644 --- a/dvc/stage/__init__.py +++ b/dvc/stage/__init__.py @@ -493,7 +493,11 @@ class Stage(params.StageParams): ret.append("changed checksum") def already_cached(self): - return self.deps_cached() and self.outs_cached() + return ( + not self.changed_stage() + and self.deps_cached() + and self.outs_cached() + ) def deps_cached(self): return all(not dep.changed() for dep in self.deps) diff --git a/dvc/stage/imports.py b/dvc/stage/imports.py index 49703c206..96a626e35 100644 --- a/dvc/stage/imports.py +++ b/dvc/stage/imports.py @@ -23,7 +23,7 @@ def sync_import(stage, dry=False, force=False): if dry: return - if not force and not stage.changed_stage() and stage.already_cached(): + if not force and stage.already_cached(): stage.outs[0].checkout() else: stage.deps[0].download(stage.outs[0]) diff --git a/dvc/stage/run.py b/dvc/stage/run.py index 590863656..53bab38d2 100644 --- a/dvc/stage/run.py +++ b/dvc/stage/run.py @@ -82,7 +82,6 @@ def _is_cached(stage): cached = ( not stage.is_callback and not stage.always_changed - and not stage.changed_stage() and stage.already_cached() ) if cached: