r """
The ` ` codes ` ` object defines a mapping from common names for HTTP statuses
to their numerical codes , accessible either as attributes or as dictionary
items .
Example : :
>> > import requests
>> > requests . codes [ ' temporary_redirect ' ]
307
>> > requests . codes . teapot
418
>> > requests . codes [ ' \ o/ ' ]
200
Some codes have multiple names , and both upper - and lower - case versions of
the names are allowed . For example , ` ` codes . ok ` ` , ` ` codes . OK ` ` , and
` ` codes . okay ` ` all correspond to the HTTP status code 200.
"""
from . structures import LookupDict
_codes = {
# Informational.
100 : ( " continue " , ) ,
101 : ( " switching_protocols " , ) ,
102 : ( " processing " , ) ,
103 : ( " checkpoint " , ) ,
122 : ( " uri_too_long " , " request_uri_too_long " ) ,
200 : ( " ok " , " okay " , " all_ok " , " all_okay " , " all_good " , " \\ o/ " , " ✓ " ) ,
201 : ( " created " , ) ,
202 : ( " accepted " , ) ,
203 : ( " non_authoritative_info " , " non_authoritative_information " ) ,
204 : ( " no_content " , ) ,
205 : ( " reset_content " , " reset " ) ,
206 : ( " partial_content " , " partial " ) ,
207 : ( " multi_status " , " multiple_status " , " multi_stati " , " multiple_stati " ) ,
208 : ( " already_reported " , ) ,
226 : ( " im_used " , ) ,
# Redirection.
300 : ( " multiple_choices " , ) ,
301 : ( " moved_permanently " , " moved " , " \\ o- " ) ,
302 : ( " found " , ) ,
303 : ( " see_other " , " other " ) ,
304 : ( " not_modified " , ) ,
305 : ( " use_proxy " , ) ,
306 : ( " switch_proxy " , ) ,
307 : ( " temporary_redirect " , " temporary_moved " , " temporary " ) ,
308 : (
" permanent_redirect " ,
" resume_incomplete " ,
" resume " ,
) , # "resume" and "resume_incomplete" to be removed in 3.0
# Client Error.
400 : ( " bad_request " , " bad " ) ,
401 : ( " unauthorized " , ) ,
402 : ( " payment_required " , " payment " ) ,
403 : ( " forbidden " , ) ,
404 : ( " not_found " , " -o- " ) ,
405 : ( " method_not_allowed " , " not_allowed " ) ,
406 : ( " not_acceptable " , ) ,
407 : ( " proxy_authentication_required " , " proxy_auth " , " proxy_authentication " ) ,
408 : ( " request_timeout " , " timeout " ) ,
409 : ( " conflict " , ) ,
410 : ( " gone " , ) ,
411 : ( " length_required " , ) ,
412 : ( " precondition_failed " , " precondition " ) ,
413 : ( " request_entity_too_large " , ) ,
414 : ( " request_uri_too_large " , ) ,
415 : ( " unsupported_media_type " , " unsupported_media " , " media_type " ) ,
416 : (
" requested_range_not_satisfiable " ,
" requested_range " ,
" range_not_satisfiable " ,
) ,
417 : ( " expectation_failed " , ) ,
418 : ( " im_a_teapot " , " teapot " , " i_am_a_teapot " ) ,
421 : ( " misdirected_request " , ) ,
422 : ( " unprocessable_entity " , " unprocessable " ) ,
423 : ( " locked " , ) ,
424 : ( " failed_dependency " , " dependency " ) ,
425 : ( " unordered_collection " , " unordered " ) ,
426 : ( " upgrade_required " , " upgrade " ) ,
428 : ( " precondition_required " , " precondition " ) ,
429 : ( " too_many_requests " , " too_many " ) ,
431 : ( " header_fields_too_large " , " fields_too_large " ) ,
444 : ( " no_response " , " none " ) ,
449 : ( " retry_with " , " retry " ) ,
450 : ( " blocked_by_windows_parental_controls " , " parental_controls " ) ,
451 : ( " unavailable_for_legal_reasons " , " legal_reasons " ) ,
499 : ( " client_closed_request " , ) ,
# Server Error.
500 : ( " internal_server_error " , " server_error " , " /o \\ " , " ✗ " ) ,
501 : ( " not_implemented " , ) ,
502 : ( " bad_gateway " , ) ,
503 : ( " service_unavailable " , " unavailable " ) ,
504 : ( " gateway_timeout " , ) ,
505 : ( " http_version_not_supported " , " http_version " ) ,
506 : ( " variant_also_negotiates " , ) ,
507 : ( " insufficient_storage " , ) ,
509 : ( " bandwidth_limit_exceeded " , " bandwidth " ) ,
510 : ( " not_extended " , ) ,
511 : ( " network_authentication_required " , " network_auth " , " network_authentication " ) ,
}
codes = LookupDict ( name = " status_codes " )
def _init ( ) :
for code , titles in _codes . items ( ) :
for title in titles :
setattr ( codes , title , code )
if not title . startswith ( ( " \\ " , " / " ) ) :
setattr ( codes , title . upper ( ) , code )
def doc ( code ) :
names = " , " . join ( f " `` { n } `` " for n in _codes [ code ] )
return " * %d : %s " % ( code , names )
global __doc__
__doc__ = (
__doc__ + " \n " + " \n " . join ( doc ( code ) for code in sorted ( _codes ) )
if __doc__ is not None
else None
)
_init ( )