Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/model.py
Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | ): | ||||
assert self.date is None or self.date.tzinfo is not None | assert self.date is None or self.date.tzinfo is not None | ||||
self.root = root | self.root = root | ||||
self._parents_ids = parents | self._parents_ids = parents | ||||
self._parents_entries: Optional[List[RevisionEntry]] = None | self._parents_entries: Optional[List[RevisionEntry]] = None | ||||
def retrieve_parents(self, archive: ArchiveInterface): | def retrieve_parents(self, archive: ArchiveInterface): | ||||
if self._parents_entries is None: | if self._parents_entries is None: | ||||
if self._parents_ids is None: | if self._parents_ids is None: | ||||
revision = list(archive.revision_get([self.id])) | self._parents_ids = archive.revision_get_parents(self.id) | ||||
if revision: | self._parents_entries = [RevisionEntry(id) for id in self._parents_ids] | ||||
self._parents_ids = revision[0].parents | |||||
else: | |||||
self._parents_ids = [] | |||||
self._parents_entries = [ | |||||
RevisionEntry( | |||||
id=rev.id, | |||||
root=rev.directory, | |||||
date=rev.date.to_datetime(), | |||||
parents=rev.parents, | |||||
) | |||||
for rev in archive.revision_get(self._parents_ids) | |||||
if rev.date is not None | |||||
] | |||||
@property | @property | ||||
def parents(self) -> Iterator["RevisionEntry"]: | def parents(self) -> Iterator["RevisionEntry"]: | ||||
if self._parents_entries is None: | if self._parents_entries is None: | ||||
raise RuntimeError( | raise RuntimeError( | ||||
"Parents of this node has not yet been retrieved. " | "Parents of this node has not yet been retrieved. " | ||||
"Please call retrieve_parents() before using this property." | "Please call retrieve_parents() before using this property." | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines |