codekingpro/portable-devtools
115k
1import contextlib2import typing3 4ExceptionMapping = typing.Mapping[typing.Type[Exception], typing.Type[Exception]]5 6 7@contextlib.contextmanager8def map_exceptions(map: ExceptionMapping) -> typing.Iterator[None]:9 try:10 yield11 except Exception as exc: # noqa: PIE78612 for from_exc, to_exc in map.items():13 if isinstance(exc, from_exc):14 raise to_exc(exc) from exc15 raise # pragma: nocover16 17 18class ConnectionNotAvailable(Exception):19 pass20 21 22class ProxyError(Exception):23 pass24 25 26class UnsupportedProtocol(Exception):27 pass28 29 30class ProtocolError(Exception):31 pass32 33 34class RemoteProtocolError(ProtocolError):35 pass36 37 38class LocalProtocolError(ProtocolError):39 pass40 41 42# Timeout errors43 44 45class TimeoutException(Exception):46 pass47 48 49class PoolTimeout(TimeoutException):50 pass51 52 53class ConnectTimeout(TimeoutException):54 pass55 56 57class ReadTimeout(TimeoutException):58 pass59 60 61class WriteTimeout(TimeoutException):62 pass63 64 65# Network errors66 67 68class NetworkError(Exception):69 pass70 71 72class ConnectError(NetworkError):73 pass74 75 76class ReadError(NetworkError):77 pass78 79 80class WriteError(NetworkError):81 pass82 