Hi,

Using "hg merge", I build this huge diff between Trollius and Tulip:
https://codereview.appspot.com/68210047/

Enjoy! I leaved some comments (I didn't check tests/ yet). You can
also use "hg diff -r trollius:default" in Trollius repository to get
the diff.

Remarks:

- a new asyncio.coroutines module is needed to break an import cycle
- initially, i wrote the new asyncio.executor module to run easily
unit tests with Python 2.7: only mock.py is needed to run tests
- the code to log traceback is still ugly, especially
Future.set_exception() which formats immediatly the exception. Storing
the whole traceback may keep some local variables alive too long. i
plan to enhance it with the new debug flag.

What can be done to simplify merges from Tulip into Trollius:

- create also asyncio.coroutines in Tulip
- replace "unittest.mock" with "mock" in all unit tests
- add also the COPYING file?

I should maybe make futures dependency mandatory to avoid the
"synchrounous executor" hack and so remove asyncio.executor. I now try
to use the tox tool instead to build a clean virtual environment with
all dependencies. See required backported modules per Python version:
http://trollius.readthedocs.org/#backports

Modify Tulip code to make it compatible with Python 2.6 may make it uglier:

- modify classes to inherit from object
- add parameters to super()
- replace list.clear() (and bytearray.clear()) with del list[:]
- replace "{} {}" with "{0} {1}"
- replace {... for ..} with set(... for ...) and {key:value for ...}
with dict(key:value for ...)
- replace OSError with socket.error (deprecated alias to OSError),
OSError with WindowsError for overlapped operations

I don't remember why I added "assert len(self._accept_futures)==0,
self._accept_futures; self._accept_futures.clear()" to
BaseProactorEventLoop._start_serving(), it's probably old debug code
when I improve proactor on Windows.

Windows proactor code has many "finish" methods. It would be nice to
rename them, it would help debug. I renamed some of them in Trollius.
I also moved functions out of methods when possible.

There is still the question of introducing "yield From(...)" syntax in
Trollius...

Victor

Reply via email to