diff --git a/swh/model/identifiers.py b/swh/model/identifiers.py index 372bc7c5e560d42c2820ee0db359eb444ee4892f..e1cf0dfe3b80fe40f0df23beb3c493098f82c2fd 100644 --- a/swh/model/identifiers.py +++ b/swh/model/identifiers.py @@ -723,6 +723,9 @@ class SWHID: 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 @@ def parse_persistent_identifier(persistent_id: str) -> PersistentId: .. 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 index c03b9eff0e9ebebaac06994be8e94ee1e4431736..5acbd2d38c19466bda2c14b16595ac9d3d41cc0e 100644 --- a/swh/model/tests/test_identifiers.py +++ b/swh/model/tests/test_identifiers.py @@ -915,6 +915,16 @@ class SnapshotIdentifier(unittest.TestCase): ) 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 [