replace Tulip with asyncio
This commit is contained in:
		
							
								
								
									
										4
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								AUTHORS
									
									
									
									
									
								
							@@ -9,6 +9,6 @@ The photo of Trollis flower was taken by Imartin6 and distributed under the CC
 | 
			
		||||
BY-SA 3.0 license. It comes from:
 | 
			
		||||
http://commons.wikimedia.org/wiki/File:Trollius_altaicus.jpg
 | 
			
		||||
 | 
			
		||||
Trollius is a port of the Tulip project on Python 2, see also authors of the
 | 
			
		||||
Tulip project (AUTHORS file of the Tulip project).
 | 
			
		||||
Trollius is a port of the asyncio project on Python 2, see also authors of the
 | 
			
		||||
asyncio project (AUTHORS file).
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,17 @@
 | 
			
		||||
++++++++++++++++++
 | 
			
		||||
Trollius and Tulip
 | 
			
		||||
++++++++++++++++++
 | 
			
		||||
++++++++++++++++++++
 | 
			
		||||
Trollius and asyncio
 | 
			
		||||
++++++++++++++++++++
 | 
			
		||||
 | 
			
		||||
Differences between Trollius and Tulip
 | 
			
		||||
======================================
 | 
			
		||||
Differences between Trollius and asyncio
 | 
			
		||||
========================================
 | 
			
		||||
 | 
			
		||||
Syntax of coroutines
 | 
			
		||||
--------------------
 | 
			
		||||
 | 
			
		||||
The major difference between Trollius and Tulip is the syntax of coroutines:
 | 
			
		||||
The major difference between Trollius and asyncio is the syntax of coroutines:
 | 
			
		||||
 | 
			
		||||
==================  ======================
 | 
			
		||||
Tulip               Trollius
 | 
			
		||||
asyncio             Trollius
 | 
			
		||||
==================  ======================
 | 
			
		||||
``yield from ...``  ``yield From(...)``
 | 
			
		||||
``yield from []``   ``yield From(None)``
 | 
			
		||||
@@ -129,41 +129,41 @@ Other differences
 | 
			
		||||
  ``BaseEventLoop.run_in_executor()`` uses a synchronous executor instead of a
 | 
			
		||||
  pool of threads. It blocks until the function returns. For example, DNS
 | 
			
		||||
  resolutions are blocking in this case.
 | 
			
		||||
* Trollius has more symbols than Tulip for compatibility with Python older than
 | 
			
		||||
  3.3:
 | 
			
		||||
* Trollius has more symbols than asyncio for compatibility with Python older
 | 
			
		||||
  than 3.3:
 | 
			
		||||
 | 
			
		||||
  - ``From``: part of ``yield From(...)`` syntax
 | 
			
		||||
  - ``Return``: part of ``raise Return(...)`` syntax
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Write code working on Trollius and Tulip
 | 
			
		||||
========================================
 | 
			
		||||
Write code working on Trollius and asyncio
 | 
			
		||||
==========================================
 | 
			
		||||
 | 
			
		||||
