From b761e3aed1fbada4572a776f6a0d3c4be491d595 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Fri, 13 Sep 2019 08:07:07 -0600 Subject: bpo-25068: urllib.request.ProxyHandler now lowercases the dict keys (GH-13489) --- Lib/test/test_urllib2.py | 31 +++++++++++----------- Lib/urllib/request.py | 1 + .../2019-05-22-04-52-35.bpo-25068.vR_rC-.rst | 2 ++ 3 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-05-22-04-52-35.bpo-25068.vR_rC-.rst diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index c228fa7..186a967 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -1342,21 +1342,22 @@ class HandlerTests(unittest.TestCase): self.assertTrue(request.startswith(expected), repr(request)) def test_proxy(self): - o = OpenerDirector() - ph = urllib.request.ProxyHandler(dict(http="proxy.example.com:3128")) - o.add_handler(ph) - meth_spec = [ - [("http_open", "return response")] - ] - handlers = add_ordered_mock_handlers(o, meth_spec) - - req = Request("http://acme.example.com/") - self.assertEqual(req.host, "acme.example.com") - o.open(req) - self.assertEqual(req.host, "proxy.example.com:3128") - - self.assertEqual([(handlers[0], "http_open")], - [tup[0:2] for tup in o.calls]) + u = "proxy.example.com:3128" + for d in dict(http=u), dict(HTTP=u): + o = OpenerDirector() + ph = urllib.request.ProxyHandler(d) + o.add_handler(ph) + meth_spec = [ + [("http_open", "return response")] + ] + handlers = add_ordered_mock_handlers(o, meth_spec) + + req = Request("http://acme.example.com/") + self.assertEqual(req.host, "acme.example.com") + o.open(req) + self.assertEqual(req.host, u) + self.assertEqual([(handlers[0], "http_open")], + [tup[0:2] for tup in o.calls]) def test_proxy_no_proxy(self): os.environ['no_proxy'] = 'python.org' diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index 267a90d..721c152 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -792,6 +792,7 @@ class ProxyHandler(BaseHandler): assert hasattr(proxies, 'keys'), "proxies must be a mapping" self.proxies = proxies for type, url in proxies.items(): + type = type.lower() setattr(self, '%s_open' % type, lambda r, proxy=url, type=type, meth=self.proxy_open: meth(r, proxy, type)) diff --git a/Misc/NEWS.d/next/Library/2019-05-22-04-52-35.bpo-25068.vR_rC-.rst b/Misc/NEWS.d/next/Library/2019-05-22-04-52-35.bpo-25068.vR_rC-.rst new file mode 100644 index 0000000..89de83b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-22-04-52-35.bpo-25068.vR_rC-.rst @@ -0,0 +1,2 @@ +:class:`urllib.request.ProxyHandler` now lowercases the keys of the passed +dictionary. -- cgit v0.12