PythonCharmers/python-future

urllib.parse.unquote may return bytes

Open

#431 opened on Jan 21, 2019

View on GitHub
 (1 comment) (0 reactions) (1 assignee)Python (1,172 stars) (327 forks)batch import
0.19help wanted

Description

In Py3, unquote does not accept bytes: the first line if '%' not in string would throw exception.

However, in Py2, that line will not throw exception and perform the checking.

When there's no %, the return value is the argument. That is, when the argument type is bytes, the return value is bytes, too.

Code snippet excerption from src/future/backports/urllib/parse.py#L515:

def unquote(string):
  if '%' not in string:
    string.split
    return string      # bytes or unicode, depends on argument; Py3 never reach here
  ...
  return ''.join(res)  # unicode

Contributor guide