"""Application-level live AEAT read workflow errors."""from__future__importannotationsfromcollections.abcimportMappingfromenumimportStrEnumfromtypingimportTYPE_CHECKINGfrom...core.errorsimportAeatErrorifTYPE_CHECKING:from...adapters.outbound.aeat.authimportClaveMovilApprovalTimeoutErrorfrom...adapters.outbound.aeat.sedeimportSedeError
[docs]classLiveIvaAcquisitionFailureMode(StrEnum):"""Application-level IVA live acquisition failure modes."""AUTHENTICATED="authenticated"NO_CLAVE_PROMPT="no_clave_prompt"OPERATOR_TIMEOUT="operator_timeout"QR_REQUIRED="qr_required"CERTIFICATE_REQUIRED="certificate_required"WRONG_IDENTITY="wrong_identity"AEAT_403="aeat_403"DOM_DRIFT="dom_drift"PENDING_CLAVE_REQUEST="pending_clave_request"LIVE_NAVIGATION_FAILED="live_navigation_failed"UNKNOWN="unknown"
[docs]classLiveApplicationError(AeatError):"""Raised when live AEAT read orchestration fails."""
[docs]classLiveApplicationInputError(LiveApplicationError):"""Raised when a live AEAT read request is not executable."""
[docs]classLiveIvaSurfaceTimeoutError(LiveApplicationError):"""Raised when one live IVA read surface exceeds its orchestration timeout."""def__init__(self,message:str,*,surface:str,timeout_ms:int,progress_context:Mapping[str,object]|None=None,)->None:context:dict[str,object]={"surface":surface,"timeout_ms":timeout_ms}ifprogress_context:context["progress"]=dict(progress_context)super().__init__(message,context=context,translated_message="errors.error.error_application_live_iva_surface_timeout",)self.surface=surfaceself.timeout_ms=timeout_ms
[docs]defclassify_live_iva_acquisition_failure(exc:BaseException)->LiveIvaAcquisitionFailureMode:"""Map adapter exceptions to the live IVA acquisition result vocabulary. Returns a :class:`LiveIvaAcquisitionFailureMode` member identifying the failure category. """from...adapters.outbound.aeat.authimport(ClaveMovilApprovalTimeoutError,ClaveMovilConfigurationError,)from...adapters.outbound.aeat.sedeimportSedeErrorifisinstance(exc,LiveIvaSurfaceTimeoutError):returnLiveIvaAcquisitionFailureMode.LIVE_NAVIGATION_FAILEDifisinstance(exc,ClaveMovilApprovalTimeoutError):return_classify_clave_movil_timeout(exc)ifisinstance(exc,ClaveMovilConfigurationError):returnLiveIvaAcquisitionFailureMode.WRONG_IDENTITYifisinstance(exc,SedeError):return_classify_sede_error(exc)returnLiveIvaAcquisitionFailureMode.UNKNOWN