summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2005-07-14 06:40:47 (GMT)
committerGeorg Brandl <georg@python.org>2005-07-14 06:40:47 (GMT)
commit5c5fe2f44563733cf6508566452ce26e66b80bba (patch)
treea33ece00f14e57d28e68d6bd1a88fd6448d79f74
parentc1f5fff2b7c51fd5420a4dfb8a2b1c297c993c10 (diff)
downloadcpython-5c5fe2f44563733cf6508566452ce26e66b80bba.zip
cpython-5c5fe2f44563733cf6508566452ce26e66b80bba.tar.gz
cpython-5c5fe2f44563733cf6508566452ce26e66b80bba.tar.bz2
RFE [ 1216944 ] Add Error Code Dictionary to urllib2
-rw-r--r--Doc/lib/liburllib2.tex9
-rw-r--r--Lib/test/test_urllib2.py4
-rw-r--r--Lib/urllib2.py49
-rw-r--r--Misc/NEWS3
4 files changed, 65 insertions, 0 deletions
diff --git a/Doc/lib/liburllib2.tex b/Doc/lib/liburllib2.tex
index 6f9395c..532c223 100644
--- a/Doc/lib/liburllib2.tex
+++ b/Doc/lib/liburllib2.tex
@@ -71,6 +71,15 @@ set to \code{500}.
\end{funcdesc}
+The following attribute is defined:
+
+\begin{datadesc}{httpresponses}
+A mapping between HTTP status codes and the W3C names.
+
+Example: \code{urllib2.httpresponses[404]} is \code{'Not Found'}.
+\versionadded{2.5}
+\end{datadesc}
+
The following exceptions are raised as appropriate:
\begin{excdesc}{URLError}
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index c68d244..1c0b7da 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -40,6 +40,10 @@ class TrivialTests(unittest.TestCase):
buf = f.read()
f.close()
+
+ def test_statudict(self):
+ # test the new-in-2.5 httpresponses dictionary
+ self.assertEquals(urllib2.httpresponses[404], "Not Found")
class MockOpener:
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 13c1f1e..7202507 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -1293,3 +1293,52 @@ class OpenerFactory:
if inspect.isclass(ph):
ph = ph()
opener.add_handler(ph)
+
+# Mapping status codes to official W3C names
+httpresponses = {
+ 100: 'Continue',
+ 101: 'Switching Protocols',
+
+ 200: 'OK',
+ 201: 'Created',
+ 202: 'Accepted',
+ 203: 'Non-Authoritative Information',
+ 204: 'No Content',
+ 205: 'Reset Content',
+ 206: 'Partial Content',
+
+ 300: 'Multiple Choices',
+ 301: 'Moved Permanently',
+ 302: 'Found',
+ 303: 'See Other',
+ 304: 'Not Modified',
+ 305: 'Use Proxy',
+ 306: '(Unused)',
+ 307: 'Temporary 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: 'Requested Range Not Satisfiable',
+ 417: 'Expectation Failed',
+
+ 500: 'Internal Server Error',
+ 501: 'Not Implemented',
+ 502: 'Bad Gateway',
+ 503: 'Service Unavailable',
+ 504: 'Gateway Timeout',
+ 505: 'HTTP Version Not Supported',
+}
diff --git a/Misc/NEWS b/Misc/NEWS
index 13c7761..219586f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -168,6 +168,9 @@ Extension Modules
Library
-------
+- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code
+ to W3C name (404 -> 'Not Found'). RFE #1216944.
+
- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom,
as this can cause problems with apps closing all file descriptors.