Issue #21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
HTTPStatus.NOT_FOUND). Patch by Demian Brecht.
diff --git a/Doc/library/http.rst b/Doc/library/http.rst
index a387a37..6a0b7b2 100644
--- a/Doc/library/http.rst
+++ b/Doc/library/http.rst
@@ -1,7 +1,16 @@
:mod:`http` --- HTTP modules
============================
-``http`` is a package that collects several modules for working with the
+.. module:: http
+ :synopsis: HTTP status codes and messages
+
+.. index::
+ pair: HTTP; protocol
+ single: HTTP; http (standard module)
+
+**Source code:** :source:`Lib/http/__init__.py`
+
+:mod:`http` is a also package that collects several modules for working with the
HyperText Transfer Protocol:
* :mod:`http.client` is a low-level HTTP protocol client; for high-level URL
@@ -9,3 +18,113 @@
* :mod:`http.server` contains basic HTTP server classes based on :mod:`socketserver`
* :mod:`http.cookies` has utilities for implementing state management with cookies
* :mod:`http.cookiejar` provides persistence of cookies
+
+:mod:`http` is also a module that defines a number of HTTP status codes and
+associated messages through the :class:`http.HTTPStatus` enum:
+
+.. class:: HTTPStatus
+
+ A subclass of :class:`enum.IntEnum` that defines a set of HTTP status codes,
+ reason phrases and long descriptions written in English.
+
+ Usage::
+
+ >>> from http import HTTPStatus
+ >>> HTTPStatus.OK
+ <HTTPStatus.OK: 200>
+ >>> HTTPStatus.OK == 200
+ True
+ >>> http.HTTPStatus.OK.value
+ 200
+ >>> HTTPStatus.OK.phrase
+ 'OK'
+ >>> HTTPStatus.OK.description
+ 'Request fulfilled, document follows'
+ >>> list(HTTPStatus)
+ [<HTTPStatus.CONTINUE: 100>, <HTTPStatus.SWITCHING_PROTOCOLS: 101>, ...]
+
+ .. versionadded:: 3.5
+ Added the *HTTPStatus* Enum
+
+ The supported HTTP status codes are:
+
+ === ==============================
+ 100 Continue
+ 101 Switching Protocols
+ 102 Processing
+ 200 OK
+ 201 Created
+ 202 Accepted
+ 203 Non-Authoritative Information
+ 204 No Content
+ 205 Reset Content
+ 206 Partial Content
+ 207 Multi-Status
+ 208 Already Reported
+ 226 IM Used
+ 300 Multiple Choices
+ 301 Moved Permanently
+ 302 Found
+ 303 See Other
+ 304 Not Modified
+ 305 Use Proxy
+ 306 Switch Proxy
+ 307 Temporary Redirect
+ 308 Permanent Redirect
+ 400 Bad Request
+ 401 Unauthorized
+ 402 Payment Required
+ 403 Forbidden
+ 404 Not Found
+ 405 Method Not Allowed
+ 406 Not Acceptable
+ 407 Proxy Authentication Required
+ 408 Request Timeout
+ 409 Conflict
+ 410 Gone
+ 411 Length Required
+ 412 Precondition Failed
+ 413 Request Entity Too Large
+ 414 Request URI Too Long
+ 415 Unsupported Media Type
+ 416 Request Range Not Satisfiable
+ 417 Expectation Failed
+ 418 I'm a teapot
+ 419 Authentication Timeout
+ 420 Method Failure *(Spring framework)*
+ 422 Unprocessable Entity
+ 423 Locked
+ 424 Failed Dependency
+ 426 Upgrade Required
+ 428 Precondition Required
+ 429 Too Many Requests
+ 431 Request Header Field Too Large
+ 440 Login Timeout *(Microsoft)*
+ 444 No Response *(Nginx)*
+ 449 Retry With *(Microsoft)*
+ 450 Blocked By Windows Parental Controls *(Microsoft)*
+ 494 Request Header Too Large *(Nginx)*
+ 495 Cert Error *(Nginx)*
+ 496 No Cert *(Nginx)*
+ 497 HTTP To HTTPS *(Nginx)*
+ 499 Client Closed Request *(Nginx)*
+ 500 Internal Server Error
+ 501 Not Implemented
+ 502 Bad Gateway
+ 503 Service Unavailable
+ 504 Gateway Timeout
+ 505 HTTP Version Not Supported
+ 506 Variant Also Negotiates
+ 507 Insufficient Storage
+ 508 Loop Detected
+ 509 Bandwidth Limit Exceeded
+ 510 Not Extended
+ 511 Network Authentication Required
+ 520 Origin Error *(CloudFlare)*
+ 521 Web Server Is Down *(CloudFlare)*
+ 522 Connection Timed Out *(CloudFlare)*
+ 523 Proxy Declined Request *(CloudFlare)*
+ 524 A Timeout Occurred *(CloudFlare)*
+ 598 Network Read Timeout Error
+ 599 Network Connect Timeout Error
+ === ==============================