adwitiyashukla's picture
deploy space
483b7d0
Raw History Blame Contribute Delete
1.4 kB
from __future__ import annotations
class SecRagError(Exception):
status_code: int = 500
code: str = "internal_error"
def __init__(self, message: str, *, detail: object | None = None) -> None:
super().__init__(message)
self.message = message
self.detail = detail
def to_dict(self) -> dict[str, object]:
payload: dict[str, object] = {"code": self.code, "message": self.message}
if self.detail is not None:
payload["detail"] = self.detail
return payload
class ConfigurationError(SecRagError):
status_code = 500
code = "configuration_error"
class ProviderError(SecRagError):
status_code = 502
code = "provider_error"
class AllProvidersFailedError(ProviderError):
code = "all_providers_failed"
class RateLimitError(ProviderError):
status_code = 429
code = "rate_limited"
class IngestionError(SecRagError):
status_code = 422
code = "ingestion_error"
class EdgarError(IngestionError):
code = "edgar_error"
class RetrievalError(SecRagError):
status_code = 500
code = "retrieval_error"
class IndexNotReadyError(RetrievalError):
status_code = 409
code = "index_not_ready"
class GuardrailTrippedError(SecRagError):
status_code = 200
code = "guardrail_tripped"
class EvaluationError(SecRagError):
status_code = 500
code = "evaluation_error"