Changeset 3bad43e in flexoentity
- Timestamp:
- 10/26/25 18:19:40 (3 months ago)
- Branches:
- master
- Children:
- a3227e7
- Parents:
- e198832
- Files:
-
- 2 edited
-
flexoentity/flexo_entity.py (modified) (6 diffs)
-
tests/test_persistance_integrity.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
flexoentity/flexo_entity.py
re198832 r3bad43e 95 95 state: EntityState 96 96 flexo_id: Optional[FlexOID] = field(default=None) 97 signature: str = field(default_factory=str)97 fingerprint: str = field(default_factory=str) 98 98 origin: Optional[str] = field(default=None) 99 99 … … 152 152 1) 153 153 seed = canonical_seed(self.text_seed) 154 self. signature= hashlib.blake2s(seed.encode("utf-8"), digest_size=8).hexdigest().upper()154 self.fingerprint = hashlib.blake2s(seed.encode("utf-8"), digest_size=8).hexdigest().upper() 155 155 156 156 def __str__(self): 157 157 return ( 158 158 f"{self.etype.name}({self.flexo_id}, {self.state.name}, " 159 f" sig={self.signature}..., v{self.version})"159 f"fingerprint={self.fingerprint}..., v{self.version})" 160 160 ) 161 161 def to_dict(self): … … 165 165 "state": self.state.name, 166 166 "flexo_id": str(self.flexo_id), 167 " signature": self.signature,167 "fingerprint": self.fingerprint, 168 168 "origin": self.origin, 169 169 } … … 185 185 ) 186 186 obj.flexo_id = FlexOID.from_string(data["flexo_id"]) 187 obj. signature = data.get("signature", "")187 obj.fingerprint = data.get("fingerprint", "") 188 188 obj.origin = data.get("origin") 189 189 return obj … … 213 213 EntityState.PUBLISHED, 214 214 ) 215 def _ update_signature(self) -> str:216 """Always recompute the entity's content signature."""215 def _compute_fingerprint(self) -> str: 216 """Always recompute the entity's content fingerprint.""" 217 217 seed = self.canonical_seed() 218 218 return hashlib.blake2s(seed.encode("utf-8"), digest_size=8).hexdigest().upper() 219 219 220 220 def _update_fingerprint(self) -> bool: 221 """Update FlexOID if the content signaturechanged."""222 new_ sig = self._update_signature()223 if new_ sig != self.signature:224 self. signature = new_sig221 """Update FlexOID if the content fingerprint changed.""" 222 new_fp = self._compute_fingerprint() 223 if new_fp != self.fingerprint: 224 self.fingerprint = new_fp 225 225 self.flexo_id = FlexOID.safe_generate(self.domain_code(), 226 226 self.etype.short(), … … 354 354 @staticmethod 355 355 def verify_integrity(entity) -> bool: 356 """Verify that an entity’s content signaturematches its actual content."""357 expected_ sig= hashlib.blake2s(356 """Verify that an entity’s content fingerprint matches its actual content.""" 357 expected_fp = hashlib.blake2s( 358 358 canonical_seed(entity.text_seed).encode("utf-8"), digest_size=8 359 359 ).hexdigest().upper() 360 return expected_ sig == entity.signature360 return expected_fp == entity.fingerprint 361 361 362 362 def allowed_transitions(self) -> list[str]: -
tests/test_persistance_integrity.py
re198832 r3bad43e 43 43 44 44 # Metadata should be preserved exactly 45 assert approved_question. signature == loaded.signature45 assert approved_question.fingerprint == loaded.fingerprint 46 46 assert approved_question.flexo_id == loaded.flexo_id 47 47 assert loaded.state == approved_question.state
Note:
See TracChangeset
for help on using the changeset viewer.
