Source code for cadrumo.domain.calculations.row_source_identity
"""Generic source identity attached to one row-binding coordinate."""from__future__importannotationsfromtypingimportAnnotatedfrompydanticimportBaseModel,Field,StringConstraints,field_validatorfrom...core.aggregationimportBindingSourceKindfrom...core.errors.hierarchyimportpydantic_validation_boundaryfrom...core.identity.digestimportContentDigestfrom...core.modelsimportSTRICT_FROZEN_HIDDEN_INPUT_CONFIGfrom.registry.idsimportBindingIdtypeRowBindingKey=tuple[BindingId,int]OpaqueSourceRowIdentity=Annotated[str,StringConstraints(min_length=1,max_length=256)]
[docs]classRowSourceIdentity(BaseModel):"""Opaque, fingerprinted identity of a source row. ``row_set_grouping`` retains the exact registry row-set selector grouping when a row identity originates from that coordinate. It is optional because not every row identity originates from a registry row-set selector. """model_config=STRICT_FROZEN_HIDDEN_INPUT_CONFIGsource_kind:BindingSourceKindsource_row_identity:OpaqueSourceRowIdentity=Field(repr=False)fingerprint:ContentDigestrow_set_grouping:str|None=Field(default=None,min_length=1,max_length=128,repr=False)@field_validator("source_kind",mode="before")@classmethod@pydantic_validation_boundarydef_coerce_known_source_kind(cls,value:object)->object:ifisinstance(value,str):try:returnBindingSourceKind(value)exceptValueError:returnvaluereturnvalue@field_validator("source_row_identity")@classmethod@pydantic_validation_boundarydef_identity_is_canonical(cls,value:str)->str:ifvalue!=value.strip()orany(ord(character)<32forcharacterinvalue):raiseValueError("row source identity is not canonical")returnvalue@field_validator("row_set_grouping")@classmethod@pydantic_validation_boundarydef_row_set_grouping_is_canonical(cls,value:str|None)->str|None:ifvalueisNone:returnNoneifvalue!=value.strip()orany(ord(character)<32forcharacterinvalue):raiseValueError("row set grouping is not canonical")returnvalue