index/out: add out.get_entry()

This commit is contained in:
Peter Rowlands
2022-10-19 17:12:16 +03:00
committed by Ruslan Kuprieiev
parent 36f6f29ac8
commit b594337a69
2 changed files with 21 additions and 17 deletions
+18
View File
@@ -26,6 +26,7 @@ from dvc_data.hashfile.hash_info import HashInfo
from dvc_data.hashfile.istextfile import istextfile
from dvc_data.hashfile.meta import Meta
from dvc_data.hashfile.transfer import transfer as otransfer
from dvc_data.index import DataIndexEntry
from dvc_objects.errors import ObjectFormatError
from .annotations import ANNOTATION_FIELDS, ANNOTATION_SCHEMA, Annotation
@@ -514,6 +515,23 @@ class Output:
key = self.fs.path.parts(no_drive)[1:]
return workspace, key
def get_entry(self) -> "DataIndexEntry":
from dvc.config import NoRemoteError
try:
remote = self.repo.cloud.get_remote_odb(self.remote)
except NoRemoteError:
remote = None
return DataIndexEntry(
meta=self.meta,
obj=self.obj,
hash_info=self.hash_info,
odb=self.odb,
cache=self.odb,
remote=remote,
)
def changed_checksum(self):
return self.hash_info != self.get_hash()
+3 -17
View File
@@ -228,8 +228,7 @@ class Index:
def data(self) -> "Dict[str, DataIndex]":
from collections import defaultdict
from dvc.config import NoRemoteError
from dvc_data.index import DataIndex, DataIndexEntry
from dvc_data.index import DataIndex
by_workspace: dict = defaultdict(DataIndex)
@@ -241,29 +240,16 @@ class Index:
continue
workspace, key = out.index_key
try:
remote = self.repo.cloud.get_remote_odb(out.remote)
except NoRemoteError:
remote = None
data_index = by_workspace[workspace]
if out.files:
out.obj = out.get_obj()
entry = DataIndexEntry(
meta=out.meta,
obj=out.obj,
hash_info=out.hash_info,
odb=out.odb,
cache=out.odb,
remote=remote,
)
entry = out.get_entry()
if out.stage.is_import and not out.stage.is_repo_import:
entry.fs = out.stage.deps[0].fs
entry.path = out.stage.deps[0].fs_path
entry.cache = out.odb
entry.meta = out.stage.deps[0].meta
data_index[key] = entry
return dict(by_workspace)