| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import contextlib
- import typing
- ExceptionMapping = typing.Mapping[typing.Type[Exception], typing.Type[Exception]]
- @contextlib.contextmanager
- def map_exceptions(map: ExceptionMapping) -> typing.Iterator[None]:
- try:
- yield
- except Exception as exc: # noqa: PIE786
- for from_exc, to_exc in map.items():
- if isinstance(exc, from_exc):
- raise to_exc(exc) from exc
- raise # pragma: nocover
- class ConnectionNotAvailable(Exception):
- pass
- class ProxyError(Exception):
- pass
- class UnsupportedProtocol(Exception):
- pass
- class ProtocolError(Exception):
- pass
- class RemoteProtocolError(ProtocolError):
- pass
- class LocalProtocolError(ProtocolError):
- pass
- # Timeout errors
- class TimeoutException(Exception):
- pass
- class PoolTimeout(TimeoutException):
- pass
- class ConnectTimeout(TimeoutException):
- pass
- class ReadTimeout(TimeoutException):
- pass
- class WriteTimeout(TimeoutException):
- pass
- # Network errors
- class NetworkError(Exception):
- pass
- class ConnectError(NetworkError):
- pass
- class ReadError(NetworkError):
- pass
- class WriteError(NetworkError):
- pass
|