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 concrete
encrypted SQL repository lives in the persistence adapter
:class:`~aeat.adapters.persistence.profile.modelos_calculation.CalculationRevisionCatalogueRepository`,
behind the read-side
:class:`~aeat.domain.modelos.CalculationRevisionCatalogueRepositoryProtocol`; the
domain package depends only on the structural port.
"""

from __future__ import annotations

from ...core.logging import get_logger
from ._calculation_revision import CalculationRevision, CalculationRevisionCatalogue
from ._errors import ModeloError

_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] class CalculationRevisionPersistenceError(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] def upsert_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] = revision return CalculationRevisionCatalogue(revisions=mapping)
__all__ = [ "CalculationRevisionPersistenceError", "upsert_calculation_revision", ]