From 5c5fe2f44563733cf6508566452ce26e66b80bba Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 14 Jul 2005 06:40:47 +0000 Subject: RFE [ 1216944 ] Add Error Code Dictionary to urllib2 --- Doc/lib/liburllib2.tex | 9 +++++++++ Lib/test/test_urllib2.py | 4 ++++ Lib/urllib2.py | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ Misc/NEWS | 3 +++ 4 files changed, 65 insertions(+) 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. -- cgit v0.12