From 01fe5fa8ea52ba49063d20a5044fb84efdbabe48 Mon Sep 17 00:00:00 2001 From: Senthil Kumaran Date: Sat, 7 Jul 2012 17:37:53 -0700 Subject: [PATCH] Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method. Patch contributed by Stephen Thorne. --- Lib/test/test_urllib2.py | 6 ++++++ Lib/urllib2.py | 5 +++-- 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 fc76a6ccb9..dd5ff8d8a5 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -1325,6 +1325,12 @@ class RequestTests(unittest.TestCase): 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 --git a/Lib/urllib2.py b/Lib/urllib2.py index d4596cdf57..944f6223b8 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('') --> '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 --git a/Misc/NEWS b/Misc/NEWS index c5e2e92737..7e6dadd73a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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. -- 2.50.0