| :mod:`http` --- HTTP modules | 
 | ============================ | 
 |  | 
 | .. 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 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 | 
 |   opening use :mod:`urllib.request` | 
 | * :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 | 
 |  | 
 |    .. versionadded:: 3.5 | 
 |  | 
 |    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>, ...] | 
 |  | 
 | .. _http-status-codes: | 
 |  | 
 | HTTP status codes | 
 | ----------------- | 
 |  | 
 | Supported, | 
 | `IANA-registered <http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml>`_ | 
 | status codes available in :class:`http.HTTPStatus` are: | 
 |  | 
 | ======= =================================== ================================================================== | 
 | Code    Enum Name                           Details | 
 | ======= =================================== ================================================================== | 
 | ``100`` ``CONTINUE``                        HTTP/1.1 :rfc:`7231`, Section 6.2.1 | 
 | ``101`` ``SWITCHING_PROTOCOLS``             HTTP/1.1 :rfc:`7231`, Section 6.2.2 | 
 | ``102`` ``PROCESSING``                      WebDAV :rfc:`2518`, Section 10.1 | 
 | ``200`` ``OK``                              HTTP/1.1 :rfc:`7231`, Section 6.3.1 | 
 | ``201`` ``CREATED``                         HTTP/1.1 :rfc:`7231`, Section 6.3.2 | 
 | ``202`` ``ACCEPTED``                        HTTP/1.1 :rfc:`7231`, Section 6.3.3 | 
 | ``203`` ``NON_AUTHORITATIVE_INFORMATION``   HTTP/1.1 :rfc:`7231`, Section 6.3.4 | 
 | ``204`` ``NO_CONTENT``                      HTTP/1.1 :rfc:`7231`, Section 6.3.5 | 
 | ``205`` ``RESET_CONTENT``                   HTTP/1.1 :rfc:`7231`, Section 6.3.6 | 
 | ``206`` ``PARTIAL_CONTENT``                 HTTP/1.1 :rfc:`7233`, Section 4.1 | 
 | ``207`` ``MULTI_STATUS``                    WebDAV :rfc:`4918`, Section 11.1 | 
 | ``208`` ``ALREADY_REPORTED``                WebDAV Binding Extensions :rfc:`5842`, Section 7.1 (Experimental) | 
 | ``226`` ``IM_USED``                         Delta Encoding in HTTP :rfc:`3229`, Section 10.4.1 | 
 | ``300`` ``MULTIPLE_CHOICES``                HTTP/1.1 :rfc:`7231`, Section 6.4.1 | 
 | ``301`` ``MOVED_PERMANENTLY``               HTTP/1.1 :rfc:`7231`, Section 6.4.2 | 
 | ``302`` ``FOUND``                           HTTP/1.1 :rfc:`7231`, Section 6.4.3 | 
 | ``303`` ``SEE_OTHER``                       HTTP/1.1 :rfc:`7231`, Section 6.4.4 | 
 | ``304`` ``NOT_MODIFIED``                    HTTP/1.1 :rfc:`7232`, Section 4.1 | 
 | ``305`` ``USE_PROXY``                       HTTP/1.1 :rfc:`7231`, Section 6.4.5 | 
 | ``307`` ``TEMPORARY_REDIRECT``              HTTP/1.1 :rfc:`7231`, Section 6.4.7 | 
 | ``308`` ``PERMANENT_REDIRECT``              Permanent Redirect :rfc:`7238`, Section 3 (Experimental) | 
 | ``400`` ``BAD_REQUEST``                     HTTP/1.1 :rfc:`7231`, Section 6.5.1 | 
 | ``401`` ``UNAUTHORIZED``                    HTTP/1.1 Authentication :rfc:`7235`, Section 3.1 | 
 | ``402`` ``PAYMENT_REQUIRED``                HTTP/1.1 :rfc:`7231`, Section 6.5.2 | 
 | ``403`` ``FORBIDDEN``                       HTTP/1.1 :rfc:`7231`, Section 6.5.3 | 
 | ``404`` ``NOT_FOUND``                       HTTP/1.1 :rfc:`7231`, Section 6.5.4 | 
 | ``405`` ``METHOD_NOT_ALLOWED``              HTTP/1.1 :rfc:`7231`, Section 6.5.5 | 
 | ``406`` ``NOT_ACCEPTABLE``                  HTTP/1.1 :rfc:`7231`, Section 6.5.6 | 
 | ``407`` ``PROXY_AUTHENTICATION_REQUIRED``   HTTP/1.1 Authentication :rfc:`7235`, Section 3.2 | 
 | ``408`` ``REQUEST_TIMEOUT``                 HTTP/1.1 :rfc:`7231`, Section 6.5.7 | 
 | ``409`` ``CONFLICT``                        HTTP/1.1 :rfc:`7231`, Section 6.5.8 | 
 | ``410`` ``GONE``                            HTTP/1.1 :rfc:`7231`, Section 6.5.9 | 
 | ``411`` ``LENGTH_REQUIRED``                 HTTP/1.1 :rfc:`7231`, Section 6.5.10 | 
 | ``412`` ``PRECONDITION_FAILED``             HTTP/1.1 :rfc:`7232`, Section 4.2 | 
 | ``413`` ``REQUEST_ENTITY_TOO_LARGE``        HTTP/1.1 :rfc:`7231`, Section 6.5.11 | 
 | ``414`` ``REQUEST_URI_TOO_LONG``            HTTP/1.1 :rfc:`7231`, Section 6.5.12 | 
 | ``415`` ``UNSUPPORTED_MEDIA_TYPE``          HTTP/1.1 :rfc:`7231`, Section 6.5.13 | 
 | ``416`` ``REQUEST_RANGE_NOT_SATISFIABLE``   HTTP/1.1 Range Requests :rfc:`7233`, Section 4.4 | 
 | ``417`` ``EXPECTATION_FAILED``              HTTP/1.1 :rfc:`7231`, Section 6.5.14 | 
 | ``422`` ``UNPROCESSABLE_ENTITY``            WebDAV :rfc:`4918`, Section 11.2 | 
 | ``423`` ``LOCKED``                          WebDAV :rfc:`4918`, Section 11.3 | 
 | ``424`` ``FAILED_DEPENDENCY``               WebDAV :rfc:`4918`, Section 11.4 | 
 | ``426`` ``UPGRADE_REQUIRED``                HTTP/1.1 :rfc:`7231`, Section 6.5.15 | 
 | ``428`` ``PRECONDITION_REQUIRED``           Additional HTTP Status Codes :rfc:`6585` | 
 | ``429`` ``TOO_MANY_REQUESTS``               Additional HTTP Status Codes :rfc:`6585` | 
 | ``431`` ``REQUEST_HEADER_FIELDS_TOO_LARGE`` Additional HTTP Status Codes :rfc:`6585` | 
 | ``500`` ``INTERNAL_SERVER_ERROR``           HTTP/1.1 :rfc:`7231`, Section 6.6.1 | 
 | ``501`` ``NOT_IMPLEMENTED``                 HTTP/1.1 :rfc:`7231`, Section 6.6.2 | 
 | ``502`` ``BAD_GATEWAY``                     HTTP/1.1 :rfc:`7231`, Section 6.6.3 | 
 | ``503`` ``SERVICE_UNAVAILABLE``             HTTP/1.1 :rfc:`7231`, Section 6.6.4 | 
 | ``504`` ``GATEWAY_TIMEOUT``                 HTTP/1.1 :rfc:`7231`, Section 6.6.5 | 
 | ``505`` ``HTTP_VERSION_NOT_SUPPORTED``      HTTP/1.1 :rfc:`7231`, Section 6.6.6 | 
 | ``506`` ``VARIANT_ALSO_NEGOTIATES``         Transparent Content Negotiation in HTTP :rfc:`2295`, Section 8.1 (Experimental) | 
 | ``507`` ``INSUFFICIENT_STORAGE``            WebDAV :rfc:`4918`, Section 11.5 | 
 | ``508`` ``LOOP_DETECTED``                   WebDAV Binding Extensions :rfc:`5842`, Section 7.2 (Experimental) | 
 | ``510`` ``NOT_EXTENDED``                    An HTTP Extension Framework :rfc:`2774`, Section 7 (Experimental) | 
 | ``511`` ``NETWORK_AUTHENTICATION_REQUIRED`` Additional HTTP Status Codes :rfc:`6585`, Section 6 | 
 | ======= =================================== ================================================================== | 
 |  | 
 | In order to preserve backwards compatibility, enum values are also present | 
 | in the :mod:`http.client` module in the form of constants. The enum name is | 
 | equal to the constant name (i.e. ``http.HTTPStatus.OK`` is also available as | 
 | ``http.client.OK``). |