diff --git a/swh/loader/package/debian/loader.py b/swh/loader/package/debian/loader.py --- a/swh/loader/package/debian/loader.py +++ b/swh/loader/package/debian/loader.py @@ -3,7 +3,6 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -import email.utils import logging from os import path import re @@ -265,20 +264,8 @@ - fullname: the actual uid input """ - logger.debug("uid: %s", uid) - ret = { - "name": "", - "email": "", - "fullname": uid, - } - - name, mail = email.utils.parseaddr(uid) - if name and email: - ret["name"] = name - ret["email"] = mail - else: - ret["name"] = uid - return ret + person = Person.from_fullname(uid.encode("utf-8")) + return {k: v.decode("utf-8") for k, v in person.to_dict().items() if v is not None} def prepare_person(person: Mapping[str, str]) -> Person: diff --git a/swh/loader/package/npm/loader.py b/swh/loader/package/npm/loader.py --- a/swh/loader/package/npm/loader.py +++ b/swh/loader/package/npm/loader.py @@ -35,7 +35,7 @@ logger = logging.getLogger(__name__) -EMPTY_PERSON = Person(fullname=b"", name=None, email=None) +EMPTY_PERSON = Person.from_fullname(b"") EXTID_TYPE = "npm-archive-sha1" diff --git a/swh/loader/package/npm/tests/test_npm.py b/swh/loader/package/npm/tests/test_npm.py --- a/swh/loader/package/npm/tests/test_npm.py +++ b/swh/loader/package/npm/tests/test_npm.py @@ -212,8 +212,8 @@ }""" ) - assert extract_npm_package_author(package_json_no_authors) == Person( - fullname=b"", name=None, email=None + assert extract_npm_package_author(package_json_no_authors) == Person.from_fullname( + b"" ) diff --git a/swh/loader/package/opam/loader.py b/swh/loader/package/opam/loader.py --- a/swh/loader/package/opam/loader.py +++ b/swh/loader/package/opam/loader.py @@ -217,11 +217,11 @@ authors_field = self.get_enclosed_single_line_field("authors:", version) fullname = b"" if authors_field is None else str.encode(authors_field) - author = Person(fullname=fullname, name=None, email=None) + author = Person.from_fullname(fullname) maintainer_field = self.get_enclosed_single_line_field("maintainer:", version) fullname = b"" if maintainer_field is None else str.encode(maintainer_field) - committer = Person(fullname=fullname, name=None, email=None) + committer = Person.from_fullname(fullname) with Popen(self._opam_show_args(version) + ["--raw"], stdout=PIPE) as proc: assert proc.stdout is not None diff --git a/swh/loader/package/opam/tests/test_opam.py b/swh/loader/package/opam/tests/test_opam.py --- a/swh/loader/package/opam/tests/test_opam.py +++ b/swh/loader/package/opam/tests/test_opam.py @@ -140,9 +140,7 @@ target=hash_to_bytes("00412ee5bc601deb462e55addd1004715116785e"), target_type=ModelObjectType.DIRECTORY, synthetic=True, - author=Person( - fullname=b"OCamlPro ", name=None, email=None - ), + author=Person.from_fullname(b"OCamlPro "), date=None, id=release_id, ) @@ -248,12 +246,8 @@ expected_package_info = OpamPackageInfo( url="https://github.com/OCamlPro/ocb/archive/0.1.tar.gz", filename=None, - author=Person( - fullname=b"OCamlPro ", name=None, email=None - ), - committer=Person( - fullname=b"OCamlPro ", name=None, email=None - ), + author=Person.from_fullname(b"OCamlPro "), + committer=Person.from_fullname(b"OCamlPro "), version="0.1", directory_extrinsic_metadata=[ RawExtrinsicMetadataCore( diff --git a/swh/loader/package/utils.py b/swh/loader/package/utils.py --- a/swh/loader/package/utils.py +++ b/swh/loader/package/utils.py @@ -26,7 +26,7 @@ DOWNLOAD_HASHES = set(["sha1", "sha256", "length"]) -EMPTY_AUTHOR = Person(fullname=b"", name=None, email=None,) +EMPTY_AUTHOR = Person.from_fullname(b"") def api_info(url: str, **extra_params) -> bytes: