summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenthil Kumaran <senthil@uthcode.com>2012-07-07 17:11:44 -0700
committerSenthil Kumaran <senthil@uthcode.com>2012-07-07 17:11:44 -0700
commitb7451cecad01889ad56c2bc1c8b5103274fa0152 (patch)
treecf06d26cfcea2b794cdacc28fd3e0fc7b06a15b4
parent11f0b41e9de3805441ddd4142df9f6b7f4432ca7 (diff)
downloadcpython-git-b7451cecad01889ad56c2bc1c8b5103274fa0152.tar.gz
Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method.
Patch contributed by Stephen Thorne.
-rw-r--r--Lib/test/test_urllib.py5
-rw-r--r--Lib/urllib/request.py3
-rw-r--r--Misc/NEWS5
3 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index c6f6f6121f..69d543855e 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -1246,6 +1246,11 @@ class URLopener_Tests(unittest.TestCase):
# ftp.close()
+ def test_quote_url(self):
+ Request = urllib.request.Request
+ request = Request("http://www.python.org/foo bar")
+ self.assertEqual(request.full_url, "http://www.python.org/foo%20bar")
+
def test_main():
support.run_unittest(
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index d6f9f9a1bc..796b700f99 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -180,7 +180,8 @@ class Request:
def __init__(self, url, data=None, headers={},
origin_req_host=None, unverifiable=False):
# unwrap('<URL:type://host/path>') --> 'type://host/path'
- self.full_url = unwrap(url)
+ self.full_url = unwrap(to_bytes(url))
+ self.full_url = quote(self.full_url, safe="%/:=&?~#+!$,;'@()*[]|")
self.full_url, self.fragment = splittag(self.full_url)
self.data = data
self.headers = {}
diff --git a/Misc/NEWS b/Misc/NEWS
index 92131b4eb6..18d03efa49 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -87,6 +87,11 @@ Core and Builtins
Library
-------
+- Issue #14826: Quote urls in urllib.request.Request identically to how they
+ are quoted by urllib.request.URLopener. Allows urls to spaces in them to work
+ transparently with urllib.request.urlopen(...). Patch contributed by Stephen
+ Thorne.
+
- Issue #14990: Correctly fail with SyntaxError on invalid encoding
declaration.