* Add a new test_asyncio_trollius.py file to test asyncio and trollius
interoperability
* Move task tests for trollius into test_tasks_trollius.py
* Remove unused "import socket" in test_socket.py
The exact error message depends on the version of Trollius and Tulip, if
they have the new create_task() function.
The check may be removed later when Trollius and Tulip with
create_task() will be widely deployed.
* Add GreenTrolliusTask, GreenTrolliusUnixSelectorLoop,
GreenTrolliusEventLoopPolicy
* Use backported TestCase of Trollius on Python 2 to get assertRaises()
* Use exec() in test_tass.py because "yield from" raises a SyntaxError
on Python 2
* New test_trollius.py testing the interoperability of Trollis and
asyncio coroutines. greenio should support executing asyncio
coroutines in a trollius event loop.
- Exception class has no __traceback__ attribute on Python 2: use
sys.exc_info() instead. I'm not sure that sys.exc_info() contains the
right traceback. I'm also using sys.exc_info() in Trollius in
Future.set_exception(), method usually called in an "except" block.
- "nonlocal" keyword is not supported in Python 2: use a mutable
dictionary instead
- socket.socket.recv has no docstring on Python 2
- Python 2 doesn't support function annotation: drop the single
annotation
- Port runtests.py to Python 2: the patch comes from Trollius
- Python 2 doesn't support "(self, *args, _from_sock=None, **kwargs)"
function prototype: use "(self, *args, **kwargs)" and pop manually
_from_sock from kwargs
- greenio.socket: add "from __future__ import absolute_import" to import
the socket module of the standard library, not greenio/socket.py