Source code for cadrumo.domain.calculations.registry.identifier_evolutions
"""Authored retirement and replacement of identifier-keyed declarations across editions.A family whose members carry a stable, edition-free identifier inherits across editions:an unmentioned member is inherited, a restated member supersedes in place, and awithdrawal must be declared. This module is the declaration shape for that withdrawal,shared by every identifier-keyed family. A ``retired`` evolution ends the chain at thewithdrawing edition; a ``replaced`` evolution ends it and names the successor identifier.Omission is never a withdrawal."""from__future__importannotationsfromtypingimportAnnotated,LiteralfrompydanticimportField,model_validatorfrom....core.errors.hierarchyimportpydantic_validation_boundaryfrom.errorsimportRegistryValidationErrorfrom.idsimportRevisionIdfrom.schema_baseimportLegalRefs,RegistryModel,SourceRefs__all__=["IdentifierEvolution","ReplacedIdentifierEvolution","RetiredIdentifierEvolution",]DeclarationIdentifier=Annotated[str,Field(min_length=1,max_length=128)]FamilyName=Annotated[str,Field(min_length=1,max_length=64,pattern=r"^[a-z][a-z0-9_]*$")]
[docs]classRetiredIdentifierEvolution(RegistryModel):"""The declaration named by ``identifier`` is withdrawn from ``to_revision`` onward."""kind:Literal["retired"]="retired"family:FamilyNameidentifier:DeclarationIdentifierto_revision:RevisionIdlegal_refs:LegalRefssource_refs:SourceRefs
[docs]classReplacedIdentifierEvolution(RegistryModel):"""The declaration named by ``identifier`` is superseded by ``replaced_by`` from ``to_revision``."""kind:Literal["replaced"]="replaced"family:FamilyNameidentifier:DeclarationIdentifierreplaced_by:DeclarationIdentifierto_revision:RevisionIdlegal_refs:LegalRefssource_refs:SourceRefs@model_validator(mode="after")@pydantic_validation_boundarydef_validate_distinct_identifiers(self)->ReplacedIdentifierEvolution:ifself.identifier==self.replaced_by:raiseRegistryValidationError(f"identifier evolution {self.identifier!r} cannot be replaced by itself",)returnself
IdentifierEvolution=Annotated[RetiredIdentifierEvolution|ReplacedIdentifierEvolution,Field(discriminator="kind"),]"""Closed union of authored chain-ending statements for one identifier-keyed family."""