Source code for aeat.domain.modelos._calculation_repository
"""Domain-side calculation-revision catalogue port surface.This module owns the pure calculation-revision catalogue vocabulary: the:class:`CalculationRevisionPersistenceError` raised at the storage boundary, the:func:`upsert_calculation_revision` pure mutator, and the namespace /schema-version constants that name the persisted envelope contract. The concreteencrypted SQL repository lives in the persistence adapter:class:`~aeat.adapters.persistence.profile.modelos_calculation.CalculationRevisionCatalogueRepository`,behind the read-side:class:`~aeat.domain.modelos.CalculationRevisionCatalogueRepositoryProtocol`; thedomain package depends only on the structural port."""from__future__importannotationsfrom...core.loggingimportget_loggerfrom._calculation_revisionimportCalculationRevision,CalculationRevisionCataloguefrom._errorsimportModeloError_LOGGER=get_logger(__name__)_CALCULATION_NAMESPACE="aeat.domain.modelos.calculation_revisions"_CALCULATION_OBJECT_KEY="catalogue"_CALCULATION_CATALOGUE_VERSION=1_CALCULATION_PERSISTENCE_MESSAGE="errors.fail.fail_modelo_calculation_revision_persistence"
[docs]classCalculationRevisionPersistenceError(ModeloError):"""Raised when the calculation-revision catalogue cannot be persisted or loaded. This wraps storage-boundary failures from the persistence adapter's :class:`~aeat.adapters.persistence.profile.modelos_calculation.CalculationRevisionCatalogueRepository` while preserving translated recovery context for callers. """
[docs]defupsert_calculation_revision(catalogue:CalculationRevisionCatalogue,revision:CalculationRevision,)->CalculationRevisionCatalogue:"""Return a new :class:`CalculationRevisionCatalogue` with ``revision`` inserted or replaced. Args: catalogue: Source catalogue to update. revision: The :class:`CalculationRevision` to insert or replace. """mapping=dict(catalogue.revisions)mapping[revision.calculation_revision_id]=revisionreturnCalculationRevisionCatalogue(revisions=mapping)