Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/archive/loader.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import iso8601 | import iso8601 | ||||
import logging | import logging | ||||
from os import path | from os import path | ||||
from typing import Any, Dict, Generator, Mapping, Optional, Sequence, Tuple | from typing import Any, Dict, Generator, Mapping, Optional, Sequence, Tuple | ||||
from swh.loader.package.loader import PackageLoader | from swh.loader.package.loader import PackageLoader | ||||
from swh.loader.package.utils import release_name | from swh.loader.package.utils import release_name, artifact_identity | ||||
from swh.model.identifiers import normalize_timestamp | from swh.model.identifiers import normalize_timestamp | ||||
logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||
SWH_PERSON = { | SWH_PERSON = { | ||||
'name': b'Software Heritage', | 'name': b'Software Heritage', | ||||
'fullname': b'Software Heritage', | 'fullname': b'Software Heritage', | ||||
'email': b'robot@softwareheritage.org' | 'email': b'robot@softwareheritage.org' | ||||
▲ Show 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | def build_revision(self, a_metadata: Mapping[str, Any], | ||||
'intrinsic': {}, | 'intrinsic': {}, | ||||
'extrinsic': { | 'extrinsic': { | ||||
'provider': self.url, | 'provider': self.url, | ||||
'when': self.visit_date.isoformat(), | 'when': self.visit_date.isoformat(), | ||||
'raw': a_metadata, | 'raw': a_metadata, | ||||
}, | }, | ||||
}, | }, | ||||
} | } | ||||
def artifact_identity(d: Mapping[str, Any], | |||||
id_keys: Sequence[str]) -> Sequence[Any]: | |||||
"""Compute the primary key for a dict using the id_keys as primary key | |||||
composite. | |||||
Args: | |||||
d: A dict entry to compute the primary key on | |||||
id_keys: Sequence of keys to use as primary key | |||||
Returns: | |||||
The identity for that dict entry | |||||
""" | |||||
return [d.get(k) for k in id_keys] |