Skip to content

Instantly share code, notes, and snippets.

@asvetlov
Created January 9, 2016 19:24
Show Gist options
  • Save asvetlov/791ea2ba50c8b60c258b to your computer and use it in GitHub Desktop.
Save asvetlov/791ea2ba50c8b60c258b to your computer and use it in GitHub Desktop.
Elpy Error
The backend encountered an unexpected error. This indicates a bug in
Elpy. Please open a bug report with the data below in the Elpy bug
tracker:
https://github.com/jorgenschaefer/elpy/issues/new
```
Error Message
Configuration
Virtualenv........: None
RPC Python........: 3.4.4 (/usr/bin/python3)
Interactive Python: ipython3 (/home/andrew/.local/bin/ipython3)
Emacs.............: 24.3.1
Elpy..............: 1.10.0
Jedi..............: 0.9.0
Rope..............: Not found (0.10.3 available)
Importmagic.......: 0.1.3
Autopep8..........: 0.1.3
Syntax checker....: flake8 (/home/andrew/.local/bin/flake8)
Traceback
Traceback (most recent call last):
File "/home/andrew/.emacs.d/elpa/elpy-20151101.401/elpy/jedibackend.py", line 227, in run_with_debug
return getattr(script, name)()
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 188, in completions
completion_names = get_completions(user_stmt, b)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 174, in get_completions
completion_names += self._simple_complete(path, dot, like)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 250, in _simple_complete
scopes = list(self._prepare_goto(path, True))
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 294, in _prepare_goto
scopes = self._evaluator.eval_element(eval_stmt)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 169, in eval_element
return self._eval_atom(element)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 230, in _eval_atom
return self.find_types(scope, atom, stmt.start_pos, search_global=True)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 120, in find_types
return f.find(scopes, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 87, in find
types = self._names_to_types(names, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 233, in _names_to_types
new_types = _name_to_types(self._evaluator, name, self.scope)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 278, in _name_to_types
types += _remove_statements(evaluator, typ, name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 323, in _remove_statements
types += evaluator.eval_statement(stmt, seek_name=name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/recursion.py", line 23, in run
result = func(evaluator, stmt, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 135, in eval_statement
types = self.eval_element(stmt.get_rhs())
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 183, in eval_element
types = self._eval_atom(element.children[0])
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 230, in _eval_atom
return self.find_types(scope, atom, stmt.start_pos, search_global=True)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 120, in find_types
return f.find(scopes, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 87, in find
types = self._names_to_types(names, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 233, in _names_to_types
new_types = _name_to_types(self._evaluator, name, self.scope)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 278, in _name_to_types
types += _remove_statements(evaluator, typ, name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 323, in _remove_statements
types += evaluator.eval_statement(stmt, seek_name=name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/recursion.py", line 23, in run
result = func(evaluator, stmt, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 135, in eval_statement
types = self.eval_element(stmt.get_rhs())
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 212, in eval_element
return precedence.calculate_children(self, element.children)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/precedence.py", line 45, in calculate_children
right = next(iterator)
StopIteration
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/andrew/.emacs.d/elpa/elpy-20151101.401/elpy/jedibackend.py", line 341, in run_with_debug
return getattr(script, name)()
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 188, in completions
completion_names = get_completions(user_stmt, b)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 174, in get_completions
completion_names += self._simple_complete(path, dot, like)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 250, in _simple_complete
scopes = list(self._prepare_goto(path, True))
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/api/__init__.py", line 294, in _prepare_goto
scopes = self._evaluator.eval_element(eval_stmt)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 169, in eval_element
return self._eval_atom(element)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 230, in _eval_atom
return self.find_types(scope, atom, stmt.start_pos, search_global=True)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 120, in find_types
return f.find(scopes, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 87, in find
types = self._names_to_types(names, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 233, in _names_to_types
new_types = _name_to_types(self._evaluator, name, self.scope)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 278, in _name_to_types
types += _remove_statements(evaluator, typ, name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 323, in _remove_statements
types += evaluator.eval_statement(stmt, seek_name=name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/recursion.py", line 23, in run
result = func(evaluator, stmt, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 135, in eval_statement
types = self.eval_element(stmt.get_rhs())
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 183, in eval_element
types = self._eval_atom(element.children[0])
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 230, in _eval_atom
return self.find_types(scope, atom, stmt.start_pos, search_global=True)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 120, in find_types
return f.find(scopes, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 87, in find
types = self._names_to_types(names, search_global)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 233, in _names_to_types
new_types = _name_to_types(self._evaluator, name, self.scope)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 278, in _name_to_types
types += _remove_statements(evaluator, typ, name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/finder.py", line 323, in _remove_statements
types += evaluator.eval_statement(stmt, seek_name=name)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/recursion.py", line 23, in run
result = func(evaluator, stmt, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/debug.py", line 52, in wrapper
result = func(*args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 135, in eval_statement
types = self.eval_element(stmt.get_rhs())
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/cache.py", line 41, in wrapper
rv = function(obj, *args, **kwargs)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/__init__.py", line 212, in eval_element
return precedence.calculate_children(self, element.children)
File "/home/andrew/.local/lib/python3.4/site-packages/jedi/evaluate/precedence.py", line 45, in calculate_children
right = next(iterator)
StopIteration
Jedi Debug Information
[N] dbg: While parsing '/home/andrew/projects/aiohttp/tests/test_client_functional.py', line 258 slowed down the fast parser.
[N] dbg: While parsing '/home/andrew/projects/aiohttp/tests/test_client_functional.py', line 265 slowed down the fast parser.
[N] dbg: While parsing '/home/andrew/projects/aiohttp/tests/test_client_functional.py', line 283 slowed down the fast parser.
[N] dbg: While parsing '/home/andrew/projects/aiohttp/tests/test_client_functional.py', line 290 slowed down the fast parser.
[N] dbg: Parsed /home/andrew/projects/aiohttp/tests/test_client_functional.py, with 6 parsers in 65 splits.
[W] warning: No statement under the cursor.
[N] dbg: start: 'resp' in <Function: test_raw_headers@405-415>
[N] dbg: eval_element <Name: resp@414,16>@(414, 16)
[N] dbg: finder.filter_name "<Name: resp@414,16>" in (<eFunction of <Function: test_raw_headers@405-415>>): '[<Name: resp@412,4>]'@(414, 16)
[N] dbg: eval_statement <ExprStmt: resp = client.get('/')@412,4> (<Name: resp@412,4>)
[N] dbg: eval_element Node(power, [<Name: client@412,11>, Node(trailer, [<Operator: .>, <Name: get@412,18>]), Node(trailer, [<Operator: (>, <String: '/'>, <Operator: )>])])@(412, 11)
[N] dbg: finder.filter_name "<Name: client@412,11>" in (<eFunction of <Function: test_raw_headers@405-415>>): '[<Name: client@410,9>]'@(412, 4)
[N] dbg: eval_statement <ExprStmt: app, client = yield from create_app_and_client()@410,4> (<Name: client@410,9>)
[N] dbg: eval_element <YieldExpr: yield from create_app_and_client()@410,18>@(410, 18)
[N] dbg: eval_element <Keyword: yield>@(410, 18)
```
Reproduction:
```Python
import jedi
source = '''\
"""Http client functional tests against aiohttp.web server"""
import aiohttp
import asyncio
import io
import os
import os.path
import pytest
import ssl
from aiohttp import hdrs, web
from aiohttp.errors import FingerprintMismatch
@pytest.fixture
def ssl_ctx():
here = os.path.dirname(__file__)
ssl_ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ssl_ctx.load_cert_chain(
os.path.join(here, 'sample.crt'),
os.path.join(here, 'sample.key'))
return ssl_ctx
@pytest.mark.run_loop
def test_keepalive_two_requests_success(create_app_and_client):
@asyncio.coroutine
def handler(request):
body = yield from request.read()
assert b'' == body
return web.Response(body=b'OK')
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp1 = yield from client.get('/')
yield from resp1.read()
resp2 = yield from client.get('/')
yield from resp2.read()
assert 1 == len(client._session.connector._conns)
@pytest.mark.run_loop
def test_keepalive_response_released(create_app_and_client):
@asyncio.coroutine
def handler(request):
body = yield from request.read()
assert b'' == body
return web.Response(body=b'OK')
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp1 = yield from client.get('/')
yield from resp1.release()
resp2 = yield from client.get('/')
yield from resp2.release()
assert 1 == len(client._session.connector._conns)
@pytest.mark.run_loop
def test_keepalive_server_force_close_connection(create_app_and_client):
@asyncio.coroutine
def handler(request):
body = yield from request.read()
assert b'' == body
response = web.Response(body=b'OK')
response.force_close()
return response
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp1 = yield from client.get('/')
resp1.close()
resp2 = yield from client.get('/')
resp2.close()
assert 0 == len(client._session.connector._conns)
@pytest.mark.run_loop
def test_HTTP_304(create_app_and_client):
@asyncio.coroutine
def handler(request):
body = yield from request.read()
assert b'' == body
return web.Response(status=304)
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/')
assert resp.status == 304
content = yield from resp.read()
assert content == b''
@pytest.mark.run_loop
def test_HTTP_304_WITH_BODY(create_app_and_client):
@asyncio.coroutine
def handler(request):
body = yield from request.read()
assert b'' == body
return web.Response(body=b'test', status=304)
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/')
assert resp.status == 304
content = yield from resp.read()
assert content == b''
@pytest.mark.run_loop
def test_auto_header_user_agent(create_app_and_client):
@asyncio.coroutine
def handler(request):
assert 'aiohttp' in request.headers['user-agent']
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/')
try:
assert 200, resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_skip_auto_headers_user_agent(create_app_and_client):
@asyncio.coroutine
def handler(request):
assert hdrs.USER_AGENT not in request.headers
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/',
skip_auto_headers=['user-agent'])
try:
assert 200 == resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_skip_default_auto_headers_user_agent(create_app_and_client):
@asyncio.coroutine
def handler(request):
assert hdrs.USER_AGENT not in request.headers
return web.Response()
app, client = yield from create_app_and_client(client_params=dict(
skip_auto_headers=['user-agent']))
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/')
try:
assert 200 == resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_skip_auto_headers_content_type(create_app_and_client):
@asyncio.coroutine
def handler(request):
assert hdrs.CONTENT_TYPE not in request.headers
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/',
skip_auto_headers=['content-type'])
try:
assert 200 == resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_post_data_bytesio(create_app_and_client):
data = b'some buffer'
@asyncio.coroutine
def handler(request):
assert len(data) == request.content_length
val = yield from request.read()
assert data == val
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('POST', '/', handler)
resp = yield from client.post('/', data=io.BytesIO(data))
try:
assert 200 == resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_post_data_with_bytesio_file(create_app_and_client):
data = b'some buffer'
@asyncio.coroutine
def handler(request):
post_data = yield from request.post()
assert ['file'] == list(post_data.keys())
assert data == post_data['file'].file.read()
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('POST', '/', handler)
resp = yield from client.post('/', data={'file': io.BytesIO(data)})
try:
assert 200 == resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_client_ssl(create_app_and_client, loop, ssl_ctx):
connector = aiohttp.TCPConnector(verify_ssl=False, loop=loop)
@asyncio.coroutine
def handler(request):
return web.HTTPOk(text='Test message')
app, client = yield from create_app_and_client(
server_params=dict(ssl_ctx=ssl_ctx),
client_params=dict(connector=connector))
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/')
try:
assert 200 == resp.status
txt = yield from resp.text()
assert txt == 'Test message'
finally:
yield from resp.release()
@pytest.mark.parametrize('fingerprint', [
b'\xa2\x06G\xad\xaa\xf5\xd8\\J\x99^by;\x06=',
b's\x93\xfd:\xed\x08\x1do\xa9\xaeq9\x1a\xe3\xc5\x7f\x89\xe7l\xf9',
b'0\x9a\xc9D\x83\xdc\x91\'\x88\x91\x11\xa1d\x97\xfd\xcb~7U\x14D@L'
b'\x11\xab\x99\xa8\xae\xb7\x14\xee\x8b'],
ids=['md5', 'sha1', 'sha256'])
@pytest.mark.run_loop
def test_tcp_connector_fingerprint_ok(create_app_and_client,
loop, ssl_ctx, fingerprint):
@asyncio.coroutine
def handler(request):
return web.HTTPOk(text='Test message')
connector = aiohttp.TCPConnector(loop=loop, verify_ssl=False,
fingerprint=fingerprint)
app, client = yield from create_app_and_client(
server_params=dict(ssl_ctx=ssl_ctx),
client_params=dict(connector=connector))
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/')
assert resp.status == 200
resp.close()
@pytest.mark.parametrize('fingerprint', [
b'\xa2\x06G\xad\xaa\xf5\xd8\\J\x99^by;\x06=',
b's\x93\xfd:\xed\x08\x1do\xa9\xaeq9\x1a\xe3\xc5\x7f\x89\xe7l\xf9',
b'0\x9a\xc9D\x83\xdc\x91\'\x88\x91\x11\xa1d\x97\xfd\xcb~7U\x14D@L'
b'\x11\xab\x99\xa8\xae\xb7\x14\xee\x8b'],
ids=['md5', 'sha1', 'sha256'])
@pytest.mark.run_loop
def test_tcp_connector_fingerprint_fail(create_app_and_client,
loop, ssl_ctx, fingerprint):
@asyncio.coroutine
def handler(request):
return web.HTTPOk(text='Test message')
bad_fingerprint = b'\x00' * len(fingerprint)
connector = aiohttp.TCPConnector(loop=loop, verify_ssl=False,
fingerprint=bad_fingerprint)
app, client = yield from create_app_and_client(
server_params=dict(ssl_ctx=ssl_ctx),
client_params=dict(connector=connector))
app.router.add_route('GET', '/', handler)
with pytest.raises(FingerprintMismatch) as cm:
yield from client.get('/')
exc = cm.value
assert exc.expected == bad_fingerprint
assert exc.got == fingerprint
@pytest.mark.run_loop
def test_format_task_get(create_server, loop):
@asyncio.coroutine
def handler(request):
return web.Response(body=b'OK')
app, url = yield from create_server()
app.router.add_route('GET', '/', handler)
client = aiohttp.ClientSession(loop=loop)
task = loop.create_task(client.get(url))
assert "{}".format(task)[:18] == "<Task pending coro"
yield from task
@pytest.mark.run_loop
def test_str_params(create_app_and_client):
@asyncio.coroutine
def handler(request):
assert 'q=t+est' in request.query_string
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from client.get('/', params='q=t+est')
try:
assert 200 == resp.status
finally:
yield from resp.release()
@pytest.mark.run_loop
def test_history(create_app_and_client):
@asyncio.coroutine
def handler_redirect(request):
return web.Response(status=301, headers={'Location': '/ok'})
@asyncio.coroutine
def handler_ok(request):
return web.Response(status=200)
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/ok', handler_ok)
app.router.add_route('GET', '/redirect', handler_redirect)
resp = yield from client.get('/ok')
try:
assert len(resp.history) == 0
assert resp.status == 200
finally:
resp.release()
resp_redirect = yield from client.get('/redirect')
try:
assert len(resp_redirect.history) == 1
assert resp_redirect.history[0].status == 301
assert resp_redirect.status == 200
finally:
resp_redirect.release()
@pytest.mark.run_loop
def test_keepalive_closed_by_server(create_app_and_client):
@asyncio.coroutine
def handler(request):
body = yield from request.read()
assert b'' == body
resp = web.Response(body=b'OK')
resp.force_close()
return resp
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp1 = yield from client.get('/')
val1 = yield from resp1.read()
assert val1 == b'OK'
resp2 = yield from client.get('/')
val2 = yield from resp2.read()
assert val2 == b'OK'
assert 0 == len(client._session.connector._conns)
@pytest.mark.run_loop
def test_wait_for(create_app_and_client, loop):
@asyncio.coroutine
def handler(request):
return web.Response(body=b'OK')
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = yield from asyncio.wait_for(client.get('/'), 10, loop=loop)
assert resp.status == 200
txt = yield from resp.text()
assert txt == 'OK'
@pytest.mark.run_loop
def test_raw_headers(create_app_and_client, loop):
@asyncio.coroutine
def handler(request):
return web.Response()
app, client = yield from create_app_and_client()
app.router.add_route('GET', '/', handler)
resp = client.get('/')
assert resp.status == 200
assert resp.
'''
script = jedi.Script(source=source, line=414, column=16, path='/home/andrew/projects/aiohttp/tests/test_client_functional.py', encoding='utf-8')
script.completions()
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment