aeat.application.review._filter module¶
Typed --filter KEY=VALUE parser for review commands.
The CLI routes every record-list command through --filter KEY=VALUE
flags. Representative invocations:
aeat app ledger review --filter status=pending --filter period=1T --filter year=2026aeat app ledger review --filter issue=gap --filter period=1T --filter year=2026aeat app ledger review --filter issue=duplicate --filter period=1T --filter year=2026aeat app ledger review --filter import=import_003 --filter period=1T --filter year=2026invoice evidence and modelo work-unit queue filters
modelo status filters by period and modelo code
The CLI parses the raw argv strings; this module provides the typed
substrate that turns them into FilterClause records and binds
them to per-scope LedgerReviewFilterSpec /
InvoiceReviewFilterSpec / DeclaracionReviewFilterSpec
records. Each spec validates its own closed key catalogue, validates
each value against per-key rules (calendar period parsing, closed enum
values, identifier-shape checks), and exposes typed accessors the
orchestration layer reads instead of re-parsing strings at every
ReviewQueue / aggregator call site.
The specs are parsing surfaces; the actual filtering logic lives in
aeat.application.review.ReviewQueue and the per-scope
adapters.
- class FilterClause(**data)[source]¶
Bases:
BaseModelOne typed
KEY=VALUEclause from a--filterflag.- Variables:
key – Lowercase, dotted-or-flat identifier (
status,period,issue,import,kind).value – Trimmed value string. Per-key validation lives on the owning
LedgerReviewFilterSpec/InvoiceReviewFilterSpec/DeclaracionReviewFilterSpec; this record is the generic substrate.
- Parameters:
- key: str¶
- value: str¶
- parse_filter_clause(raw)[source]¶
Parse one raw
KEY=VALUEstring into aFilterClause.- Parameters:
raw (
str) – The rawKEY=VALUEtoken supplied by the operator.- Return type:
- Returns:
A validated
FilterClausewith the parsed key and value.- Raises:
FilterParseError – When the token is missing
=, has an empty key, or has an empty value. The error carries the offending raw token verbatim.
- parse_filter_clauses(raw)[source]¶
Parse a sequence of
KEY=VALUEstrings into typedFilterClauseinstances.The order of input strings is preserved in the output tuple so the CLI can render a deterministic diagnostic.
- Return type:
- Parameters:
- class LedgerReviewFilterKey(*values)[source]¶
Bases:
StrEnumClosed catalogue of
aeat app ledger review --filterkeys.- Variables:
STATUS – Lifecycle state of the row (
pending/reviewed/skipped).PERIOD – Filing period the row falls into, as a bare AEAT token:
1T..``4T`` (quarters),0A(annual), or01..``12`` (months). The filing year travels as a separateyear=clause — there is no year-qualified combined token.YEAR – Filing year (
YYYY) supplying the year context the bareperiod=token needs; required wheneverperiod=is present.ISSUE – Filters to rows that carry an import-time diagnostic (
gap/duplicate/original-file/parser).IMPORT – Filters to rows from a specific import-batch id.
CLASSIFICATION – Filters to rows with a given business classification (
business/personal/mixed/not_yet_processed…).DIRECTION – Filters to rows by money-flow direction —
incoming(ingreso),outgoing(gasto), orinternal_transfer.
- STATUS¶
- PERIOD¶
- YEAR¶
- ISSUE¶
- IMPORT¶
- CLASSIFICATION¶
- TEXT¶
- DIRECTION¶
- class LedgerReviewStatus(*values)[source]¶
Bases:
StrEnumClosed catalogue of ledger
status=filter values.- PENDING¶
- REVIEWED¶
- SKIPPED¶
- EXCLUDED¶
- class InvoiceReviewFilterKey(*values)[source]¶
Bases:
StrEnumClosed catalogue of invoice-evidence review filter keys.
- Variables:
STATUS – Lifecycle state of the invoice (
pending/reviewed/matched).KIND – Issued-vs-received discriminator. Values come from
aeat.domain.invoices.InvoiceKind.
- STATUS¶
- KIND¶
- class InvoiceReviewStatus(*values)[source]¶
Bases:
StrEnumClosed catalogue of invoice
status=filter values.- PENDING¶
- REVIEWED¶
- MATCHED¶
- PAID¶
- class DeclaracionReviewFilterKey(*values)[source]¶
Bases:
StrEnumClosed catalogue of modelo status filter keys.
- Variables:
STATUS – Lifecycle state of the draft (
pending/approved/stale/submitted/acknowledged).
- STATUS¶
- class DeclaracionReviewStatus(*values)[source]¶
Bases:
StrEnumClosed catalogue of declaration
status=filter values.- PENDING¶
- APPROVED¶
- STALE¶
- SUBMITTED¶
- ACKNOWLEDGED¶
- class LedgerReviewFilterSpec(**data)[source]¶
Bases:
BaseModelTyped
aeat app ledger review --filterspec.- Variables:
clauses – The raw clauses, in input order. Empty when the command is invoked without
--filter.status – Resolved
LedgerReviewStatusifstatus=was provided.period – Resolved filing period when
period=andyear=were provided. The raw clauses remain available onclauses; consumers receive the core value object directly.issue – Resolved
LedgerImportDiagnosticKindifissue=was provided.import_id – Raw import-batch id if
import=was provided. Identifier-shape validation lives on theaeat.application.transactionsimport surface.
- Parameters:
clauses (tuple[FilterClause, ...])
status (LedgerReviewStatus | None)
period (Period | None)
issue (LedgerImportDiagnosticKind | None)
import_id (str | None)
classification (BusinessClassification | None)
text (str | None)
direction (TransactionDirection | None)
- clauses: tuple[FilterClause, ...]¶
- status: LedgerReviewStatus | None¶
- period: Period | None¶
- issue: LedgerImportDiagnosticKind | None¶
- import_id: str | None¶
- classification: BusinessClassification | None¶
- text: str | None¶
- direction: TransactionDirection | None¶
- classmethod from_strings(raw)[source]¶
Parse
--filterarguments into a typedLedgerReviewFilterSpec.- Return type:
- Parameters:
- class InvoiceReviewFilterSpec(**data)[source]¶
Bases:
BaseModelTyped invoice-evidence review filter spec.
- Variables:
clauses – Raw clauses in input order.
status – Resolved
InvoiceReviewStatus.kind – Resolved
aeat.domain.invoices.InvoiceKind(issued/received).
- Parameters:
clauses (tuple[FilterClause, ...])
status (InvoiceReviewStatus | None)
kind (InvoiceKind | None)
- clauses: tuple[FilterClause, ...]¶
- status: InvoiceReviewStatus | None¶
- kind: InvoiceKind | None¶
- classmethod from_strings(raw)[source]¶
Parse
--filterarguments into a typed invoice spec.Returns an
InvoiceReviewFilterSpecwith filter fields populated from the parsedkey=valueclause strings.- Return type:
- Parameters:
- class DeclaracionReviewFilterSpec(**data)[source]¶
Bases:
BaseModelTyped modelo status filter spec.
- Variables:
clauses – Raw clauses in input order.
status – Resolved
DeclaracionReviewStatus.
- Parameters:
clauses (tuple[FilterClause, ...])
status (DeclaracionReviewStatus | None)
- clauses: tuple[FilterClause, ...]¶
- status: DeclaracionReviewStatus | None¶
- classmethod from_strings(raw)[source]¶
Parse
--filterarguments into a typedDeclaracionReviewFilterSpec.- Return type:
- Parameters: