(original) (raw)
changeset: 77986:d931a3b64fd6 branch: 2.7 parent: 77957:b90968d584c3 user: Senthil Kumaran senthil@uthcode.com date: Sat Jul 07 17:37:53 2012 -0700 files: Lib/test/test_urllib2.py Lib/urllib2.py Misc/NEWS description: Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method. Patch contributed by Stephen Thorne. diff -r b90968d584c3 -r d931a3b64fd6 Lib/test/test_urllib2.py --- a/Lib/test/test_urllib2.py Fri Jul 06 21:36:48 2012 +0200 +++ b/Lib/test/test_urllib2.py Sat Jul 07 17:37:53 2012 -0700 @@ -1325,6 +1325,12 @@ req = Request("") self.assertEqual("www.python.org", req.get_host()) + def test_quoted_full_url(self): + Request = urllib2.Request + request = Request('http://www.python.org/foo bar') + self.assertEqual(request.get_full_url(), + 'http://www.python.org/foo%20bar') + def test_url_fragment(self): req = Request("http://www.python.org/?qs=query#fragment=true") self.assertEqual("/?qs=query", req.get_selector()) diff -r b90968d584c3 -r d931a3b64fd6 Lib/urllib2.py --- a/Lib/urllib2.py Fri Jul 06 21:36:48 2012 +0200 +++ b/Lib/urllib2.py Sat Jul 07 17:37:53 2012 -0700 @@ -110,7 +110,7 @@ from StringIO import StringIO from urllib import (unwrap, unquote, splittype, splithost, quote, - addinfourl, splitport, splittag, + addinfourl, splitport, splittag, toBytes, splitattr, ftpwrapper, splituser, splitpasswd, splitvalue) # support for FileHandler, proxies via environment variables @@ -196,7 +196,8 @@ def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False): # unwrap('') --> 'type://host/path' - self.__original = unwrap(url) + self.__original = unwrap(toBytes(url)) + self.__original = quote(self.__original, safe="%/:=&?~#+!$,;'@()*[]|") self.__original, self.__fragment = splittag(self.__original) self.type = None # self.__r_type is what's left after doing the splittype diff -r b90968d584c3 -r d931a3b64fd6 Misc/NEWS --- a/Misc/NEWS Fri Jul 06 21:36:48 2012 +0200 +++ b/Misc/NEWS Sat Jul 07 17:37:53 2012 -0700 @@ -84,6 +84,11 @@ Library ------- +- Issue #14826: Quote urls in urllib2.Request identically to how they + are quoted by urllib.URLopener. Allows urls to spaces in them to work + transparently with urllib.request.urlopen(...). Patch contributed by Stephen + Thorne. + - Issue #15247: FileIO now raises an error when given a file descriptor pointing to a directory./senthil@uthcode.com