summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2015-02-20 07:45:05 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2015-02-20 07:45:05 (GMT)
commit8e286794173376350dfdf7d99ac688b1827a38a3 (patch)
treef5fbb319f6cef0a8ab43530ff3b763a361166b2a
parent868a5a7bc65a4b76a8e7d5d0d60a158f3da27a89 (diff)
parentbabc688180ac9214fcc217ef906b8d11c1babe36 (diff)
downloadcpython-8e286794173376350dfdf7d99ac688b1827a38a3.zip
cpython-8e286794173376350dfdf7d99ac688b1827a38a3.tar.gz
cpython-8e286794173376350dfdf7d99ac688b1827a38a3.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.rst6
-rw-r--r--Lib/http/client.py4
-rw-r--r--Lib/test/test_httplib.py15
3 files changed, 24 insertions, 1 deletions
diff --git a/Doc/library/http.client.rst b/Doc/library/http.client.rst
index b495f41..5e27a36 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 a77e501..5e12a85 100644
--- a/Lib/http/client.py
+++ b/Lib/http/client.py
@@ -75,12 +75,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 40ef250..088bf73 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -920,7 +920,22 @@ class Readliner:
self.remainder = b"".join(data)
raise
+
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")