"""Minimal fragment envelope shared by journal and service response surfaces."""from__future__importannotationsfromenumimportEnumfromtypingimportAnyfrompydanticimportConfigDictfromtangl.type_hintsimportIdentifier,UnstructuredDatafrom.recordimportRecord
[docs]classBaseFragment(Record):"""Record-based fragment envelope for journal/content payloads."""model_config=ConfigDict(extra="allow")fragment_type:str|Enum="content"content:Any=Noneorigin_id:Identifier|None=Nonedefhas_channel(self,name:str)->bool:returnf"channel:{name}"inself.tagsdefmodel_dump(self,**kwargs)->UnstructuredData:kwargs.setdefault("by_alias",True)kwargs.setdefault("exclude_none",True)data=super().model_dump(**kwargs)data["fragment_type"]=self.fragment_typereturndata