(original) (raw)
changeset: 77984:01c8d800efd2 branch: 3.2 parent: 77961:5020afc0b7c9 user: Senthil Kumaran senthil@uthcode.com date: Sat Jul 07 17:11:44 2012 -0700 files: Lib/test/test_urllib.py Lib/urllib/request.py Misc/NEWS description: Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method. Patch contributed by Stephen Thorne. diff -r 5020afc0b7c9 -r 01c8d800efd2 Lib/test/test_urllib.py --- a/Lib/test/test_urllib.py Sat Jul 07 12:13:35 2012 +0200 +++ b/Lib/test/test_urllib.py Sat Jul 07 17:11:44 2012 -0700 @@ -1246,6 +1246,11 @@ # 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 -r 5020afc0b7c9 -r 01c8d800efd2 Lib/urllib/request.py --- a/Lib/urllib/request.py Sat Jul 07 12:13:35 2012 +0200 +++ b/Lib/urllib/request.py Sat Jul 07 17:11:44 2012 -0700 @@ -180,7 +180,8 @@ def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False): # unwrap('') --> '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 -r 5020afc0b7c9 -r 01c8d800efd2 Misc/NEWS --- a/Misc/NEWS Sat Jul 07 12:13:35 2012 +0200 +++ b/Misc/NEWS Sat Jul 07 17:11:44 2012 -0700 @@ -87,6 +87,11 @@ 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./senthil@uthcode.com