diff --git a/swh/model/identifiers.py b/swh/model/identifiers.py --- a/swh/model/identifiers.py +++ b/swh/model/identifiers.py @@ -723,6 +723,9 @@ def check_object_id(self, attribute, value): validate_sha1(value) # can raise if invalid hash + def to_dict(self) -> Dict[str, Any]: + return attr.asdict(self) + def __str__(self) -> str: o = _object_type_map.get(self.object_type) assert o @@ -856,4 +859,4 @@ .. deprecated:: 0.3.8 Use :func:`swh.model.identifiers.parse_swhid` instead """ - return PersistentId(**attr.asdict(parse_swhid(persistent_id))) + return PersistentId(**parse_swhid(persistent_id).to_dict()) diff --git a/swh/model/tests/test_identifiers.py b/swh/model/tests/test_identifiers.py --- a/swh/model/tests/test_identifiers.py +++ b/swh/model/tests/test_identifiers.py @@ -915,6 +915,16 @@ ) actual_result = identifiers.parse_swhid(swhid) self.assertEqual(actual_result, expected_result) + self.assertEqual( + expected_result.to_dict(), + { + "namespace": "swh", + "scheme_version": _version, + "object_type": _type, + "object_id": _hash, + "metadata": _metadata, + }, + ) def test_parse_swhid_parsing_error(self): for swhid in [