From: Kenneth Reitz Date: Mon, 23 Apr 2012 02:26:53 +0000 (-0400) Subject: merge conflict X-Git-Tag: v0.12.0~45 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a7da521a62b248b999b856594ad68c82fac9f498;p=services%2Fpython-requests.git merge conflict --- diff --git a/requests/utils.py b/requests/utils.py index ed9ffb1..925547a 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -468,25 +468,28 @@ def stream_untransfer(gen, resp): # The unreserved URI characters (RFC 3986) -_unreserved_set = frozenset( +UNRESERVED_SET = frozenset( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789-._~") -_unreserved_hextochr = dict((c.encode('hex'), c) for c in _unreserved_set) def unquote_unreserved(uri): """Un-escape any percent-escape sequences in a URI that are unreserved characters. This leaves all reserved, illegal and non-ASCII bytes encoded. """ - res = uri.split('%') - s = res[0] - for item in res[1:]: - try: - s += _unreserved_hextochr[item[:2].lower()] + item[2:] - except (KeyError, UnicodeDecodeError): - s += '%' + item - return s + parts = uri.split('%') + for i in range(1, len(parts)): + h = parts[i][0:2] + if len(h) == 2: + c = chr(int(h, 16)) + if c in UNRESERVED_SET: + parts[i] = c + parts[i][2:] + else: + parts[i] = '%' + parts[i] + else: + parts[i] = '%' + parts[i] + return ''.join(parts) def requote_uri(uri):