2014-03-03 11:57:29-0500 [HTTPChannel,0,127.0.0.1] Unhandled Error
Traceback (most recent call last):
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/web/server.py", line 238, in render
body = resrc.render(self)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/klein/resource.py", line 111, in render
d = defer.maybeDeferred(_execute)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/internet/defer.py", line 139, in maybeDeferred
result = f(*args, **kw)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/klein/resource.py", line 105, in _execute
**kwargs)
--- <exception caught here> ---
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/internet/defer.py", line 139, in maybeDeferred
result = f(*args, **kw)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/klein/app.py", line 87, in execute_endpoint
return endpoint_f(self._instance, *args, **kwargs)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/klein/app.py", line 172, in _f
return _call(instance, f, request, *a, **kw)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/klein/app.py", line 27, in _call
return f(*args, **kwargs)
File "/Users/dstufft/projects/smuggler/smuggler.py", line 15, in hello
d = treq.get(url)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/treq/api.py", line 20, in get
return _client(**kwargs).get(url, headers=headers, **kwargs)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/treq/client.py", line 79, in get
return self.request('GET', url, **kwargs)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/treq/client.py", line 129, in request
method, url, headers=headers, bodyProducer=bodyProducer)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/web/client.py", line 1584, in request
deferred = self._agent.request(method, uri, headers, bodyProducer)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/web/client.py", line 1652, in request
deferred = self._agent.request(method, uri, headers, bodyProducer)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/web/client.py", line 1282, in request
parsedURI = _URI.fromBytes(uri)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/web/client.py", line 598, in fromBytes
scheme, netloc, path, params, query, fragment = http.urlparse(uri)
File "/Users/dstufft/.virtualenvs/smuggler/lib/python2.7/site-packages/twisted/web/http.py", line 161, in urlparse
raise TypeError("url must be bytes, not unicode")
exceptions.TypeError: url must be bytes, not unicode
This should mimic what requests does, which is encode the host with idna, and then encode everything with utf8. This will work in the vast bulk of situations, and in situations it won't people can still pass in bytes.