Page MenuHomeSoftware Heritage

D8350.diff
No OneTemporary

D8350.diff

diff --git a/swh/model/model.py b/swh/model/model.py
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -1564,6 +1564,12 @@
@classmethod
def from_dict(cls, d):
+ if "type" in d:
+ # Convert from old schema
+ type_ = d.pop("type")
+ if type_ == "origin":
+ d["target"] = str(Origin(d["target"]).swhid())
+
d = {
**d,
"target": ExtendedSWHID.from_string(d["target"]),
diff --git a/swh/model/tests/test_model.py b/swh/model/tests/test_model.py
--- a/swh/model/tests/test_model.py
+++ b/swh/model/tests/test_model.py
@@ -1401,7 +1401,7 @@
)
_origin_url = "https://forge.softwareheritage.org/source/swh-model.git"
_origin_swhid = ExtendedSWHID.from_string(
- "swh:1:ori:94a9ed024d3859793618152ea559a168bbcbb5e2"
+ "swh:1:ori:433b4f5612f0720ed51fa7aeaf43a3625870057b"
)
_dummy_qualifiers = {"origin": "https://example.com", "lines": "42"}
_common_metadata_fields = dict(
@@ -1428,6 +1428,41 @@
)
+def test_metadata_from_old_dict():
+ common_fields = {
+ "authority": {"type": "forge", "url": "https://forge.softwareheritage.org"},
+ "fetcher": {
+ "name": "test-fetcher",
+ "version": "0.0.1",
+ },
+ "discovery_date": _common_metadata_fields["discovery_date"],
+ "format": "json",
+ "metadata": b'{"origin": "https://example.com", "lines": "42"}',
+ }
+
+ m = RawExtrinsicMetadata(
+ target=_origin_swhid,
+ **_common_metadata_fields,
+ )
+ assert (
+ RawExtrinsicMetadata.from_dict(
+ {"id": m.id, "target": _origin_url, "type": "origin", **common_fields}
+ )
+ == m
+ )
+
+ m = RawExtrinsicMetadata(
+ target=_content_swhid,
+ **_common_metadata_fields,
+ )
+ assert (
+ RawExtrinsicMetadata.from_dict(
+ {"target": str(_content_swhid), "type": "content", **common_fields}
+ )
+ == m
+ )
+
+
def test_metadata_to_dict():
"""Checks valid RawExtrinsicMetadata objects don't raise an error."""
@@ -1448,7 +1483,7 @@
)
assert m.to_dict() == {
"target": str(_origin_swhid),
- "id": b"@j\xc9\x01\xbc\x1e#p*\xf3q9\xa7u\x97\x00\x14\x02xa",
+ "id": b"\xa3)q\x0f\xf7p\xc7\xb0\\O\xe8\x84\x83Z\xb0]\x81\xe9\x95\x13",
**common_fields,
}
assert RawExtrinsicMetadata.from_dict(m.to_dict()) == m

File Metadata

Mime Type
text/plain
Expires
Jul 3 2025, 8:02 AM (10 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3224668

Event Timeline