""" Errors ====== """ from typing import Optional class GeoIP2Error(RuntimeError): """There was a generic error in GeoIP2. This class represents a generic error. It extends :py:exc:`RuntimeError` and does not add any additional attributes. """ class AddressNotFoundError(GeoIP2Error): """The address you were looking up was not found.""" class AuthenticationError(GeoIP2Error): """There was a problem authenticating the request.""" class HTTPError(GeoIP2Error): """There was an error when making your HTTP request. This class represents an HTTP transport error. It extends :py:exc:`GeoIP2Error` and adds attributes of its own. :ivar http_status: The HTTP status code returned :ivar uri: The URI queried :ivar decoded_content: The decoded response content """ def __init__( self, message: str, http_status: Optional[int] = None, uri: Optional[str] = None, decoded_content: Optional[str] = None, ) -> None: super().__init__(message) self.http_status = http_status self.uri = uri self.decoded_content = decoded_content class InvalidRequestError(GeoIP2Error): """The request was invalid.""" class OutOfQueriesError(GeoIP2Error): """Your account is out of funds for the service queried.""" class PermissionRequiredError(GeoIP2Error): """Your account does not have permission to access this service."""