libredte_lib_sdk.exceptions module

Excepciones del SDK de LibreDTE Lib.

exception libredte_lib_sdk.exceptions.LibreDteApiError(*, operation_id: str, status_code: int, title: str, detail: str = '', problem_type: str = 'about:blank', instance: str = '', extensions: dict[str, Any] | None = None)

Bases: LibreDteSdkError

La API de LibreDTE Lib respondió un error para una operación.

Envuelve el Problem Details (RFC 7807) que la API entrega en sus respuestas de error: type/title/detail/instance/extensions. php_class expone la clase de la excepción PHP real (si la API la informó en extensions.throwable.class), útil para distinguir errores de negocio (ej. DocumentException) de errores de infraestructura sin tener que parsear detail.

classmethod from_problem_details(*, operation_id: str, status_code: int, body: dict[str, Any]) LibreDteApiError

Construye la excepción a partir de un body Problem Details.

property php_class: str | None

Clase PHP real detrás del error, si la API la informó.

exception libredte_lib_sdk.exceptions.LibreDteConnectionError

Bases: LibreDteSdkError

No fue posible completar la conexión HTTP con la API.

exception libredte_lib_sdk.exceptions.LibreDteOperationNotFoundError(*, operation_id: str, status_code: int, title: str, detail: str = '', problem_type: str = 'about:blank', instance: str = '', extensions: dict[str, Any] | None = None)

Bases: LibreDteApiError

La operación llamada no existe en la instancia de la API consultada.

Se distingue de un LibreDteApiError genérico (parámetros inválidos, error de negocio, etc.) para permitir detectar en un solo except que la operación no está registrada en el ambiente configurado, sin parsear detail. Se reconoce por php_class (DerafuBackboneDispatcherExceptionOperationNotFoundException), no por el status HTTP: la API la informa con 500, igual que cualquier otro error de servidor.

exception libredte_lib_sdk.exceptions.LibreDteRateLimitError(*, operation_id: str, status_code: int = 429, title: str = 'Límite de solicitudes excedido.', detail: str = '', problem_type: str = 'about:blank', instance: str = '', extensions: dict[str, Any] | None = None, retry_after: float | None = None, limit: int | None = None, remaining: int | None = None)

Bases: LibreDteApiError

La API rechazó la llamada por exceso de solicitudes (HTTP 429).

retry_after trae el valor del header Retry-After en segundos (None si la API no lo informó). limit/remaining traen X-RateLimit-Limit/X-RateLimit-Remaining cuando la API los informa. No hay retry/backoff automático: quien llame decide si reintentar, y cuándo, con esta información.

exception libredte_lib_sdk.exceptions.LibreDteSdkError

Bases: Exception

Cualquier error propio de libredte_lib_sdk.