mirror of
https://github.com/python/cpython.git
synced 2025-10-06 23:21:06 +00:00
Issue #13211: Add .reason attribute to HTTPError to implement parent class (URLError) interface.
This commit is contained in:
parent
a90e364ea5
commit
aa204dbe9c
2 changed files with 17 additions and 0 deletions
|
@ -1409,6 +1409,17 @@ class RequestTests(unittest.TestCase):
|
||||||
req = Request(url)
|
req = Request(url)
|
||||||
self.assertEqual(req.get_full_url(), url)
|
self.assertEqual(req.get_full_url(), url)
|
||||||
|
|
||||||
|
def test_HTTPError_interface():
|
||||||
|
"""
|
||||||
|
Issue 13211 reveals that HTTPError didn't implement the URLError
|
||||||
|
interface even though HTTPError is a subclass of URLError.
|
||||||
|
|
||||||
|
>>> err = urllib.error.HTTPError(msg='something bad happened', url=None, code=None, hdrs=None, fp=None)
|
||||||
|
>>> assert hasattr(err, 'reason')
|
||||||
|
>>> err.reason
|
||||||
|
'something bad happened'
|
||||||
|
"""
|
||||||
|
|
||||||
def test_main(verbose=None):
|
def test_main(verbose=None):
|
||||||
from test import test_urllib2
|
from test import test_urllib2
|
||||||
support.run_doctest(test_urllib2, verbose)
|
support.run_doctest(test_urllib2, verbose)
|
||||||
|
|
|
@ -52,6 +52,12 @@ class HTTPError(URLError, urllib.response.addinfourl):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return 'HTTP Error %s: %s' % (self.code, self.msg)
|
return 'HTTP Error %s: %s' % (self.code, self.msg)
|
||||||
|
|
||||||
|
# since URLError specifies a .reason attribute, HTTPError should also
|
||||||
|
# provide this attribute. See issue13211 for discussion.
|
||||||
|
@property
|
||||||
|
def reason(self):
|
||||||
|
return self.msg
|
||||||
|
|
||||||
# exception raised when downloaded size does not match content-length
|
# exception raised when downloaded size does not match content-length
|
||||||
class ContentTooShortError(URLError):
|
class ContentTooShortError(URLError):
|
||||||
def __init__(self, message, content):
|
def __init__(self, message, content):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue