mirror of https://github.com/python/cpython
gh-98778: Update HTTPError to initialize properly even if fp is None (gh-99966)
This commit is contained in:
parent
3c89202247
commit
dc8a86893d
|
@ -1824,6 +1824,10 @@ class MiscTests(unittest.TestCase):
|
|||
expected_errmsg = '<HTTPError %s: %r>' % (err.code, err.msg)
|
||||
self.assertEqual(repr(err), expected_errmsg)
|
||||
|
||||
def test_gh_98778(self):
|
||||
x = urllib.error.HTTPError("url", 405, "METHOD NOT ALLOWED", None, None)
|
||||
self.assertEqual(getattr(x, "__notes__", ()), ())
|
||||
|
||||
def test_parse_proxy(self):
|
||||
parse_proxy_test_cases = [
|
||||
('proxy.example.com',
|
||||
|
|
|
@ -10,7 +10,7 @@ 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 io
|
||||
import urllib.response
|
||||
|
||||
__all__ = ['URLError', 'HTTPError', 'ContentTooShortError']
|
||||
|
@ -42,12 +42,9 @@ class HTTPError(URLError, urllib.response.addinfourl):
|
|||
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)
|
||||
if fp is None:
|
||||
fp = io.StringIO()
|
||||
self.__super_init(fp, hdrs, url, code)
|
||||
|
||||
def __str__(self):
|
||||
return 'HTTP Error %s: %s' % (self.code, self.msg)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Update :exc:`~urllib.error.HTTPError` to be initialized properly, even if
|
||||
the ``fp`` is ``None``. Patch by Dong-hee Na.
|
Loading…
Reference in New Issue