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 (327 forks)batch import
0.19help wanted

Repository metrics

Stars
 (1,172 stars)
PR merge metrics
 (No merged PRs in 30d)

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