Merge pull request #766 from Lukasa/develop

Accept objects with string representations as URLs.
This commit is contained in:
Kenneth Reitz
2012-08-08 13:18:39 -07:00
2 changed files with 26 additions and 1 deletions
+8 -1
View File
@@ -71,7 +71,14 @@ class Request(object):
self.timeout = timeout
#: Request URL.
self.url = url
#: Accept objects that have string representations.
try:
self.url = unicode(url)
except NameError:
# We're on Python 3.
self.url = str(url)
except UnicodeDecodeError:
self.url = url
#: Dictionary of HTTP Headers to attach to the :class:`Request <Request>`.
self.headers = dict(headers or [])
+18
View File
@@ -996,5 +996,23 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
first_line = next(req.response.iter_lines())
self.assertTrue(first_line.strip().decode('utf-8').startswith('{'))
def test_accept_objects_with_string_representations_as_urls(self):
"""Test that URLs can be set to objects with string representations,
e.g. for use with furl."""
class URL():
def __unicode__(self):
# Can't have unicode literals in Python3, so avoid them.
# TODO: fixup when moving to Python 3.3
if (sys.version_info[0] == 2):
return 'http://httpbin.org/get'.decode('utf-8')
else:
return 'http://httpbin.org/get'
def __str__(self):
return 'http://httpbin.org/get'
r = get(URL())
self.assertEqual(r.status_code, 200)
if __name__ == '__main__':
unittest.main()