Download lib/python3.9/urllib/error.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 2.63 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/urllib/error.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/urllib/error.py
-
curl -L -o error.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/urllib/error.py
2.63 kB
| """Exception classes raised by urllib. | |
| The base exception class is URLError, which inherits from OSError. It | |
| doesn't define any behavior of its own, but is the base class for all | |
| exceptions defined in this package. | |
| HTTPError is an exception class that is also a valid HTTP response | |
| instance. It behaves this way because HTTP protocol errors are valid | |
| responses, with a status code, headers, and a body. In some contexts, | |
| an application may want to handle an exception like a regular | |
| response. | |
| """ | |
| import urllib.response | |
| __all__ = ['URLError', 'HTTPError', 'ContentTooShortError'] | |
| class URLError(OSError): | |
| # URLError is a sub-type of OSError, but it doesn't share any of | |
| # the implementation. need to override __init__ and __str__. | |
| # It sets self.args for compatibility with other OSError | |
| # subclasses, but args doesn't have the typical format with errno in | |
| # slot 0 and strerror in slot 1. This may be better than nothing. | |
| def __init__(self, reason, filename=None): | |
| self.args = reason, | |
| self.reason = reason | |
| if filename is not None: | |
| self.filename = filename | |
| def __str__(self): | |
| return '<urlopen error %s>' % self.reason | |
| class HTTPError(URLError, urllib.response.addinfourl): | |
| """Raised when HTTP error occurs, but also acts like non-error return""" | |
| __super_init = urllib.response.addinfourl.__init__ | |
| def __init__(self, url, code, msg, hdrs, fp): | |
| self.code = code | |
| self.msg = msg | |
| self.hdrs = hdrs | |
| self.fp = fp | |
| self.filename = url | |
| # The addinfourl classes depend on fp being a valid file | |
| # object. In some cases, the HTTPError may not have a valid | |
| # file object. If this happens, the simplest workaround is to | |
| # not initialize the base classes. | |
| if fp is not None: | |
| self.__super_init(fp, hdrs, url, code) | |
| def __str__(self): | |
| return 'HTTP Error %s: %s' % (self.code, self.msg) | |
| def __repr__(self): | |
| return '<HTTPError %s: %r>' % (self.code, self.msg) | |
| # since URLError specifies a .reason attribute, HTTPError should also | |
| # provide this attribute. See issue13211 for discussion. | |
| def reason(self): | |
| return self.msg | |
| def headers(self): | |
| return self.hdrs | |
| def headers(self, headers): | |
| self.hdrs = headers | |
| class ContentTooShortError(URLError): | |
| """Exception raised when downloaded size does not match content-length.""" | |
| def __init__(self, message, content): | |
| URLError.__init__(self, message) | |
| self.content = content | |