Changeset 9592936 in flexoentity
- Timestamp:
- 11/20/25 13:10:31 (8 weeks ago)
- Branches:
- master
- Children:
- b24d72e
- Parents:
- fd1913f
- Files:
-
- 4 edited
-
flexoentity/domain.py (modified) (1 diff)
-
flexoentity/domain_manager.py (modified) (1 diff)
-
flexoentity/flexo_entity.py (modified) (5 diffs)
-
tests/conftest.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
flexoentity/domain.py
rfd1913f r9592936 49 49 classification=data.get("classification", "UNCLASSIFIED"), 50 50 flexo_id=flexo_id, 51 _in_factory=True 51 52 ) 52 53 -
flexoentity/domain_manager.py
rfd1913f r9592936 73 73 entity_type=EntityType.DOMAIN.value, 74 74 state=EntityState.DRAFT.value, text=domain_id) 75 domain = Domain(flexo_id=flexo_id, **kwargs)75 domain = Domain(flexo_id=flexo_id, _in_factory=True, **kwargs) 76 76 return cls.register(domain) 77 77 -
flexoentity/flexo_entity.py
rfd1913f r9592936 155 155 I am the living, editable layer that connects identity with accountability. 156 156 """ 157 _in_factory: bool = field(default=False, repr=False) 157 158 subtype: str = "GENERIC" 158 159 flexo_id: Optional[FlexOID] = field(default=None) … … 161 162 owner_id: UUID = field(default=UUID(int=0)) 162 163 origin: Optional[str] = field(default=None) 163 164 164 165 def with_new_owner(self, new_owner: UUID): 165 166 """I return a clone of this entity with a different owner.""" … … 229 230 ) 230 231 231 obj = cls(flexo_id=flexo_id, **kwargs)232 obj = cls(flexo_id=flexo_id, _in_factory=True, **kwargs) 232 233 obj.fingerprint = obj._compute_fingerprint() 233 234 return obj … … 240 241 - Domain must always match flexo_id.domain. 241 242 """ 242 243 if not self._in_factory: 244 raise RuntimeError( 245 f"{self.__class__.__name__} must be created via with_domain_id() " 246 f"or from_dict(), not via direct construction." 247 ) 243 248 # Step 1: If flexo_id exists, restore canonical domain 244 249 if self.flexo_id: … … 252 257 raise ValueError( 253 258 f"{self.__class__.__name__} created without domain; " 254 f"use {self.__class__.__name__}.with_domain (domain=...) or pass domain explicitly."259 f"use {self.__class__.__name__}.with_domain_id(domain=...) or pass domain explicitly." 255 260 ) 256 261 -
tests/conftest.py
rfd1913f r9592936 4 4 from dataclasses import dataclass, field 5 5 from typing import List 6 from flexoentity import FlexOID, FlexoEntity, EntityType, EntityState, Domain 6 from flexoentity import FlexOID, FlexoEntity, EntityType, EntityState, Domain, DomainManager 7 7 8 8 @pytest.fixture … … 15 15 return FixedDate 16 16 17 @pytest.fixture(autouse=True) 18 def reset_domain_manager(): 19 DomainManager.clear() # You need to implement this 20 yield 21 DomainManager.clear() 22 23 @pytest.fixture(autouse=True) 24 def auto_domains(): 25 Domain.with_domain_id("GENERAL", fullname="General Domain") 26 Domain.with_domain_id("TEST", fullname="Test Domain") 17 27 18 28 @dataclass … … 46 56 if not getattr(self, "flexo_id", None): 47 57 self.flexo_id = FlexOID.safe_generate( 48 domain =self.domain_id,58 domain_id=self.domain_id, 49 59 entity_type=SingleChoiceQuestion.ENTITY_TYPE.value, # 'I' 50 estate=EntityState.DRAFT.value, # 'D'60 state=EntityState.DRAFT.value, # 'D' 51 61 text=self.text_seed or self.text, 52 62 version=1, … … 88 98 def sample_domain(): 89 99 domain_id = "PY_ARITHM" 90 flexo_id = FlexOID.safe_generate(domain_id=domain_id, 91 entity_type=EntityType.DOMAIN.value, 92 state=EntityState.DRAFT.value, text=domain_id) 93 return Domain(flexo_id=flexo_id, fullname="PYTHON_ARITHMETIC", 94 description="ALL ABOUT ARITHMETIC IN PYTHON") 100 return Domain.with_domain_id(domain_id=domain_id, 101 fullname="PYTHON_ARITHMETIC", 102 description="ALL ABOUT ARITHMETIC IN PYTHON") 95 103 96 104 @pytest.fixture 97 105 def sample_question(sample_domain): 98 flexo_id = FlexOID.safe_generate(domain_id=sample_domain.domain_id, 99 entity_type=EntityType.ITEM.value, 100 state=EntityState.DRAFT.value, 101 text="What is 2 + 2") 102 q = SingleChoiceQuestion(flexo_id=flexo_id, text="What is 2 + 2?", 103 options=[]) 106 q = SingleChoiceQuestion.with_domain_id(domain_id=sample_domain.domain_id, 107 text="What is 2 + 2?", 108 options=[]) 104 109 q._update_fingerprint() 105 110 return q
Note:
See TracChangeset
for help on using the changeset viewer.
