staty - Python HTTP Status Library

Staty is a Python Library with complete information and error handling for HTTP response status codes.

Status Map

You can register a custom HTTP status code in staty’s global status map using the @status.register() decorator:

>>> from staty import status, base
>>> @status.register
... class MyCustomClientError(base.ClientError):
...     code = 494
...     message = "My Client Error"

You can reference to registered status as an attribute of status using status.HTTP_{CODE}_{CLASS_NAME_IN_CONSTANT_NAME_CASE}:

>>> from staty import status
>>> status.HTTP_494_MY_CUSTOM_CLIENT_ERROR == 494
True

You can reference an status code using it code as index:

>>> status[494] == status.HTTP_494_MY_CUSTOM_CLIENT_ERROR
True

Class Reference

class staty.status_map.HTTPStatusMap[source]

Bases: object

register(http_status_class)[source]

HTTP Status Codes

Module: staty.codes

Informational

class staty.codes.Continue[source]

Bases: staty.base.Informational, staty.base.HTTP11Mixin

code = 100
message = 'Continue'
rfcs = (('7231', '6.2.1'),)
class staty.codes.SwitchingProtocols[source]

Bases: staty.base.Informational, staty.base.HTTP11Mixin

code = 101
message = 'Switching Protocols'
rfcs = (('7231', '6.2.2'),)
class staty.codes.Processing[source]

Bases: staty.base.Informational, staty.base.WebDAVMixin

code = 102
message = 'Processing'
rfcs = (('2518', ''),)
class staty.codes.Checkpoint[source]

Bases: staty.base.Informational, staty.base.UnofficialMixin

code = 103
message = 'Checkpoint'
reference = 'https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#Unofficial_codes'

Successful

class staty.codes.Ok[source]

Bases: staty.base.Successful, staty.base.HTTP10Mixin

code = 200
message = 'OK'
rfcs = (('7231', '6.3.1'),)
class staty.codes.Created[source]

Bases: staty.base.Successful, staty.base.HTTP10Mixin

code = 201
message = 'Created'
rfcs = (('7231', '6.3.2'),)
class staty.codes.Accepted[source]

Bases: staty.base.Successful, staty.base.HTTP10Mixin

code = 202
message = 'Accepted'
rfcs = (('7231', '6.3.3'),)
class staty.codes.NonAuthoritativeInformation[source]

Bases: staty.base.Successful, staty.base.HTTP11Mixin

code = 203
message = 'Non-Authoritative Information'
rfcs = (('7231', '6.3.4'),)
class staty.codes.NoContent[source]

Bases: staty.base.Successful, staty.base.HTTP10Mixin

code = 204
message = 'No Content'
rfcs = (('7231', '6.3.5'),)
class staty.codes.ResetContent[source]

Bases: staty.base.Successful, staty.base.HTTP11Mixin

code = 205
message = 'Reset Content'
rfcs = (('7231', '6.3.6'),)
class staty.codes.PartialContent[source]

Bases: staty.base.Successful, staty.base.HTTP11Mixin

code = 206
message = 'Partial Content'
rfcs = (('7233', '4.1'),)
class staty.codes.MultiStatus[source]

Bases: staty.base.Successful, staty.base.WebDAVMixin

code = 207
message = 'Multi-Status'
rfcs = (('4918', ''),)
class staty.codes.AlreadyReported[source]

Bases: staty.base.Successful, staty.base.WebDAVMixin

code = 208
message = 'Already Reported'
rfcs = (('5842', ''),)
class staty.codes.IMUsed[source]

Bases: staty.base.Successful, staty.base.HTTP11Mixin

code = 226
message = 'IM Used'
rfcs = (('3229', ''),)
class staty.codes.MultipleChoices[source]

Bases: staty.base.Redirection, staty.base.HTTP10Mixin

code = 300
message = 'Multiple Choices'
rfcs = (('7231', '6.4.1'),)
class staty.codes.MovedPermanently[source]

Bases: staty.base.Redirection, staty.base.HTTP10Mixin

