]> granicus.if.org Git - python/commitdiff
Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener...
authorSenthil Kumaran <senthil@uthcode.com>
Sun, 8 Jul 2012 00:11:44 +0000 (17:11 -0700)
committerSenthil Kumaran <senthil@uthcode.com>
Sun, 8 Jul 2012 00:11:44 +0000 (17:11 -0700)
Patch contributed by Stephen Thorne.

Lib/test/test_urllib.py
Lib/urllib/request.py
Misc/NEWS

index c6f6f6121f37823a59a7799746ed4c9039c4421d..69d543855e5cf8f004704f16be58c5bb323f49e8 100644 (file)
@@ -1246,6 +1246,11 @@ class URLopener_Tests(unittest.TestCase):
 #         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(
index d6f9f9a1bcaa8efc186d9499da9fb781eed84068..796b700f99b663c7be688a7407b045583812cdc0 100644 (file)
@@ -180,7 +180,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.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 = {}
index 92131b4eb64234123ad1d10a08915b8b2223d4b6..18d03efa494c2932a373a937ba8aff5ebd06a1d5 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -87,6 +87,11 @@ Core and Builtins
 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.