Source code for staty.exceptions

# Copyright 2016 Osvaldo Santana Neto <staty@osantana.me>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# noinspection PyPep8Naming
from socket import gaierror as SocketNameResolutionError, herror as SocketHostError, timeout as SocketTimeout

from .status_map import status


# Base Exceptions & Mixins
# ========================


[docs]class StatyBaseException(Exception): pass
[docs]class RecoverableErrorMixin(Exception): pass
[docs]class UnrecoverableErrorMixin(Exception): pass
[docs]class RegistrationException(StatyBaseException): pass
[docs]class MissingHandlerException(StatyBaseException): pass
[docs]class HTTPError(StatyBaseException): def __init__(self, *args, response=None, request=None): self.response = response self.request = request if self.request is None and self.response is not None: self.request = getattr(self.response, "request", None) super().__init__(*args) @property def status(self): return status.exceptions[self.__class__]
# Connection Errors # =================
[docs]class ConnectionException(StatyBaseException): pass
[docs]class ConnectionTimeoutException(SocketTimeout, ConnectionException, RecoverableErrorMixin): pass
[docs]class NameResolutionException(SocketNameResolutionError, ConnectionException, RecoverableErrorMixin): pass
[docs]class HostAddressException(SocketHostError, ConnectionException, RecoverableErrorMixin): pass
[docs]class SSLException(ConnectionException, RecoverableErrorMixin): pass
[docs]class ProxyException(ConnectionException, RecoverableErrorMixin): pass
# HTTP Client Errors # ==================
[docs]class ClientErrorException(HTTPError): pass
[docs]class RecoverableClientErrorException(ClientErrorException, RecoverableErrorMixin): pass
[docs]class UnrecoverableClientErrorException(ClientErrorException, UnrecoverableErrorMixin): pass
[docs]class PreconditionRequiredException(UnrecoverableClientErrorException): pass
[docs]class TooManyRequestsException(RecoverableClientErrorException): pass
[docs]class BadRequestException(UnrecoverableClientErrorException): pass
[docs]class UnauthorizedException(UnrecoverableClientErrorException): pass
[docs]class PaymentRequiredException(UnrecoverableClientErrorException): pass
[docs]class ForbiddenException(UnrecoverableClientErrorException): pass
[docs]class NotFoundException(UnrecoverableClientErrorException): pass
[docs]class MethodNotAllowedException(UnrecoverableClientErrorException): pass
[docs]class NotAcceptableException(UnrecoverableClientErrorException): pass
[docs]class ProxyAuthenticationRequiredException(UnrecoverableClientErrorException): pass
[docs]class RequestTimeoutException(RecoverableClientErrorException): pass
[docs]class ConflictException(UnrecoverableClientErrorException): pass
[docs]class GoneException(UnrecoverableClientErrorException): pass
[docs]class LengthRequiredException(UnrecoverableClientErrorException): pass
[docs]class PreconditionFailedException(UnrecoverableClientErrorException): pass
[docs]class PayloadTooLargeException(UnrecoverableClientErrorException): pass
[docs]class URITooLongException(UnrecoverableClientErrorException): pass
[docs]class UnsupportedMediaTypeException(UnrecoverableClientErrorException): pass
[docs]class RangeNotSatisfiableException(UnrecoverableClientErrorException): pass
[docs]class ExpectationFailedException(UnrecoverableClientErrorException): pass
[docs]class IAmATeapotException(UnrecoverableClientErrorException): pass
[docs]class MisdirectedRequestException(UnrecoverableClientErrorException): pass
[docs]class UnprocessableEntityException(UnrecoverableClientErrorException): pass
[docs]class LockedException(UnrecoverableClientErrorException): pass
[docs]class FailedDependencyException(UnrecoverableClientErrorException): pass
[docs]class UpgradeRequiredException(UnrecoverableClientErrorException): pass
[docs]class UnavailableForLegalReasonsException(UnrecoverableClientErrorException): pass
[docs]class RequestHeaderFieldsTooLargeException(UnrecoverableClientErrorException): pass
[docs]class MethodFailureException(UnrecoverableClientErrorException): pass
[docs]class BlockedByWindowsParentalControlsException(UnrecoverableClientErrorException): pass
[docs]class InvalidTokenException(UnrecoverableClientErrorException): pass
[docs]class TokenRequiredException(UnrecoverableClientErrorException): pass
[docs]class RequestHasBeenForbiddenByAntivirusException(UnrecoverableClientErrorException): pass
[docs]class LoginTimeoutException(RecoverableClientErrorException): pass
[docs]class RetryWithException(RecoverableClientErrorException): pass
[docs]class SSLCertificateErrorException(UnrecoverableClientErrorException): pass
[docs]class SSLCertificateRequiredException(UnrecoverableClientErrorException): pass
[docs]class HTTPRequestSentToHTTPSPortException(UnrecoverableClientErrorException): pass
[docs]class NoResponseException(UnrecoverableClientErrorException): pass
[docs]class ClientClosedRequestException(RecoverableClientErrorException): pass
# HTTP Server Errors # ==================
[docs]class ServerErrorException(HTTPError, RecoverableErrorMixin): pass
[docs]class InternalServerErrorException(ServerErrorException): pass
[docs]class NotImplementedException(ServerErrorException): pass
[docs]class BadGatewayException(ServerErrorException): pass
[docs]class ServiceUnavailableException(ServerErrorException): pass
[docs]class GatewayTimeoutException(ServerErrorException): pass
[docs]class HTTPVersionNotSupportedException(ServerErrorException): pass
[docs]class VariantAlsoNegotiatesException(ServerErrorException): pass
[docs]class InsufficientStorageException(ServerErrorException): pass
[docs]class LoopDetectedException(ServerErrorException): pass
[docs]class NotExtendedException(ServerErrorException): pass
[docs]class NetworkAuthenticationRequiredException(ServerErrorException): pass
[docs]class BandwidthLimitExceededException(ServerErrorException): pass
[docs]class SiteIsFrozenException(ServerErrorException): pass
[docs]class InvalidSSLCertificateException(ServerErrorException): pass
[docs]class SSLHandshakeFailedException(ServerErrorException): pass
[docs]class ATimeoutOccurredException(ServerErrorException): pass
[docs]class OriginIsUnreachableException(ServerErrorException): pass
[docs]class ConnectionTimedOutException(ServerErrorException): pass
[docs]class WebServerIsDownException(ServerErrorException): pass
[docs]class UnknownErrorException(ServerErrorException): pass