Files
SummaryDiscordBot/discord_bot/sdk/exceptions.py
2025-12-12 15:31:27 +00:00

58 lines
1.7 KiB
Python

"""Exception classes for Summarizer API errors."""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from httpx import Response
class SummarizerAPIError(Exception):
"""Base exception for Summarizer API errors."""
def __init__(self, message: str, status_code: int | None = None) -> None:
super().__init__(message)
self.message = message
self.status_code = status_code
def __str__(self) -> str:
if self.status_code:
return f"[{self.status_code}] {self.message}"
return self.message
class SummarizerConnectionError(SummarizerAPIError):
"""Raised when connection to the API fails."""
def __init__(self, message: str = "Failed to connect to Summarizer API") -> None:
super().__init__(message)
class SummarizerTimeoutError(SummarizerAPIError):
"""Raised when API request times out."""
def __init__(self, message: str = "Request to Summarizer API timed out") -> None:
super().__init__(message)
class SummarizerBadRequestError(SummarizerAPIError):
"""Raised for 400 Bad Request errors."""
def __init__(self, message: str, response: Response | None = None) -> None:
super().__init__(message, status_code=400)
self.response = response
class SummarizerServerError(SummarizerAPIError):
"""Raised for 5xx server errors."""
def __init__(self, message: str, status_code: int = 500) -> None:
super().__init__(message, status_code=status_code)
class SummarizerRateLimitError(SummarizerAPIError):
"""Raised when rate limit is exceeded."""
def __init__(self, message: str = "Rate limit exceeded") -> None:
super().__init__(message, status_code=429)