Index: urllib.py =================================================================== --- urllib.py (revision 62222) +++ urllib.py (working copy) @@ -27,6 +27,7 @@ import os import time import sys +import re from urlparse import urljoin as basejoin __all__ = ["urlopen", "URLopener", "FancyURLopener", "urlretrieve", @@ -1175,6 +1176,7 @@ 'abcdefghijklmnopqrstuvwxyz' '0123456789' '_.-') _safemaps = {} +_must_quote = {} def quote(s, safe = '/'): """quote('abc def') -> 'abc%20def' @@ -1200,8 +1202,11 @@ cachekey = (safe, always_safe) try: safe_map = _safemaps[cachekey] + if not _must_quote[cachekey].search(s): + return s except KeyError: safe += always_safe + _must_quote[cachekey] = re.compile(r'[^%s]' % safe) safe_map = {} for i in range(256): c = chr(i)