[Jython-checkins] jython (merge default -> default): Merge urllib changes

darjus.loktevic jython-checkins at python.org
Thu Dec 10 21:10:58 EST 2015


https://hg.python.org/jython/rev/e651cb65609b
changeset:   7829:e651cb65609b
parent:      7828:1df0ae17b03f
parent:      7825:23f2c16b9dc7
user:        Darjus Loktevic <darjus at gmail.com>
date:        Fri Dec 11 13:10:38 2015 +1100
summary:
  Merge urllib changes

files:
  Lib/urllib.py |  35 ++++++++++++++---------------------
  1 files changed, 14 insertions(+), 21 deletions(-)


diff --git a/Lib/urllib.py b/Lib/urllib.py
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -1224,31 +1224,24 @@
 
 def unquote(s):
     """unquote('abc%20def') -> 'abc def'."""
-    if _is_unicode(s):
-        if '%' not in s:
-            return s
-        bits = _asciire.split(s)
-        res = [bits[0]]
-        append = res.append
-        for i in range(1, len(bits), 2):
-            append(unquote(str(bits[i])).decode('latin1'))
-            append(bits[i + 1])
-        return ''.join(res)
-
-    bits = s.split('%')
+    res = s.split('%')
     # fastpath
-    if len(bits) == 1:
+    if len(res) == 1:
         return s
-    res = [bits[0]]
-    append = res.append
-    for item in bits[1:]:
+    buf = [res[0]]
+    is_unicode = isinstance(s, unicode)
+    for item in res[1:]:
         try:
-            append(_hextochr[item[:2]])
-            append(item[2:])
+            if is_unicode:
+                buf.append(unichr(int(item[:2], 16)))
+                buf.append(item[2:])
+            else:
+                buf.append(_hextochr[item[:2]])
+                buf.append(item[2:])
         except KeyError:
-            append('%')
-            append(item)
-    return ''.join(res)
+            buf.append('%')
+            buf.append(item)
+    return ''.join(buf)
 
 def unquote_plus(s):
     """unquote('%7e/abc+def') -> '~/abc def'"""

-- 
Repository URL: https://hg.python.org/jython


More information about the Jython-checkins mailing list