allow unicode URLs on Python 2

on Python 2 u'é'.decode('utf8') fails with UnicodeEncodeError,
but only AttributeError is caught.

This only calls decode on known bytes objects.
This commit is contained in:
MinRK
2014-10-05 16:30:11 -07:00
parent 5850b1f53b
commit ca2ebc5b68
2 changed files with 10 additions and 2 deletions
+2 -2
View File
@@ -338,9 +338,9 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin):
#: as this will include the bytestring indicator (b'')
#: on python 3.x.
#: https://github.com/kennethreitz/requests/pull/2238
try:
if isinstance(url, bytes):
url = url.decode('utf8')
except AttributeError:
else:
url = unicode(url) if is_py2 else str(url)
# Don't do any URL preparation for non-HTTP schemes like `mailto`,
+8
View File
@@ -1507,5 +1507,13 @@ def test_prepared_request_complete_copy():
)
assert_copy(p, p.copy())
def test_prepare_unicode_url():
p = PreparedRequest()
p.prepare(
method='GET',
url=u('http://www.example.com/üniçø∂é')
)
assert_copy(p, p.copy())
if __name__ == '__main__':
unittest.main()