aeat.core.access_gate._errors module

Policy errors for the AEAT live-access gate.

All errors inherit from core.errors.AeatError so callers have a single root they can catch at integration boundaries.

LiveSubmitForbiddenError lives here (rather than in the adapters/outbound/aeat/export layer) because:

  1. The gate module (core/access_gate/) raises it, and core/ must remain independent from adapter implementations.

  2. The policy “live AEAT submission is permanently forbidden” is a foundational invariant, not an adapter implementation detail.

See also

core.access_gate.AeatAccessGate

Gate that raises these errors from live-read and live-write checks.

LiveSubmitForbiddenError

Permanent refusal raised by every attempted live AEAT write.

adapters.outbound.aeat.export._submitters

Empty adapter namespace kept free of remote submitter implementations.

exception AccessGateSubmissionError(message, *, translated_message=None)[source]

Bases: AeatError

Base class for live-write access-gate submission policy failures.

Variables:

translated_message – Optional core.i18n.Translatable payload carrying a user-facing version of the message.

Parameters:
  • message (str)

  • translated_message (str | None)

Return type:

None

code: ClassVar[ErrorCode]
exception AccessGateSubmissionPreflightError(message, *, translated_message=None)[source]

Bases: AccessGateSubmissionError

Raised when access-gate preflight rejects a write-shaped operation.

Parameters:
  • message (str)

  • translated_message (str | None)

Return type:

None

code: ClassVar[ErrorCode]
exception LiveSubmitForbiddenError(message='live AEAT submission is permanently forbidden; use produce -> verify -> export and upload the file yourself in the AEAT portal', *, translated_message='errors.locked.locked_access_gate_live_submit_forbidden')[source]

Bases: AccessGateSubmissionPreflightError

Raised when any caller attempts a permanently forbidden live AEAT write.

Parameters:
  • message (str)

  • translated_message (str | None)

Return type:

None

code: ClassVar[ErrorCode]
exception AeatLiveReadNotEnabledError(message=None, *, context=None, suggestion=None, translated_message=None)[source]

Bases: AeatError

Raised when pytest live-read access is required but the test gate is shut.

Emitted by core.access_gate.AeatAccessGate.require_live_read() during pytest execution when AEAT_LIVE_TESTS_ENABLED is not set to "1". Operator-facing live reads are controlled by auth/profile/read-only guards rather than this test opt-in variable.

Parameters:
  • message (str | None)

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

  • suggestion (str | None)

  • translated_message (str | None)

Return type:

None

code: ClassVar[ErrorCode]
exception AuthorizationManifestError(message=None, *, context=None, suggestion=None, translated_message=None)[source]

Bases: AeatError

Raised when the multi-year-renta authorization manifest is malformed.

Emitted by the authorization-manifest loader when an authorization.d/<modelo>.toml fragment cannot be parsed or declares an entry that violates the manifest invariants (a single-year enrollment claim, a duplicate modelo, an unknown field). An absent fragment directory is not an error: default-deny-by-absence yields an empty manifest that authorizes zero modelos.

Parameters:
  • message (str | None)

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

  • suggestion (str | None)

  • translated_message (str | None)

Return type:

None

code: ClassVar[ErrorCode]