Commit 5c5fe2f4 authored by Georg Brandl's avatar Georg Brandl

RFE [ 1216944 ] Add Error Code Dictionary to urllib2

parent c1f5fff2
...@@ -71,6 +71,15 @@ set to \code{500}. ...@@ -71,6 +71,15 @@ set to \code{500}.
\end{funcdesc} \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: The following exceptions are raised as appropriate:
\begin{excdesc}{URLError} \begin{excdesc}{URLError}
......
...@@ -40,6 +40,10 @@ class TrivialTests(unittest.TestCase): ...@@ -40,6 +40,10 @@ class TrivialTests(unittest.TestCase):
buf = f.read() buf = f.read()
f.close() f.close()
def test_statudict(self):
# test the new-in-2.5 httpresponses dictionary
self.assertEquals(urllib2.httpresponses[404], "Not Found")
class MockOpener: class MockOpener:
......
...@@ -1293,3 +1293,52 @@ class OpenerFactory: ...@@ -1293,3 +1293,52 @@ class OpenerFactory:
if inspect.isclass(ph): if inspect.isclass(ph):
ph = ph() ph = ph()
opener.add_handler(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',
}
...@@ -168,6 +168,9 @@ Extension Modules ...@@ -168,6 +168,9 @@ Extension Modules
Library 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, - Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom,
as this can cause problems with apps closing all file descriptors. as this can cause problems with apps closing all file descriptors.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment