diff --git a/swh/storage/validate.py b/swh/storage/validate.py --- a/swh/storage/validate.py +++ b/swh/storage/validate.py @@ -106,10 +106,18 @@ releases = [Release.from_dict(r) for r in releases] return self.storage.release_add(releases) - def snapshot_add(self, snapshots: Iterable[Dict]) -> Dict: - with convert_validation_exceptions(): - snapshots = [Snapshot.from_dict(s) for s in snapshots] - return self.storage.snapshot_add(snapshots) + def snapshot_add( + self, snapshots: Union[Iterable[Dict], Iterable[Snapshot]] + ) -> Dict: + snapshots_: List[Snapshot] = [] + for s in snapshots: + if isinstance(s, Dict): + with convert_validation_exceptions(): + snapshot = Snapshot.from_dict(s) + else: + snapshot = s + snapshots_.append(snapshot) + return self.storage.snapshot_add(snapshots_) def origin_visit_add(self, visits: Iterable[OriginVisit]) -> Iterable[OriginVisit]: return self.storage.origin_visit_add(visits)