Source code for autumn.error
from typing import Any, List
from typing_extensions import Self
__all__ = ("AutumnError", "AutumnValidationError")
[docs]
class AutumnError(Exception):
"""
Base exception for all Autumn errors.
Attributes
----------
message: str
The error message.
code: str
The error code.
"""
def __init__(self, message: str, code: str):
self.message = message
self.code = code
if not hasattr(self, "__notes__"):
self.__notes__: List[str] = []
def __str__(self):
return f"{self.code}: {self.message}"
def __repr__(self):
notes = "\n".join(self.__notes__)
return f"{self.__class__.__name__}({self.message}, {self.code}){notes}"
[docs]
def add_note(self, note: str):
self.__notes__.append(note)
[docs]
class AutumnValidationError(AutumnError):
"""
Exception raised when a validation error occurs.
This is raised when the API returns a response that isn't recognized by the library.
Attributes
----------
message: str
The error message.
code: str
The error code.
"""
def __init__(self, message: str, code: str):
super().__init__(message, code)
[docs]
class AutumnHTTPError(AutumnError):
"""
Exception raised when an HTTP error occurs.
Attributes
----------
message: str
The error message. This can be an empty string.
code: str
The error code.
status_code: int
The HTTP status code.
"""
def __init__(self, message: str, code: str, status_code: int):
super().__init__(message, code)
self.status_code = status_code
self.body = ""
def __str__(self):
return f"{self.code!r}: {self.message!r} (HTTP {self.status_code})"
def __repr__(self):
return f"{self.__class__.__name__}({self.message}, {self.code}, {self.status_code})\n{self.body}"
[docs]
def attach_body(self, body: Any) -> Self:
self.body = body
return self