From 0547a516e6b1d197c8a748b8b4d1fb4bacf3ab79 Mon Sep 17 00:00:00 2001
From: Antoine Lambert <antoine.lambert@inria.fr>
Date: Wed, 8 Jul 2020 16:18:40 +0200
Subject: [PATCH] identifiers: Add to_dict method to SWHID class

---
 swh/model/identifiers.py            |  5 ++++-
 swh/model/tests/test_identifiers.py | 10 ++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/swh/model/identifiers.py b/swh/model/identifiers.py
index 372bc7c5..e1cf0dfe 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 c03b9eff..5acbd2d3 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 [
-- 
GitLab