Trollius and Tulip are different, especially for coroutines (``yield
 | 
			
		||||
Trollius and asyncio are different, especially for coroutines (``yield
 | 
			
		||||
From(...)`` vs ``yield from ...``).
 | 
			
		||||
 | 
			
		||||
To use asyncio or Trollius on Python 2 and Python 3, add the following code at
 | 
			
		||||
the top of your file::
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        # Use builtin asyncio on Python 3.4+, or Tulip on Python 3.3
 | 
			
		||||
        # Use builtin asyncio on Python 3.4+, or asyncio on Python 3.3
 | 
			
		||||
        import asyncio
 | 
			
		||||
    except ImportError:
 | 
			
		||||
        # Use Trollius on Python <= 3.2
 | 
			
		||||
        import trollius as asyncio
 | 
			
		||||
 | 
			
		||||
It is possible to write code working on both projects using only callbacks.
 | 
			
		||||
This option is used by the following projects which work on Trollius and Tulip:
 | 
			
		||||
This option is used by the following projects which work on Trollius and asyncio:
 | 
			
		||||
 | 
			
		||||
* `AutobahnPython <https://github.com/tavendo/AutobahnPython>`_: WebSocket &
 | 
			
		||||
  WAMP for Python, it works on Trollius (Python 2.6 and 2.7), Tulip (Python
 | 
			
		||||
  WAMP for Python, it works on Trollius (Python 2.6 and 2.7), asyncio (Python
 | 
			
		||||
  3.3) and Python 3.4 (asyncio), and also on Twisted.
 | 
			
		||||
* `Pulsar <http://pythonhosted.org/pulsar/>`_: Event driven concurrent
 | 
			
		||||
  framework for Python. With pulsar you can write asynchronous servers
 | 
			
		||||
  performing one or several activities in different threads and/or processes.
 | 
			
		||||
  Trollius 0.3 requires Pulsar 0.8.2 or later. Pulsar uses the ``asyncio``
 | 
			
		||||
  module if available, or import ``trollius``.
 | 
			
		||||
* `Tornado <http://www.tornadoweb.org/>`_ supports Tulip and Trollius since
 | 
			
		||||
* `Tornado <http://www.tornadoweb.org/>`_ supports asyncio and Trollius since
 | 
			
		||||
  Tornado 3.2: `tornado.platform.asyncio — Bridge between asyncio and Tornado
 | 
			
		||||
  <http://tornado.readthedocs.org/en/latest/asyncio.html>`_. It tries to import
 | 
			
		||||
  asyncio or fallback on importing trollius.
 | 
			
		||||
@@ -171,10 +171,10 @@ This option is used by the following projects which work on Trollius and Tulip:
 | 
			
		||||
Another option is to provide functions returning ``Future`` objects, so the
 | 
			
		||||
caller can decide to use callback using ``fut.add_done_callback(callback)`` or
 | 
			
		||||
to use coroutines (``yield From(fut)`` for Trollius, or ``yield from fut`` for
 | 
			
		||||
Tulip). This option is used by the `aiodns <https://github.com/saghul/aiodns>`_
 | 
			
		||||
asyncio). This option is used by the `aiodns <https://github.com/saghul/aiodns>`_
 | 
			
		||||
project for example.
 | 
			
		||||
 | 
			
		||||
Since Trollius 0.4, it's possible to use Tulip and Trollius coroutines in the
 | 
			
		||||
Since Trollius 0.4, it's possible to use asyncio and Trollius coroutines in the
 | 
			
		||||
same process. The only limit is that the event loop must be a Trollius event
 | 
			
		||||
loop.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ Here is a more detailed list of the package contents:
 | 
			
		||||
* an interface for passing work off to a threadpool, for times when you
 | 
			
		||||
  absolutely, positively have to use a library that makes blocking I/O calls.
 | 
			
		||||
 | 
			
		||||
Trollius is a portage of the `Tulip project <http://code.google.com/p/tulip/>`_
 | 
			
		||||
Trollius is a portage of the `asyncio project <https://github.com/python/asyncio>`_
 | 
			
		||||
(``asyncio`` module, `PEP 3156 <http://legacy.python.org/dev/peps/pep-3156/>`_)
 | 
			
		||||
on Python 2. Trollius works on Python 2.6-3.5. It has been tested on Windows,
 | 
			
		||||
Linux, Mac OS X, FreeBSD and OpenIndiana.
 | 
			
		||||
@@ -50,8 +50,7 @@ Linux, Mac OS X, FreeBSD and OpenIndiana.
 | 
			
		||||
* IRC: ``#asyncio`` channel on the `Freenode network <https://freenode.net/>`_
 | 
			
		||||
* Copyright/license: Open source, Apache 2.0. Enjoy!
 | 
			
		||||
 | 
			
		||||
See also the `Tulip project <http://code.google.com/p/tulip/>`_ (asyncio module
 | 
			
		||||
for Python 3.3).
 | 
			
		||||
See also the `asyncio project at Github <https://github.com/python/asyncio>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Table Of Contents
 | 
			
		||||
 
 | 
			
		||||
@@ -371,7 +371,7 @@ if events.asyncio is not None:
 | 
			
		||||
    if hasattr(events.asyncio, 'coroutines'):
 | 
			
		||||
        _COROUTINE_TYPES += (events.asyncio.coroutines.CoroWrapper,)
 | 
			
		||||
    else:
 | 
			
		||||
        # old Tulip/Python versions
 | 
			
		||||
        # old asyncio/Python versions
 | 
			
		||||
        _COROUTINE_TYPES += (events.asyncio.tasks.CoroWrapper,)
 | 
			
		||||
 | 
			
		||||
def iscoroutine(obj):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user