Fixed URI re-encoding on Python 3 (Issue #369).

Request.full_url now performs requoting of the path (like it does in Python 2).
Request.path_url no longer quotes the already-quoted path (double quoting).
Fixed utils.requote_path so it works properly in Python 3.
This commit is contained in:
Matt Giuca
2012-02-14 11:50:02 +11:00
parent 329efcae6e
commit cf54f60367
2 changed files with 4 additions and 7 deletions
+1 -4
View File
@@ -324,7 +324,7 @@ class Request(object):
if isinstance(path, str):
path = path.encode('utf-8')
path = requote_path(path)
path = requote_path(path)
url = (urlunparse([ scheme, netloc, path, params, query, fragment ]))
@@ -352,9 +352,6 @@ class Request(object):
if not path:
path = '/'
if is_py3:
path = quote(path.encode('utf-8'))
url.append(path)
query = p.query
+3 -3
View File
@@ -403,6 +403,6 @@ def requote_path(path):
This function passes the given path through an unquote/quote cycle to
ensure that it is fully and consistently quoted.
"""
parts = path.split(b"/")
parts = (quote(unquote(part), safe=b"") for part in parts)
return b"/".join(parts)
parts = path.split("/")
parts = (quote(unquote(part), safe="") for part in parts)
return "/".join(parts)