bpo-39507: Add HTTP status 418 "I'm a Teapot" (GH-18291)

diff --git a/Doc/library/http.rst b/Doc/library/http.rst
index f120ada2..14ee733 100644
--- a/Doc/library/http.rst
+++ b/Doc/library/http.rst
@@ -99,6 +99,7 @@
 ``415`` ``UNSUPPORTED_MEDIA_TYPE``          HTTP/1.1 :rfc:`7231`, Section 6.5.13
 ``416`` ``REQUESTED_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
+``418`` ``IM_A_TEAPOT``                     HTCPCP/1.0 :rfc:`2324`, Section 2.3.2
 ``421`` ``MISDIRECTED_REQUEST``             HTTP/2 :rfc:`7540`, Section 9.1.2
 ``422`` ``UNPROCESSABLE_ENTITY``            WebDAV :rfc:`4918`, Section 11.2
 ``423`` ``LOCKED``                          WebDAV :rfc:`4918`, Section 11.3
@@ -134,4 +135,4 @@
    Added ``451 UNAVAILABLE_FOR_LEGAL_REASONS`` status code.
 
 .. versionadded:: 3.9
-   Added ``103 EARLY_HINTS`` and ``425 TOO_EARLY`` status codes.
+   Added ``103 EARLY_HINTS``, ``418 IM_A_TEAPOT`` and ``425 TOO_EARLY`` status codes.
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index b078e79..12e3f18 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -235,8 +235,8 @@
 http
 ----
 
-HTTP status codes ``103 EARLY_HINTS`` and ``425 TOO_EARLY`` are added to
-:class:`http.HTTPStatus`. (Contributed by Dong-hee Na in :issue:`39509`.)
+HTTP status codes ``103 EARLY_HINTS``, ``418 IM_A_TEAPOT`` and ``425 TOO_EARLY`` are added to
+:class:`http.HTTPStatus`. (Contributed by Dong-hee Na in :issue:`39509` and Ross Rhodes in :issue:`39507`.)
 
 imaplib
 -------
diff --git a/Lib/http/__init__.py b/Lib/http/__init__.py
index c8498be..37be765 100644
--- a/Lib/http/__init__.py
+++ b/Lib/http/__init__.py
@@ -17,6 +17,7 @@
         * RFC 2774: An HTTP Extension Framework
         * RFC 7725: An HTTP Status Code to Report Legal Obstacles
         * RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2)
+        * RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
         * RFC 8297: An HTTP Status Code for Indicating Hints
         * RFC 8470: Using Early Data in HTTP
     """
@@ -103,6 +104,8 @@
         'Cannot satisfy request range')
     EXPECTATION_FAILED = (417, 'Expectation Failed',
         'Expect condition could not be satisfied')
+    IM_A_TEAPOT = (418, 'I\'m a Teapot',
+        'Server refuses to brew coffee because it is a teapot.')
     MISDIRECTED_REQUEST = (421, 'Misdirected Request',
         'Server is not able to produce a response')
     UNPROCESSABLE_ENTITY = 422, 'Unprocessable Entity'
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 7f4decc..77d4335 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -1433,6 +1433,7 @@
             'UNSUPPORTED_MEDIA_TYPE',
             'REQUESTED_RANGE_NOT_SATISFIABLE',
             'EXPECTATION_FAILED',
+            'IM_A_TEAPOT',
             'MISDIRECTED_REQUEST',
             'UNPROCESSABLE_ENTITY',
             'LOCKED',
diff --git a/Misc/NEWS.d/next/Library/2020-01-31-14-24-05.bpo-39507.3oln1a.rst b/Misc/NEWS.d/next/Library/2020-01-31-14-24-05.bpo-39507.3oln1a.rst
new file mode 100644
index 0000000..6d49dab
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-01-31-14-24-05.bpo-39507.3oln1a.rst
@@ -0,0 +1 @@
+Adding HTTP status 418 "I'm a Teapot" to HTTPStatus in http library. Patch by Ross Rhodes.
\ No newline at end of file