cadrumo.application.modelo.selectors module

Calculation-revision selector policy for Modelo work units.

Revision selectors load persisted CalculationRevision rows and return a ModeloCalculationRevisionSelection for current, latest draft, latest verified, filed, or explicit-id picks.

Command-specific revision defaults stay here rather than in CLI modules: verification selects the current draft, filing selects the current verified-complete revision, and export prefers the current filed revision before falling back to an unambiguous verified-complete revision.

class ModeloCalculationRevisionSelector(*values)[source]

Bases: StrEnum

Closed selector set for calculation revisions under a work unit.

CURRENT
LATEST_DRAFT
LATEST_VERIFIED
FILED
EXPLICIT
exception ModeloCalculationRevisionSelectorError(message=None, *, context=None, translated_message=None)[source]

Bases: ModeloError

Base error for calculation-revision selector refusals.

Parameters:
  • message (str | None)

  • context (Mapping[str, object] | None)

  • translated_message (str | None)

Return type:

None

code
exception ModeloCalculationRevisionSelectorNotFoundError(message=None, *, context=None, translated_message=None)[source]

Bases: ModeloCalculationRevisionSelectorError

Raised when a requested calculation revision cannot be selected.

Parameters:
  • message (str | None)

  • context (Mapping[str, object] | None)

  • translated_message (str | None)

Return type:

None

code
exception ModeloCalculationRevisionSelectorStateError(message=None, *, context=None, translated_message=None)[source]

Bases: ModeloCalculationRevisionSelectorError

Raised when a command-specific selector finds a revision in the wrong state.

Parameters:
  • message (str | None)

  • context (Mapping[str, object] | None)

  • translated_message (str | None)

Return type:

None

code
exception ModeloCalculationRevisionSelectorAmbiguousError(candidates)[source]

Bases: ModeloCalculationRevisionSelectorError

Raised when a default revision selector would have to guess.

Parameters:

candidates (tuple[ModeloCalculationRevisionCandidate, ...])

Return type:

None

code
class ModeloCalculationRevisionCandidate(**data)[source]

Bases: BaseModel

Human-readable calculation revision metadata for selector guidance.

Parameters:

data (Any)

calculation_revision_id: CalculationRevisionId
short_calculation_revision_id: str
work_unit_id: WorkUnitId
state: CalculationRevisionState
created_at: str
updated_at: str
verified_at: str | None
filed_at: str | None
classmethod from_revision(revision)[source]

Project a CalculationRevision into a ModeloCalculationRevisionCandidate.

Return type:

ModeloCalculationRevisionCandidate

Parameters:

revision (CalculationRevision)

class ModeloCalculationRevisionSelection(**data)[source]

Bases: BaseModel

Resolved calculation revision selection under a work unit.

Parameters:

data (Any)

selector: ModeloCalculationRevisionSelector
work_unit_id: WorkUnitId
revision: CalculationRevision
candidates: tuple[ModeloCalculationRevisionCandidate, ...]
select_modelo_calculation_revision(work_unit, *, selector, calculation_revision_id=None, calculation_repository, operation)[source]

Select one persisted calculation revision as ModeloCalculationRevisionSelection.

EXPLICIT requires calculation_revision_id and verifies the revision belongs to the supplied WorkUnit. Non-explicit selectors resolve through the work unit’s current/filed pointers or by latest state, and refuse missing or mismatched state instead of falling back to another revision.

Return type:

ModeloCalculationRevisionSelection

Parameters:
resolve_modelo_calculation_revision_pick(work_unit, *, selector=ModeloCalculationRevisionSelector.CURRENT, calculation_revision_id=None, default_for=None, calculation_repository, operation)[source]

Resolve a command-specific ModeloCalculationRevisionSelection pick under one work unit.

This is the application selector policy surface for commands that accept a natural work target plus a revision selector. It preserves the exact calculation-revision id escape hatch, while keeping command defaults explicit: verification consumes the current draft, filing consumes the current verified-complete revision, and export prefers filed/current verified revisions according to select_exportable_revision.

Return type:

ModeloCalculationRevisionSelection

Parameters:
select_current_verified_revision(work_unit, *, calculation_repository, operation)[source]

Select the current verified-complete revision for filing.

Returns a ModeloCalculationRevisionSelection.

Return type:

ModeloCalculationRevisionSelection

Parameters:
select_exportable_revision(work_unit, *, calculation_repository, operation)[source]

Select the default exportable ModeloCalculationRevisionSelection for a work unit.

Preference order: 1. current filed pointer, when it points to a current filed revision; 2. current calculation pointer, when it is verified-complete; 3. one unambiguous verified-complete revision, only when no current draft conflicts.

Return type:

ModeloCalculationRevisionSelection

Parameters: