Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F7163699
D4307.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
D4307.diff
View Options
diff --git a/swh/model/model.py b/swh/model/model.py
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -112,16 +112,19 @@
"""Mixin to automatically compute object identifier hash when
the associated model is instantiated."""
- @staticmethod
@abstractmethod
- def compute_hash(object_dict):
+ def compute_hash(self) -> bytes:
"""Derived model classes must implement this to compute
- the object hash from its dict representation."""
+ the object hash.
+
+ This method is called by the object initialization if the `id`
+ attribute is set to an empty value.
+ """
pass
def __attrs_post_init__(self):
if not self.id:
- obj_id = hash_to_bytes(self.compute_hash(self.to_dict()))
+ obj_id = self.compute_hash()
object.__setattr__(self, "id", obj_id)
def unique_key(self) -> KeyType:
@@ -390,9 +393,8 @@
)
id = attr.ib(type=Sha1Git, validator=type_validator(), default=b"")
- @staticmethod
- def compute_hash(object_dict):
- return snapshot_identifier(object_dict)
+ def compute_hash(self) -> bytes:
+ return hash_to_bytes(snapshot_identifier(self.to_dict()))
@classmethod
def from_dict(cls, d):
@@ -427,9 +429,8 @@
)
id = attr.ib(type=Sha1Git, validator=type_validator(), default=b"")
- @staticmethod
- def compute_hash(object_dict):
- return release_identifier(object_dict)
+ def compute_hash(self) -> bytes:
+ return hash_to_bytes(release_identifier(self.to_dict()))
@author.validator
def check_author(self, attribute, value):
@@ -516,9 +517,8 @@
attr.validate(self)
object.__setattr__(self, "metadata", metadata)
- @staticmethod
- def compute_hash(object_dict):
- return revision_identifier(object_dict)
+ def compute_hash(self) -> bytes:
+ return hash_to_bytes(revision_identifier(self.to_dict()))
@classmethod
def from_dict(cls, d):
@@ -570,9 +570,8 @@
entries = attr.ib(type=Tuple[DirectoryEntry, ...], validator=type_validator())
id = attr.ib(type=Sha1Git, validator=type_validator(), default=b"")
- @staticmethod
- def compute_hash(object_dict):
- return directory_identifier(object_dict)
+ def compute_hash(self) -> bytes:
+ return hash_to_bytes(directory_identifier(self.to_dict()))
@classmethod
def from_dict(cls, d):
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jan 30, 1:32 PM (1 w, 12 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3219224
Attached To
D4307: Update the HashableObject interface to take the object itself
Event Timeline
Log In to Comment