gh-98778: Update HTTPError to initialize properly even if fp is None (gh-99966)

(cherry picked from commit dc8a86893d)

Co-authored-by: Dong-hee Na <donghee.na@python.org>
This commit is contained in:
Miss Islington (bot) 2022-12-07 20:17:23 -08:00 committed by GitHub
parent 2997f3913a
commit 846898e5ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 7 deletions

View file

@ -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)