File size: 1,401 Bytes
483b7d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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"