From 72a0f1a7f6ad059332d1f4d5a365d615b3ea54f0 Mon Sep 17 00:00:00 2001
From: Pierre-Yves David <pierre-yves.david@ens-lyon.org>
Date: Wed, 15 May 2024 14:04:42 +0200
Subject: [PATCH] model: rename ObjectType to ReleaseTargetType

ObjectType is far too generic and introduces confusion with
swhids.ObjectType. So we rename it to a clearer name.
---
 swh/model/git_objects.py | 12 ++++++------
 swh/model/model.py       | 14 ++++++++++----
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/swh/model/git_objects.py b/swh/model/git_objects.py
index 942b675c..4b31cbc4 100644
--- a/swh/model/git_objects.py
+++ b/swh/model/git_objects.py
@@ -381,14 +381,14 @@ def revision_git_object(revision: Union[Dict, model.Revision]) -> bytes:
     return format_git_object_from_headers("commit", headers, revision.message)
 
 
-def target_type_to_git(target_type: model.ObjectType) -> bytes:
+def target_type_to_git(target_type: model.ReleaseTargetType) -> bytes:
     """Convert a software heritage target type to a git object type"""
     return {
-        model.ObjectType.CONTENT: b"blob",
-        model.ObjectType.DIRECTORY: b"tree",
-        model.ObjectType.REVISION: b"commit",
-        model.ObjectType.RELEASE: b"tag",
-        model.ObjectType.SNAPSHOT: b"refs",
+        model.ReleaseTargetType.CONTENT: b"blob",
+        model.ReleaseTargetType.DIRECTORY: b"tree",
+        model.ReleaseTargetType.REVISION: b"commit",
+        model.ReleaseTargetType.RELEASE: b"tag",
+        model.ReleaseTargetType.SNAPSHOT: b"refs",
     }[target_type]
 
 
diff --git a/swh/model/model.py b/swh/model/model.py
index de36c2a6..a37300b7 100644
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -40,6 +40,7 @@ from attr._make import _AndValidator
 from attr.validators import and_
 from attrs_strict import AttributeTypeError
 import dateutil.parser
+from deprecated import deprecated
 import iso8601
 from typing_extensions import Final
 
@@ -981,7 +982,7 @@ class TargetType(Enum):
         return f"TargetType.{self.name}"
 
 
-class ObjectType(Enum):
+class ReleaseTargetType(Enum):
     """The type of content pointed to by a release. Usually a revision"""
 
     CONTENT = "content"
@@ -991,7 +992,12 @@ class ObjectType(Enum):
     SNAPSHOT = "snapshot"
 
     def __repr__(self):
-        return f"ObjectType.{self.name}"
+        return f"ReleaseTargetType.{self.name}"
+
+
+ObjectType = deprecated(version="v6.13.0", reason="Use model.ReleaseTargetType")(
+    ReleaseTargetType
+)
 
 
 @attr.s(frozen=True, slots=True, field_transformer=optimize_all_validators)
@@ -1072,7 +1078,7 @@ class Release(HashableObjectWithManifest, BaseModel):
     target = attr.ib(
         type=Optional[Sha1Git], validator=generic_type_validator, repr=hash_repr
     )
-    target_type = attr.ib(type=ObjectType, validator=generic_type_validator)
+    target_type = attr.ib(type=ReleaseTargetType, validator=generic_type_validator)
     synthetic = attr.ib(type=bool, validator=generic_type_validator)
     author = attr.ib(
         type=Optional[Person], validator=generic_type_validator, default=None
@@ -1115,7 +1121,7 @@ class Release(HashableObjectWithManifest, BaseModel):
             d["author"] = Person.from_dict(d["author"])
         if d.get("date"):
             d["date"] = TimestampWithTimezone.from_dict(d["date"])
-        return cls(target_type=ObjectType(d.pop("target_type")), **d)
+        return cls(target_type=ReleaseTargetType(d.pop("target_type")), **d)
 
     def swhid(self) -> CoreSWHID:
         """Returns a SWHID representing this object."""
-- 
GitLab