diff --git a/swh/provenance/model.py b/swh/provenance/model.py --- a/swh/provenance/model.py +++ b/swh/provenance/model.py @@ -3,7 +3,7 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -from datetime import datetime +from datetime import datetime, timedelta, timezone from typing import Iterable, Iterator, List, Optional, Set from swh.core.utils import grouper @@ -81,20 +81,26 @@ def parents(self, archive: ArchiveInterface): if self._parents is None: - revision = archive.revision_get([self.id]) + revision = list(archive.revision_get([self.id])) if revision: - self._parents = list(revision)[0].parents + self._parents = revision[0].parents if self._parents and not self._nodes: - self._nodes = [ - RevisionEntry( - id=rev.id, - root=rev.directory, - date=rev.date, - parents=rev.parents, - ) - for rev in archive.revision_get(self._parents) - if rev - ] + for rev in archive.revision_get(self._parents): + if rev is not None and rev.date is not None: + date = datetime.fromtimestamp( + rev.date.timestamp.seconds, + timezone(timedelta(minutes=rev.date.offset)), + ) + self._nodes.append( + RevisionEntry( + id=rev.id, + root=rev.directory, + date=date.replace( + microsecond=rev.date.timestamp.microseconds + ), + parents=rev.parents, + ) + ) yield from self._nodes def __str__(self):