[Python-checkins] cpython (3.2): Fix issue14826 - make urllib.request.Request quoted url consistent with

senthil.kumaran python-checkins at python.org
Sun Jul 8 02:15:04 CEST 2012


http://hg.python.org/cpython/rev/01c8d800efd2
changeset:   77984:01c8d800efd2
branch:      3.2
parent:      77961:5020afc0b7c9
user:        Senthil Kumaran <senthil at uthcode.com>
date:        Sat Jul 07 17:11:44 2012 -0700
summary:
  Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method.
Patch contributed by Stephen Thorne.

files:
  Lib/test/test_urllib.py |  5 +++++
  Lib/urllib/request.py   |  3 ++-
  Misc/NEWS               |  5 +++++
  3 files changed, 12 insertions(+), 1 deletions(-)


diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -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 --git a/Lib/urllib/request.py b/Lib/urllib/request.py
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -180,7 +180,8 @@
     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
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list