code = 301
message = 'Moved Permanently'
rfcs = (('7231', '6.4.2'),)
class staty.codes.Found[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 302
message = 'Found'
rfcs = (('7231', '6.4.3'),)
class staty.codes.SeeOther[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 303
message = 'See Other'
rfcs = (('7231', '6.4.4'),)
class staty.codes.NotModified[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 304
message = 'Not Modified'
rfcs = (('7232', '4.1'),)
class staty.codes.UseProxy[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 305
message = 'Use Proxy'
rfcs = (('7231', '6.4.5'),)
class staty.codes.SwitchProxy[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 306
message = 'Switch Proxy'
rfcs = (('7231', '6.4.6'), ('draft', '1.2'))
class staty.codes.TemporaryRedirect[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 307
message = 'Temporary Redirect'
rfcs = (('7231', '6.4.7'),)
class staty.codes.PermanentRedirect[source]

Bases: staty.base.Redirection, staty.base.HTTP11Mixin

code = 308
message = 'Permanent Redirect'
rfcs = (('7538', ''),)

Client Error

class staty.codes.BadRequest[source]

Bases: staty.base.ClientError, staty.base.HTTP10Mixin

code = 400
exception

alias of staty.exceptions.BadRequestException

message = 'Bad Request'
rfcs = (('7231', '6.5.1'),)
class staty.codes.Unauthorized[source]

Bases: staty.base.ClientError, staty.base.HTTP10Mixin

code = 401
exception

alias of staty.exceptions.UnauthorizedException

message = 'Unauthorized'
rfcs = (('7235', '3.1'),)
class staty.codes.PaymentRequired[source]

Bases: staty.base.ClientError, staty.base.HTTP10Mixin

code = 402
exception

alias of staty.exceptions.PaymentRequiredException

message = 'Payment Required'
rfcs = (('7231', '6.5.2'),)
class staty.codes.Forbidden[source]

Bases: staty.base.ClientError, staty.base.HTTP10Mixin

code = 403
exception

alias of staty.exceptions.ForbiddenException

message = 'Forbidden'
rfcs = (('7231', '6.5.3'),)
class staty.codes.NotFound[source]

Bases: staty.base.ClientError, staty.base.HTTP10Mixin

code = 404
exception

alias of staty.exceptions.NotFoundException

message = 'Not Found'
rfcs = (('7231', '6.5.4'),)
class staty.codes.MethodNotAllowed[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 405
exception

alias of staty.exceptions.MethodNotAllowedException

message = 'Method Not Allowed'
rfcs = (('7231', '6.5.5'),)
class staty.codes.NotAcceptable[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 406
exception

alias of staty.exceptions.NotAcceptableException

message = 'Not Acceptable'
rfcs = (('7231', '6.5.6'),)
class staty.codes.ProxyAuthenticationRequired[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 407
exception

alias of staty.exceptions.ProxyAuthenticationRequiredException

message = 'Proxy Authentication Required'
rfcs = (('7235', '3.2'),)
class staty.codes.RequestTimeout[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 408
exception

alias of staty.exceptions.RequestTimeoutException

message = 'Request Timeout'
rfcs = (('7231', '6.5.7'),)
class staty.codes.Conflict[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 409
exception

alias of staty.exceptions.ConflictException

message = 'Conflict'
rfcs = (('7231', '6.5.8'),)
class staty.codes.Gone[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 410
exception

alias of staty.exceptions.GoneException

message = 'Gone'
rfcs = (('7231', '6.5.9'),)
class staty.codes.LengthRequired[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 411
exception

alias of staty.exceptions.LengthRequiredException

message = 'Length Required'
rfcs = (('7231', '6.5.10'),)
class staty.codes.PreconditionFailed[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 412
exception

alias of staty.exceptions.PreconditionFailedException

message = 'Precondition Failed'
rfcs = (('7232', '4.2'), ('8144', '3.2'))
class staty.codes.PayloadTooLarge[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 413
exception

alias of staty.exceptions.PayloadTooLargeException

message = 'Payload Too Large'
rfcs = (('7231', '6.5.11'),)
class staty.codes.URITooLong[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 414
exception

alias of staty.exceptions.URITooLongException

message = 'URI Too Long'
rfcs = (('7231', '6.5.12'),)
class staty.codes.UnsupportedMediaType[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 415
exception

alias of staty.exceptions.UnsupportedMediaTypeException

message = 'Unsupported Media Type'
rfcs = (('7231', '6.5.13'), ('7694', '3'))
class staty.codes.RangeNotSatisfiable[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 416
exception

alias of staty.exceptions.RangeNotSatisfiableException

message = 'Range Not Satisfiable'
rfcs = (('7233', '4.4'),)
class staty.codes.ExpectationFailed[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 417
exception

alias of staty.exceptions.ExpectationFailedException

message = 'Expectation Failed'
rfcs = (('7231', '6.5.14'),)
class staty.codes.IAmATeapot[source]

Bases: staty.base.ClientError, staty.base.HTCPCP10Mixin

code = 418
exception

alias of staty.exceptions.IAmATeapotException

message = 'I am a teapot'
class staty.codes.MethodFailure[source]

Bases: staty.base.ClientError, staty.base.UnofficialMixin

code = 420
exception

alias of staty.exceptions.MethodFailureException

message = 'Method Failure'
reference = 'Spring Framework'
class staty.codes.MisdirectedRequest[source]

Bases: staty.base.ClientError, staty.base.HTTP20Mixin

code = 421
exception

alias of staty.exceptions.MisdirectedRequestException

message = 'Misdirected Request'
rfcs = (('7540', '9.1.2'),)
class staty.codes.UnprocessableEntity[source]

Bases: staty.base.ClientError, staty.base.WebDAVMixin

code = 422
exception

alias of staty.exceptions.UnprocessableEntityException

message = 'Unprocessable Entity'
rfcs = (('4918', ''),)
class staty.codes.Locked[source]

Bases: staty.base.ClientError, staty.base.WebDAVMixin

code = 423
exception

alias of staty.exceptions.LockedException

message = 'Locked'
rfcs = (('4918', ''),)
class staty.codes.FailedDependency[source]

Bases: staty.base.ClientError, staty.base.WebDAVMixin

code = 424
exception

alias of staty.exceptions.FailedDependencyException

message = 'Failed Dependency'
rfcs = (('4918', ''),)
class staty.codes.UpgradeRequired[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 426
exception

alias of staty.exceptions.UpgradeRequiredException

message = 'Upgrade Required'
rfcs = (('7231', '6.5.15'),)
class staty.codes.PreconditionRequired[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 428
exception

alias of staty.exceptions.PreconditionRequiredException

message = 'Precondition Required'
rfcs = (('6585', ''),)
class staty.codes.TooManyRequests[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 429
exception

alias of staty.exceptions.TooManyRequestsException

message = 'Too Many Requests'
rfcs = (('6585', ''),)
class staty.codes.RequestHeaderFieldsTooLarge[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 431
exception

alias of staty.exceptions.RequestHeaderFieldsTooLargeException

message = 'Request Header Fields Too Large'
rfcs = (('6585', ''),)
class staty.codes.LoginTimeout[source]

Bases: staty.base.ClientError, staty.base.IISMixin

code = 440
exception

alias of staty.exceptions.LoginTimeoutException

message = 'Login Timeout'
class staty.codes.NoResponse[source]

Bases: staty.base.ClientError, staty.base.NginxMixin

code = 444
exception

alias of staty.exceptions.NoResponseException

message = 'No Response'
class staty.codes.RetryWith[source]

Bases: staty.base.ClientError, staty.base.IISMixin

code = 449
exception

alias of staty.exceptions.RetryWithException

message = 'Retry With'
class staty.codes.BlockedByWindowsParentalControls[source]

Bases: staty.base.ClientError, staty.base.UnofficialMixin

code = 450
exception

alias of staty.exceptions.BlockedByWindowsParentalControlsException

message = 'Blocked By Windows Parental Controls'
reference = 'Microsoft'
class staty.codes.UnavailableForLegalReasons[source]

Bases: staty.base.ClientError, staty.base.HTTP11Mixin

code = 451
exception

alias of staty.exceptions.UnavailableForLegalReasonsException

message = 'Unavailable For Legal Reasons'
rfcs = (('7725', ''),)
class staty.codes.Redirect[source]

Bases: staty.base.ClientError, staty.base.IISMixin

code = 451
exception

alias of staty.exceptions.BadGatewayException

message = 'Redirect'
class staty.codes.SSLCertificateError[source]

Bases: staty.base.ClientError, staty.base.NginxMixin

code = 495
exception

alias of staty.exceptions.SSLCertificateErrorException

message = 'SSL Certificate Error'
class staty.codes.SSLCertificateRequired[source]

Bases: staty.base.ClientError, staty.base.NginxMixin

code = 496
exception

alias of staty.exceptions.SSLCertificateRequiredException

message = 'SSL Certificate Required'
class staty.codes.HTTPRequestSentToHTTPSPort[source]

Bases: staty.base.ClientError, staty.base.NginxMixin

code = 497
exception

alias of staty.exceptions.HTTPRequestSentToHTTPSPortException

message = 'HTTP Request Sent To HTTPS Port'
class staty.codes.InvalidToken[source]

Bases: staty.base.ClientError, staty.base.UnofficialMixin

code = 498
exception

alias of staty.exceptions.InvalidTokenException

message = 'Invalid Token'
reference = 'ArcGIS for Server'
class staty.codes.ClientClosedRequest[source]

Bases: staty.base.ClientError, staty.base.NginxMixin

code = 499
exception

alias of staty.exceptions.ClientClosedRequestException

message = 'Client Closed Request'
class staty.codes.RequestHasBeenForbiddenByAntivirus[source]

Bases: staty.base.ClientError, staty.base.UnofficialMixin

code = 499
exception

alias of staty.exceptions.RequestHasBeenForbiddenByAntivirusException

message = 'Request Has Been Forbidden By Antivirus'
reference = 'https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#Unofficial_codes'
class staty.codes.TokenRequired[source]

Bases: staty.base.ClientError, staty.base.UnofficialMixin

code = 499
exception

alias of staty.exceptions.TokenRequiredException

message = 'Token Required'
reference = 'ArcGIS for Server'

Server Error

class staty.codes.InternalServerError[source]

Bases: staty.base.ServerError, staty.base.HTTP10Mixin

code = 500
exception

alias of staty.exceptions.InternalServerErrorException

message = 'Internal Server Error'
rfcs = (('7231', '6.6.1'),)
class staty.codes.NotImplemented[source]

Bases: staty.base.ServerError, staty.base.HTTP10Mixin

code = 501
exception

alias of staty.exceptions.NotImplementedException

message = 'Not Implemented'
rfcs = (('7231', '6.6.2'),)
class staty.codes.BadGateway[source]

Bases: staty.base.ServerError, staty.base.HTTP10Mixin

code = 502
exception

alias of staty.exceptions.BadGatewayException

message = 'Bad Gateway'
rfcs = (('7231', '6.6.3'),)
class staty.codes.ServiceUnavailable[source]

Bases: staty.base.ServerError, staty.base.HTTP10Mixin

code = 503
exception

alias of staty.exceptions.ServiceUnavailableException

message = 'Service Unavailable'
rfcs = (('7231', '6.6.4'),)
class staty.codes.GatewayTimeout[source]

Bases: staty.base.ServerError, staty.base.HTTP11Mixin

code = 504
exception

alias of staty.exceptions.GatewayTimeoutException

message = 'Gateway Timeout'
rfcs = (('7231', '6.6.5'),)
class staty.codes.HTTPVersionNotSupported[source]

Bases: staty.base.ServerError, staty.base.HTTP11Mixin

code = 505
exception

alias of staty.exceptions.HTTPVersionNotSupportedException

message = 'HTTP Version Not Supported'
rfcs = (('7231', '6.6.6'),)
class staty.codes.VariantAlsoNegotiates[source]

Bases: staty.base.ServerError, staty.base.HTTP11Mixin

code = 506
exception

alias of staty.exceptions.VariantAlsoNegotiatesException

message = 'Variant Also Negotiates'
rfcs = (('2295', ''),)
class staty.codes.InsufficientStorage[source]

Bases: staty.base.ServerError, staty.base.WebDAVMixin

code = 507
exception

alias of staty.exceptions.InsufficientStorageException

message = 'Insufficient Storage'
rfcs = (('4918', ''),)
class staty.codes.LoopDetected[source]

Bases: staty.base.ServerError, staty.base.WebDAVMixin

code = 508
exception

alias of staty.exceptions.LoopDetectedException

message = 'Loop Detected'
rfcs = (('5842', ''),)
class staty.codes.BandwidthLimitExceeded[source]

Bases: staty.base.ServerError, staty.base.UnofficialMixin

code = 509
exception

alias of staty.exceptions.BandwidthLimitExceededException

message = 'Bandwidth Limit Exceeded'
reference = 'Apache Web Server/cPanel'
class staty.codes.NotExtended[source]

Bases: staty.base.ServerError, staty.base.HTTP11Mixin

code = 510
exception

alias of staty.exceptions.NotExtendedException

message = 'Not Extended'
rfcs = (('2774', ''),)
class staty.codes.NetworkAuthenticationRequired[source]

Bases: staty.base.ServerError, staty.base.HTTP11Mixin

code = 511
exception

alias of staty.exceptions.NetworkAuthenticationRequiredException

message = 'Network Authentication Required'
rfcs = (('6585', ''),)
class staty.codes.UnknownError[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 520
exception

alias of staty.exceptions.UnknownErrorException

message = 'Unknown Error'
class staty.codes.WebServerIsDown[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 521
exception

alias of staty.exceptions.WebServerIsDownException

message = 'Web Server Is Down'
class staty.codes.ConnectionTimedOut[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 522
exception

alias of staty.exceptions.ConnectionTimedOutException

message = 'Connection Timed Out'
class staty.codes.OriginIsUnreachable[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 523
exception

alias of staty.exceptions.OriginIsUnreachableException

message = 'Origin Is Unreachable'
class staty.codes.ATimeoutOccurred[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 524
exception

alias of staty.exceptions.ATimeoutOccurredException

message = 'A Timeout Occurred'
class staty.codes.SSLHandshakeFailed[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 525
exception

alias of staty.exceptions.SSLHandshakeFailedException

message = 'SSL Handshake Failed'
class staty.codes.InvalidSSLCertificate[source]

Bases: staty.base.ServerError, staty.base.CloudflareMixin

code = 526
exception

alias of staty.exceptions.InvalidSSLCertificateException

message = 'Invalid SSL Certificate'
class staty.codes.SiteIsFrozen[source]

Bases: staty.base.ServerError, staty.base.UnofficialMixin

code = 530
exception

alias of staty.exceptions.SiteIsFrozenException

message = 'Site Is Frozen'
reference = 'Pantheon'

Exceptions

Module: staty.exceptions

Staty Base Exception

class staty.exceptions.StatyBaseException[source]

Bases: Exception

class staty.exceptions.RegistrationException[source]

Bases: staty.exceptions.StatyBaseException

class staty.exceptions.MissingHandlerException[source]

Bases: staty.exceptions.StatyBaseException

class staty.exceptions.HTTPError(*args, response=None, request=None)[source]

Bases: staty.exceptions.StatyBaseException

property status
class staty.exceptions.ConnectionException[source]

Bases: staty.exceptions.StatyBaseException

Mixins

class staty.exceptions.RecoverableErrorMixin[source]

Bases: Exception

class staty.exceptions.UnrecoverableErrorMixin[source]

Bases: Exception

Connection Exceptions

class staty.exceptions.ConnectionException[source]

Bases: staty.exceptions.StatyBaseException

class staty.exceptions.ConnectionTimeoutException[source]

Bases: socket.timeout, staty.exceptions.ConnectionException, staty.exceptions.RecoverableErrorMixin

class staty.exceptions.NameResolutionException[source]

Bases: socket.gaierror, staty.exceptions.ConnectionException, staty.exceptions.RecoverableErrorMixin

class staty.exceptions.HostAddressException[source]

Bases: socket.herror, staty.exceptions.ConnectionException, staty.exceptions.RecoverableErrorMixin

class staty.exceptions.SSLException[source]

Bases: staty.exceptions.ConnectionException, staty.exceptions.RecoverableErrorMixin

class staty.exceptions.ProxyException[source]

Bases: staty.exceptions.ConnectionException, staty.exceptions.RecoverableErrorMixin

Client Error Exceptions

class staty.exceptions.ClientErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.HTTPError

class staty.exceptions.RecoverableClientErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ClientErrorException, staty.exceptions.RecoverableErrorMixin

class staty.exceptions.UnrecoverableClientErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ClientErrorException, staty.exceptions.UnrecoverableErrorMixin

class staty.exceptions.PreconditionRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.TooManyRequestsException(*args, response=None, request=None)[source]

Bases: staty.exceptions.RecoverableClientErrorException

class staty.exceptions.BadRequestException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.UnauthorizedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.PaymentRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.ForbiddenException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.NotFoundException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.MethodNotAllowedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.NotAcceptableException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.ProxyAuthenticationRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.RequestTimeoutException(*args, response=None, request=None)[source]

Bases: staty.exceptions.RecoverableClientErrorException

class staty.exceptions.ConflictException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.GoneException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.LengthRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.PreconditionFailedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.PayloadTooLargeException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.URITooLongException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.UnsupportedMediaTypeException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.RangeNotSatisfiableException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.ExpectationFailedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.IAmATeapotException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.MisdirectedRequestException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.UnprocessableEntityException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.LockedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.FailedDependencyException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.UpgradeRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.UnavailableForLegalReasonsException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.RequestHeaderFieldsTooLargeException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.MethodFailureException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.BlockedByWindowsParentalControlsException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.InvalidTokenException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.TokenRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.RequestHasBeenForbiddenByAntivirusException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.LoginTimeoutException(*args, response=None, request=None)[source]

Bases: staty.exceptions.RecoverableClientErrorException

class staty.exceptions.RetryWithException(*args, response=None, request=None)[source]

Bases: staty.exceptions.RecoverableClientErrorException

class staty.exceptions.SSLCertificateErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.SSLCertificateRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.HTTPRequestSentToHTTPSPortException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.NoResponseException(*args, response=None, request=None)[source]

Bases: staty.exceptions.UnrecoverableClientErrorException

class staty.exceptions.ClientClosedRequestException(*args, response=None, request=None)[source]

Bases: staty.exceptions.RecoverableClientErrorException

Server Error Exceptions

class staty.exceptions.ServerErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.HTTPError, staty.exceptions.RecoverableErrorMixin

class staty.exceptions.InternalServerErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.NotImplementedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.BadGatewayException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.ServiceUnavailableException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.GatewayTimeoutException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.HTTPVersionNotSupportedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.VariantAlsoNegotiatesException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.InsufficientStorageException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.LoopDetectedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.NotExtendedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.NetworkAuthenticationRequiredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.BandwidthLimitExceededException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.SiteIsFrozenException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.InvalidSSLCertificateException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.SSLHandshakeFailedException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.ATimeoutOccurredException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.OriginIsUnreachableException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.ConnectionTimedOutException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.WebServerIsDownException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

class staty.exceptions.UnknownErrorException(*args, response=None, request=None)[source]

Bases: staty.exceptions.ServerErrorException

Changes

1.2.4

  • Use .format() instead of f-string

  • Official support only for CPython 3.7 and 3.8

  • Update requirements

1.2.3

  • Update requirements to fix security issues

1.2.2

  • Fix an circular import issue

1.2.1

  • Fix an small issue with base HTTPError exception due to lack of status attribute

1.2.0

  • Add status object in exception objects

1.1.1

  • Replace bumpversion support with CHANGES.rst option

  • Add support for setup.py version command

  • Adopt twine for PyPI release/upload

  • Use README.rst as a long description at PyPI

  • Update some requirements

1.1.0

  • Add an HTTPStatus base class for type annotation usage

1.0.0

  • Refactor status check/test implementation

  • Add numeric code to status map

0.5.0

  • Remove HTTP statuses global maps

  • Create global StatusMap registry with constant attributes support

  • Add support for HTTP code comparison with integers, strings, HTTP classes, etc

  • Improve documentation organization, presentation and formatting

0.4.3

  • Fixed CI and documentation builds

0.4.2

  • Fix setup.py errors

0.4.0

  • Add initial documentation

  • Update dev requirements

  • Configure bumpversion for library release

0.3.1

  • Fix SwitchProxy class message

0.3.0

  • Add RFC references when available.

0.2.2

  • Small refactoring in HTTPError class implementation

0.2.1

  • Fix CI (travis/tox) errors

0.2

  • Initial support for requests response handling and wrapping.

  • Exception mixins must be derived from mixins to be used with try:/except:

  • Minor improvements and :lipstick: in code formatting and project organization

0.1

  • First version