diff --git a/PKG-INFO b/PKG-INFO index 7082d8cc50e208c7367bc7b38eda7780765f8f2d..caf33326e64936b810d5b70475ed0a9fe100199b 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: swh.model -Version: 0.8.0 +Version: 0.9.0 Summary: Software Heritage data model Home-page: https://forge.softwareheritage.org/diffusion/DMOD/ Author: Software Heritage developers diff --git a/swh.model.egg-info/PKG-INFO b/swh.model.egg-info/PKG-INFO index 7082d8cc50e208c7367bc7b38eda7780765f8f2d..caf33326e64936b810d5b70475ed0a9fe100199b 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.8.0 +Version: 0.9.0 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 d3b3971b810008c304a626c321b8f52b20bcc4aa..6c49c5f968c9e8ab51df599b6bd659b38c6acf80 100644 --- a/swh/model/model.py +++ b/swh/model/model.py @@ -8,7 +8,6 @@ import datetime from enum import Enum from hashlib import sha256 from typing import Any, Dict, Iterable, Optional, Tuple, TypeVar, Union -import warnings import attr from attrs_strict import type_validator @@ -854,26 +853,10 @@ 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): +class RawExtrinsicMetadata(BaseModel): + object_type: Final = "raw_extrinsic_metadata" + # target object type = attr.ib(type=MetadataTargetType, validator=type_validator()) target = attr.ib(type=Union[str, SWHID], validator=type_validator()) @@ -1041,7 +1024,7 @@ class _RawExtrinsicMetadata(BaseModel): def to_dict(self): d = super().to_dict() - d["id"] = d["target"] + context_keys = ( "origin", "visit", @@ -1058,14 +1041,12 @@ class _RawExtrinsicMetadata(BaseModel): @classmethod def from_dict(cls, d): - d = mangle_raw_extrinsic_metadata_dict( - { - **d, - "type": MetadataTargetType(d["type"]), - "authority": MetadataAuthority.from_dict(d["authority"]), - "fetcher": MetadataFetcher.from_dict(d["fetcher"]), - } - ) + d = { + **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"]) @@ -1087,18 +1068,3 @@ class _RawExtrinsicMetadata(BaseModel): "fetcher_name": self.fetcher.name, "fetcher_version": self.fetcher.version, } - - -class RawExtrinsicMetadata(_RawExtrinsicMetadata): - object_type: Final = "raw_extrinsic_metadata" - - def __init__(self, **kwargs): - super().__init__(**mangle_raw_extrinsic_metadata_dict(kwargs)) - - @property - def id(self): - warnings.warn( - "RawExtrinsicMetadata `id` attribute is now called `target`", - DeprecationWarning, - ) - return self.target diff --git a/swh/model/tests/test_model.py b/swh/model/tests/test_model.py index 07afe2152ce15ddbfa1a38d71baf8a48cfaa641f..902f0df631db57782dfe123ce8c40668b89f2bd0 100644 --- a/swh/model/tests/test_model.py +++ b/swh/model/tests/test_model.py @@ -807,9 +807,7 @@ def test_metadata_valid(): ) -@pytest.mark.filterwarnings("ignore: RawExtrinsicMetadata `id`") -@pytest.mark.parametrize("argument_name", ["id", "target"]) -def test_metadata_to_dict(argument_name): +def test_metadata_to_dict(): """Checks valid RawExtrinsicMetadata objects don't raise an error.""" common_fields = { @@ -821,25 +819,23 @@ def test_metadata_to_dict(argument_name): } m = RawExtrinsicMetadata( - type=MetadataTargetType.ORIGIN, - **{argument_name: _origin_url, **_common_metadata_fields}, + type=MetadataTargetType.ORIGIN, target=_origin_url, **_common_metadata_fields, ) assert m.to_dict() == { "type": "origin", "target": _origin_url, - "id": _origin_url, **common_fields, } assert RawExtrinsicMetadata.from_dict(m.to_dict()) == m m = RawExtrinsicMetadata( type=MetadataTargetType.CONTENT, - **{argument_name: _content_swhid, **_common_metadata_fields}, + target=_content_swhid, + **_common_metadata_fields, ) assert m.to_dict() == { "type": "content", "target": "swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2", - "id": "swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2", **common_fields, } assert RawExtrinsicMetadata.from_dict(m.to_dict()) == m @@ -1227,18 +1223,3 @@ def test_metadata_validate_context_directory(): ), **_common_metadata_fields, ) - - -def test_metadata_id_attr(): - """Checks the legacy id attribute on RawExtrinsicMetadata objects""" - # Simplest case - meta = RawExtrinsicMetadata( - type=MetadataTargetType.ORIGIN, target=_origin_url, **_common_metadata_fields - ) - - assert meta is not None - - with pytest.deprecated_call() as messages: - assert meta.id == _origin_url - - assert "RawExtrinsicMetadata `id`" in str(messages[0].message)