diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2015-02-20 07:39:38 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2015-02-20 07:39:38 (GMT) |
commit | babc688180ac9214fcc217ef906b8d11c1babe36 (patch) | |
tree | cfb12c5f04cb23295f531d3f864ab98fd118a0d9 | |
parent | 56dee1e463d2a9962aca0c577a5782a89cce3dbb (diff) | |
download | cpython-babc688180ac9214fcc217ef906b8d11c1babe36.zip cpython-babc688180ac9214fcc217ef906b8d11c1babe36.tar.gz cpython-babc688180ac9214fcc217ef906b8d11c1babe36.tar.bz2 |
Issue #23439: Add missing entries to http.client.__all__.
Also, document the LineTooLong exception since it can be raised by
the members of public API (e.g. http.client.HTTPResponse).
Patch by Martin Panter.
-rw-r--r-- | Doc/library/http.client.rst | 6 | ||||
-rw-r--r-- | Lib/http/client.py | 4 | ||||
-rw-r--r-- | Lib/test/test_httplib.py | 15 |
3 files changed, 24 insertions, 1 deletions
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst index a3f2e35..b6e78b5 100644 --- a/Doc/library/http.client.rst +++ b/Doc/library/http.client.rst @@ -169,6 +169,12 @@ The following exceptions are raised as appropriate: status code that we don't understand. +.. exception:: LineTooLong + + A subclass of :exc:`HTTPException`. Raised if an excessively long line + is received in the HTTP protocol from the server. + + The constants defined in this module are: .. data:: HTTP_PORT diff --git a/Lib/http/client.py b/Lib/http/client.py index 6de4b0e..d3d9b30 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -74,12 +74,14 @@ import socket import collections from urllib.parse import urlsplit +# HTTPMessage, parse_headers(), and the HTTP status code constants are +# intentionally omitted for simplicity __all__ = ["HTTPResponse", "HTTPConnection", "HTTPException", "NotConnected", "UnknownProtocol", "UnknownTransferEncoding", "UnimplementedFileMode", "IncompleteRead", "InvalidURL", "ImproperConnectionState", "CannotSendRequest", "CannotSendHeader", "ResponseNotReady", - "BadStatusLine", "error", "responses"] + "BadStatusLine", "LineTooLong", "error", "responses"] HTTP_PORT = 80 HTTPS_PORT = 443 diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 3fc3466..d0a0e8d 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -708,7 +708,22 @@ class BasicTest(TestCase): self.assertTrue(response.closed) self.assertTrue(conn.sock.file_closed) + class OfflineTest(TestCase): + def test_all(self): + # Documented objects defined in the module should be in __all__ + expected = {"responses"} # White-list documented dict() object + # HTTPMessage, parse_headers(), and the HTTP status code constants are + # intentionally omitted for simplicity + blacklist = {"HTTPMessage", "parse_headers"} + for name in dir(client): + if name in blacklist: + continue + module_object = getattr(client, name) + if getattr(module_object, "__module__", None) == "http.client": + expected.add(name) + self.assertCountEqual(client.__all__, expected) + def test_responses(self): self.assertEqual(client.responses[client.NOT_FOUND], "Not Found") |