diff options
author | Senthil Kumaran <senthil@uthcode.com> | 2012-07-08 00:37:53 (GMT) |
---|---|---|
committer | Senthil Kumaran <senthil@uthcode.com> | 2012-07-08 00:37:53 (GMT) |
commit | 01fe5fa8ea52ba49063d20a5044fb84efdbabe48 (patch) | |
tree | fcca35aacbafd582deff4c5c019abb3c931d3ff0 | |
parent | 5356af8c489d6760f4ad7d88f1178d3820d09999 (diff) | |
download | cpython-01fe5fa8ea52ba49063d20a5044fb84efdbabe48.zip cpython-01fe5fa8ea52ba49063d20a5044fb84efdbabe48.tar.gz cpython-01fe5fa8ea52ba49063d20a5044fb84efdbabe48.tar.bz2 |
Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method.
Patch contributed by Stephen Thorne.
-rw-r--r-- | Lib/test/test_urllib2.py | 6 | ||||
-rw-r--r-- | Lib/urllib2.py | 5 | ||||
-rw-r--r-- | Misc/NEWS | 5 |
3 files changed, 14 insertions, 2 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index fc76a6c..dd5ff8d8 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -1325,6 +1325,12 @@ class RequestTests(unittest.TestCase): req = Request("<URL:http://www.python.org>") 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 --git a/Lib/urllib2.py b/Lib/urllib2.py index d4596cd..944f622 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -110,7 +110,7 @@ except ImportError: 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 @@ class Request: def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False): # unwrap('<URL:type://host/path>') --> '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 @@ -84,6 +84,11 @@ Core and Builtins 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. |