from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .._models import Request
class HTTPError(Exception):
def __init__(self, message: str) -> None:
self.message = message
self._request: Request | None = None
super().__init__(self.message)
@property
def request(self) -> Request:
if self._request is None:
raise RuntimeError(
"The request instance has not been set on this exception."
)
return self._request
@request.setter
def request(self, request: Request) -> None:
self._request = request
def __repr__(self) -> str:
return f"{type(self).__name__}({self.message!r})"
class HTTPStatusError(HTTPError):
def __init__(
self,
message: str,
*,
request: Request | None = None,
response: object | None = None,
) -> None:
super().__init__(message)
self._request = request
self.response = response
def __repr__(self) -> str:
return (
f"{type(self).__name__}({self.message!r}, "
f"request={self.request!r}, response={self.response!r})"
)
class RequestError(HTTPError):
def __init__(
self, message: str, *, request: Request | None = None
) -> None:
super().__init__(message)
self._request = request
class TransportError(RequestError):
def __init__(
self, message: str, *, request: Request | None = None
) -> None:
super().__init__(message, request=request)
class TimeoutException(TransportError):
class ConnectTimeout(TimeoutException):
class ReadTimeout(TimeoutException):
class WriteTimeout(TimeoutException):
class PoolTimeout(TimeoutException):
class NetworkError(TransportError):
class CloseError(NetworkError):
class ConnectError(NetworkError):
class ReadError(NetworkError):
class WriteError(NetworkError):
class ProtocolError(TransportError):
class LocalProtocolError(ProtocolError):
class RemoteProtocolError(ProtocolError):
class ProxyError(TransportError):
class UnsupportedProtocol(TransportError):
class DecodingError(RequestError):
class TooManyRedirects(RequestError):
class StreamError(RuntimeError):
def __init__(self, *args: object) -> None:
super().__init__(*args)
class RequestNotRead(StreamError):
def __init__(self) -> None:
super().__init__()
class ResponseNotRead(StreamError):
def __init__(self) -> None:
super().__init__()
class StreamClosed(StreamError):
def __init__(self) -> None:
super().__init__()
class StreamConsumed(StreamError):
def __init__(self) -> None:
super().__init__()
class InvalidURL(Exception):
def __init__(self, message: str, **kwargs: object) -> None:
self.message = message if message is not None else ""
super().__init__(self.message)
def __repr__(self) -> str:
return f"{type(self).__name__}({self.message!r})"
class CookieConflict(Exception):
def __init__(self, message: str, **kwargs: object) -> None:
self.message = message if message is not None else ""
super().__init__(self.message)
def __repr__(self) -> str:
return f"{type(self).__name__}({self.message!r})"