Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/requests/status_codes.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-12-08 06:51 +0000

1r""" 

2The ``codes`` object defines a mapping from common names for HTTP statuses 

3to their numerical codes, accessible either as attributes or as dictionary 

4items. 

5 

6Example:: 

7 

8 >>> import requests 

9 >>> requests.codes['temporary_redirect'] 

10 307 

11 >>> requests.codes.teapot 

12 418 

13 >>> requests.codes['\o/'] 

14 200 

15 

16Some codes have multiple names, and both upper- and lower-case versions of 

17the names are allowed. For example, ``codes.ok``, ``codes.OK``, and 

18``codes.okay`` all correspond to the HTTP status code 200. 

19""" 

20 

21from .structures import LookupDict 

22 

23_codes = { 

24 # Informational. 

25 100: ("continue",), 

26 101: ("switching_protocols",), 

27 102: ("processing",), 

28 103: ("checkpoint",), 

29 122: ("uri_too_long", "request_uri_too_long"), 

30 200: ("ok", "okay", "all_ok", "all_okay", "all_good", "\\o/", "✓"), 

31 201: ("created",), 

32 202: ("accepted",), 

33 203: ("non_authoritative_info", "non_authoritative_information"), 

34 204: ("no_content",), 

35 205: ("reset_content", "reset"), 

36 206: ("partial_content", "partial"), 

37 207: ("multi_status", "multiple_status", "multi_stati", "multiple_stati"), 

38 208: ("already_reported",), 

39 226: ("im_used",), 

40 # Redirection. 

41 300: ("multiple_choices",), 

42 301: ("moved_permanently", "moved", "\\o-"), 

43 302: ("found",), 

44 303: ("see_other", "other"), 

45 304: ("not_modified",), 

46 305: ("use_proxy",), 

47 306: ("switch_proxy",), 

48 307: ("temporary_redirect", "temporary_moved", "temporary"), 

49 308: ( 

50 "permanent_redirect", 

51 "resume_incomplete", 

52 "resume", 

53 ), # "resume" and "resume_incomplete" to be removed in 3.0 

54 # Client Error. 

55 400: ("bad_request", "bad"), 

56 401: ("unauthorized",), 

57 402: ("payment_required", "payment"), 

58 403: ("forbidden",), 

59 404: ("not_found", "-o-"), 

60 405: ("method_not_allowed", "not_allowed"), 

61 406: ("not_acceptable",), 

62 407: ("proxy_authentication_required", "proxy_auth", "proxy_authentication"), 

63 408: ("request_timeout", "timeout"), 

64 409: ("conflict",), 

65 410: ("gone",), 

66 411: ("length_required",), 

67 412: ("precondition_failed", "precondition"), 

68 413: ("request_entity_too_large",), 

69 414: ("request_uri_too_large",), 

70 415: ("unsupported_media_type", "unsupported_media", "media_type"), 

71 416: ( 

72 "requested_range_not_satisfiable", 

73 "requested_range", 

74 "range_not_satisfiable", 

75 ), 

76 417: ("expectation_failed",), 

77 418: ("im_a_teapot", "teapot", "i_am_a_teapot"), 

78 421: ("misdirected_request",), 

79 422: ("unprocessable_entity", "unprocessable"), 

80 423: ("locked",), 

81 424: ("failed_dependency", "dependency"), 

82 425: ("unordered_collection", "unordered"), 

83 426: ("upgrade_required", "upgrade"), 

84 428: ("precondition_required", "precondition"), 

85 429: ("too_many_requests", "too_many"), 

86 431: ("header_fields_too_large", "fields_too_large"), 

87 444: ("no_response", "none"), 

88 449: ("retry_with", "retry"), 

89 450: ("blocked_by_windows_parental_controls", "parental_controls"), 

90 451: ("unavailable_for_legal_reasons", "legal_reasons"), 

91 499: ("client_closed_request",), 

92 # Server Error. 

93 500: ("internal_server_error", "server_error", "/o\\", "✗"), 

94 501: ("not_implemented",), 

95 502: ("bad_gateway",), 

96 503: ("service_unavailable", "unavailable"), 

97 504: ("gateway_timeout",), 

98 505: ("http_version_not_supported", "http_version"), 

99 506: ("variant_also_negotiates",), 

100 507: ("insufficient_storage",), 

101 509: ("bandwidth_limit_exceeded", "bandwidth"), 

102 510: ("not_extended",), 

103 511: ("network_authentication_required", "network_auth", "network_authentication"), 

104} 

105 

106codes = LookupDict(name="status_codes") 

107 

108 

109def _init(): 

110 for code, titles in _codes.items(): 

111 for title in titles: 

112 setattr(codes, title, code) 

113 if not title.startswith(("\\", "/")): 

114 setattr(codes, title.upper(), code) 

115 

116 def doc(code): 

117 names = ", ".join(f"``{n}``" for n in _codes[code]) 

118 return "* %d: %s" % (code, names) 

119 

120 global __doc__ 

121 __doc__ = ( 

122 __doc__ + "\n" + "\n".join(doc(code) for code in sorted(_codes)) 

123 if __doc__ is not None 

124 else None 

125 ) 

126 

127 

128_init()