aeat.domain.manuals package¶
Public facade for the AEAT Manual práctico handbook corpus.
This package exposes the strict manual schema (Manual,
Chapter, Section, Paragraph, Rule,
ManualCasillaReference), handbook identifiers (ManualId,
ManualPart), file-backed loaders, rule queries, verification reports,
and manifest-backed raw-PDF fetch results for the annual Manual práctico de
Renta and Manual práctico de IVA handbooks.
Manual records are public authority corpus data, not operator bucket state.
Source PDFs are represented by FetchedManualPart manifests; structured
rules carry LLMProvenance, source pointers, casilla/legal references,
and human review fields before they can pass the manual verification gate.
Registry definitions, calculation grounding, and user-facing handbook lookup
consume these records as evidence, while live AEAT access and any persisted
operator workflow remain outside this domain surface.
Callers outside this subpackage import exclusively from
domain.manuals and must not reach into private modules such as
domain.manuals._schema, domain.manuals._loader,
domain.manuals._verify, domain.manuals._fetch, or
domain.manuals._ids.
Registry corpus services project these records into local operator reports and
cross-check ManualCasillaReference rows with the same
domain.calculations.registry.ValidatedRegistryAuthority used by
runtime registry workflows. Registry source catalogues cite manual PDFs as
domain.calculations.registry.SourceReference entries and validate
the cited structure through this loader before treating the corpus as official
source guidance.
See also
application.registryRead-only application services for listing, showing, and verifying manual corpus material against registry authority.
domain.calculations.registryRegistry legal/source catalogue that consumes manual PDF references as filing-grounding evidence.
core.resourcesResource boundary that exposes the packaged manual catalogue without turning it into mutable operator bucket state.
Examples
>>> from aeat.domain.manuals import (
... ManualId, ManualPart, fetch_manual_part, load_manual,
... )
>>> result = fetch_manual_part(
... manual_id=ManualId.RENTA,
... year=2025,
... part=ManualPart.PARTE_1,
... )
>>> manual = load_manual(ManualId.RENTA, 2025, ManualPart.PARTE_1)
Submodules¶
- aeat.domain.manuals._errors module
- aeat.domain.manuals._fetch module
- aeat.domain.manuals._ids module
- aeat.domain.manuals._loader module
- aeat.domain.manuals._rule_id module
- aeat.domain.manuals._schema module
- aeat.domain.manuals._verify module