Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(486)

Side by Side Diff: third_party/google-endpoints/future/backports/urllib/error.py

Issue 2666783008: Add google-endpoints to third_party/. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 """Exception classes raised by urllib.
2
3 The base exception class is URLError, which inherits from IOError. It
4 doesn't define any behavior of its own, but is the base class for all
5 exceptions defined in this package.
6
7 HTTPError is an exception class that is also a valid HTTP response
8 instance. It behaves this way because HTTP protocol errors are valid
9 responses, with a status code, headers, and a body. In some contexts,
10 an application may want to handle an exception like a regular
11 response.
12 """
13 from __future__ import absolute_import, division, unicode_literals
14 from future import standard_library
15
16 from future.backports.urllib import response as urllib_response
17
18
19 __all__ = ['URLError', 'HTTPError', 'ContentTooShortError']
20
21
22 # do these error classes make sense?
23 # make sure all of the IOError stuff is overridden. we just want to be
24 # subtypes.
25
26 class URLError(IOError):
27 # URLError is a sub-type of IOError, but it doesn't share any of
28 # the implementation. need to override __init__ and __str__.
29 # It sets self.args for compatibility with other EnvironmentError
30 # subclasses, but args doesn't have the typical format with errno in
31 # slot 0 and strerror in slot 1. This may be better than nothing.
32 def __init__(self, reason, filename=None):
33 self.args = reason,
34 self.reason = reason
35 if filename is not None:
36 self.filename = filename
37
38 def __str__(self):
39 return '<urlopen error %s>' % self.reason
40
41 class HTTPError(URLError, urllib_response.addinfourl):
42 """Raised when HTTP error occurs, but also acts like non-error return"""
43 __super_init = urllib_response.addinfourl.__init__
44
45 def __init__(self, url, code, msg, hdrs, fp):
46 self.code = code
47 self.msg = msg
48 self.hdrs = hdrs
49 self.fp = fp
50 self.filename = url
51 # The addinfourl classes depend on fp being a valid file
52 # object. In some cases, the HTTPError may not have a valid
53 # file object. If this happens, the simplest workaround is to
54 # not initialize the base classes.
55 if fp is not None:
56 self.__super_init(fp, hdrs, url, code)
57
58 def __str__(self):
59 return 'HTTP Error %s: %s' % (self.code, self.msg)
60
61 # since URLError specifies a .reason attribute, HTTPError should also
62 # provide this attribute. See issue13211 for discussion.
63 @property
64 def reason(self):
65 return self.msg
66
67 def info(self):
68 return self.hdrs
69
70
71 # exception raised when downloaded size does not match content-length
72 class ContentTooShortError(URLError):
73 def __init__(self, message, content):
74 URLError.__init__(self, message)
75 self.content = content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698