diff --git a/PKG-INFO b/PKG-INFO index b9d73f8d1b8d9f22f1bd325773ba8307092ab76a..6d30a917c19afba7f5bbdf82b9f05c362db5f9c1 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: swh.model -Version: 0.7.2 +Version: 0.7.3 Summary: Software Heritage data model Home-page: https://forge.softwareheritage.org/diffusion/DMOD/ Author: Software Heritage developers diff --git a/debian/changelog b/debian/changelog index cb5d4d888d853a86d849c1179a6fc7a700e740ec..63de62eed567aecd9b747f0be5da628dba25a7ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,11 @@ -swh-model (0.7.2-1~swh1~bpo10+1) buster-swh; urgency=medium +swh-model (0.7.3-1~swh1) unstable-swh; urgency=medium - * Rebuild for buster-swh + * New upstream release 0.7.3 - (tagged by Nicolas Dandrimont + <nicolas@dandrimont.eu> on 2020-10-27 16:03:58 +0100) + * Upstream changes: - Release swh.model v0.7.3 - Reduce the + amount of DeprecationWarnings for RawExtrinsicMetadata - -- Software Heritage autobuilder (on jenkins-debian1) <jenkins@jenkins-debian1.internal.softwareheritage.org> Tue, 27 Oct 2020 09:43:02 +0000 + -- Software Heritage autobuilder (on jenkins-debian1) <jenkins@jenkins-debian1.internal.softwareheritage.org> Tue, 27 Oct 2020 15:06:50 +0000 swh-model (0.7.2-1~swh1) unstable-swh; urgency=medium diff --git a/swh.model.egg-info/PKG-INFO b/swh.model.egg-info/PKG-INFO index b9d73f8d1b8d9f22f1bd325773ba8307092ab76a..6d30a917c19afba7f5bbdf82b9f05c362db5f9c1 100644 --- a/swh.model.egg-info/PKG-INFO +++ b/swh.model.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: swh.model -Version: 0.7.2 +Version: 0.7.3 Summary: Software Heritage data model Home-page: https://forge.softwareheritage.org/diffusion/DMOD/ Author: Software Heritage developers diff --git a/swh/model/model.py b/swh/model/model.py index 1df94630f19b7ad6b199fb07c373639e270b578f..d3b3971b810008c304a626c321b8f52b20bcc4aa 100644 --- a/swh/model/model.py +++ b/swh/model/model.py @@ -854,6 +854,24 @@ class MetadataTargetType(Enum): ORIGIN = "origin" +def mangle_raw_extrinsic_metadata_dict(d: Dict[str, Any]) -> Dict[str, Any]: + """Rename the raw_extrinsic_metadata `id` field to `target`, throwing a + DeprecationWarning if appropriate""" + if "id" in d: + target = d.pop("id") + if d.get("target") is None: + warnings.warn( + "RawExtrinsicMetadata `id` attribute is now called `target`", + DeprecationWarning, + ) + d["target"] = target + elif d["target"] != target: + raise ValueError( + "Different values for `id` and `target` in RawExtrinsicMetadata" + ) + return d + + @attr.s(frozen=True) class _RawExtrinsicMetadata(BaseModel): # target object @@ -1040,20 +1058,14 @@ class _RawExtrinsicMetadata(BaseModel): @classmethod def from_dict(cls, d): - d = { - **d, - "type": MetadataTargetType(d["type"]), - "authority": MetadataAuthority.from_dict(d["authority"]), - "fetcher": MetadataFetcher.from_dict(d["fetcher"]), - } - - if "id" in d: - warnings.warn( - "RawExtrinsicMetadata `id` attribute is now called `target`", - DeprecationWarning, - ) - # Backwards-compatibility for id -> target migration - d["target"] = d.pop("id") + d = mangle_raw_extrinsic_metadata_dict( + { + **d, + "type": MetadataTargetType(d["type"]), + "authority": MetadataAuthority.from_dict(d["authority"]), + "fetcher": MetadataFetcher.from_dict(d["fetcher"]), + } + ) if d["type"] != MetadataTargetType.ORIGIN: d["target"] = parse_swhid(d["target"]) @@ -1081,14 +1093,7 @@ class RawExtrinsicMetadata(_RawExtrinsicMetadata): object_type: Final = "raw_extrinsic_metadata" def __init__(self, **kwargs): - if "id" in kwargs: - warnings.warn( - "RawExtrinsicMetadata `id` attribute is now called `target`", - DeprecationWarning, - ) - kwargs["target"] = kwargs.pop("id") - - super().__init__(**kwargs) + super().__init__(**mangle_raw_extrinsic_metadata_dict(kwargs)) @property def id(self):