Skip to content

Commit b761e3a

Browse files
ZackerySpytzmatrixise
authored andcommitted
bpo-25068: urllib.request.ProxyHandler now lowercases the dict keys (GH-13489)
1 parent 693aa80 commit b761e3a

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

Lib/test/test_urllib2.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,21 +1342,22 @@ def http_open(self, req):
13421342
self.assertTrue(request.startswith(expected), repr(request))
13431343

13441344
def test_proxy(self):
1345-
o = OpenerDirector()
1346-
ph = urllib.request.ProxyHandler(dict(http="proxy.example.com:3128"))
1347-
o.add_handler(ph)
1348-
meth_spec = [
1349-
[("http_open", "return response")]
1350-
]
1351-
handlers = add_ordered_mock_handlers(o, meth_spec)
1352-
1353-
req = Request("http://acme.example.com/")
1354-
self.assertEqual(req.host, "acme.example.com")
1355-
o.open(req)
1356-
self.assertEqual(req.host, "proxy.example.com:3128")
1357-
1358-
self.assertEqual([(handlers[0], "http_open")],
1359-
[tup[0:2] for tup in o.calls])
1345+
u = "proxy.example.com:3128"
1346+
for d in dict(http=u), dict(HTTP=u):
1347+
o = OpenerDirector()
1348+
ph = urllib.request.ProxyHandler(d)
1349+
o.add_handler(ph)
1350+
meth_spec = [
1351+
[("http_open", "return response")]
1352+
]
1353+
handlers = add_ordered_mock_handlers(o, meth_spec)
1354+
1355+
req = Request("http://acme.example.com/")
1356+
self.assertEqual(req.host, "acme.example.com")
1357+
o.open(req)
1358+
self.assertEqual(req.host, u)
1359+
self.assertEqual([(handlers[0], "http_open")],
1360+
[tup[0:2] for tup in o.calls])
13601361

13611362
def test_proxy_no_proxy(self):
13621363
os.environ['no_proxy'] = 'python.org'

Lib/urllib/request.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,7 @@ def __init__(self, proxies=None):
792792
assert hasattr(proxies, 'keys'), "proxies must be a mapping"
793793
self.proxies = proxies
794794
for type, url in proxies.items():
795+
type = type.lower()
795796
setattr(self, '%s_open' % type,
796797
lambda r, proxy=url, type=type, meth=self.proxy_open:
797798
meth(r, proxy, type))
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
:class:`urllib.request.ProxyHandler` now lowercases the keys of the passed
2+
dictionary.

0 commit comments

Comments
 (0)