def _get_stage_hash(stage): if not (stage.cmd and stage.deps and stage.outs): return None for dep in stage.deps: if not (dep.scheme == "local" and dep.def_path and dep.get_checksum()): return None for out in stage.outs: if out.scheme != "local" or not out.def_path or out.persist: return None return _get_cache_hash(to_single_stage_lockfile(stage), key=True)
def save(self, stage): cache_key = _get_stage_hash(stage) if not cache_key: return cache = to_single_stage_lockfile(stage) cache_value = _get_cache_hash(cache) if self._load_cache(cache_key, cache_value): return # sanity check COMPILED_LOCK_FILE_STAGE_SCHEMA(cache) path = self._get_cache_path(cache_key, cache_value) dpath = os.path.dirname(path) makedirs(dpath, exist_ok=True) dump_stage_file(path, cache)
def save(self, stage): cache_key = _get_stage_hash(stage) if not cache_key: return cache = to_single_stage_lockfile(stage) cache_value = _get_cache_hash(cache) existing_cache = self._load_cache(cache_key, cache_value) cache = existing_cache or cache for out in self._uncached_outs(stage, cache): out.commit() if existing_cache: return # sanity check COMPILED_LOCK_FILE_STAGE_SCHEMA(cache) path = self._get_cache_path(cache_key, cache_value) dpath = os.path.dirname(path) makedirs(dpath, exist_ok=True) dump_yaml(path, cache)