Hello community,

here is the log from the commit of package python-aioeventlet for 
openSUSE:Factory checked in at 2018-05-15 10:15:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-aioeventlet (Old)
 and      /work/SRC/openSUSE:Factory/.python-aioeventlet.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-aioeventlet"

Tue May 15 10:15:32 2018 rev:2 rq:607031 version:0.5.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-aioeventlet/python-aioeventlet.changes    
2015-08-13 18:10:20.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-aioeventlet.new/python-aioeventlet.changes   
    2018-05-15 10:34:14.154350496 +0200
@@ -1,0 +2,16 @@
+Mon May 14 11:53:13 UTC 2018 - tchva...@suse.com
+
+- Require only trollus on py2 the asyncio is for py3 < 3.4
+
+-------------------------------------------------------------------
+Thu May 10 13:52:56 UTC 2018 - tchva...@suse.com
+
+- Version update to 0.5.2
+  * No obvious changelog or SCM present
+
+-------------------------------------------------------------------
+Thu Aug 24 13:32:39 UTC 2017 - jmate...@suse.com
+
+- singlespec auto-conversion
+
+-------------------------------------------------------------------

Old:
----
  aioeventlet-0.4.tar.gz

New:
----
  aioeventlet-0.5.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-aioeventlet.spec ++++++
--- /var/tmp/diff_new_pack.FKlfZS/_old  2018-05-15 10:34:14.930321996 +0200
+++ /var/tmp/diff_new_pack.FKlfZS/_new  2018-05-15 10:34:14.934321850 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-aioeventlet
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,23 +16,25 @@
 #
 
 
+# versioning fun
+%define intver 0.5.1
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-aioeventlet
-Version:        0.4
+Version:        0.5.2
 Release:        0
-Summary:        asyncio event loop scheduling callbacks in eventlet
+Summary:        Asyncio event loop scheduling callbacks in eventlet
 License:        Apache-2.0
 Group:          Development/Languages/Python
-Url:            http://aioeventlet.readthedocs.org/
-Source:         
https://pypi.python.org/packages/source/a/aioeventlet/aioeventlet-%{version}.tar.gz
-BuildRequires:  python-devel
+URL:            https://pypi.org/project/aioeventlet/
+Source:         
https://files.pythonhosted.org/packages/source/a/aioeventlet/aioeventlet-%{version}.tar.gz
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  python-rpm-macros
 Requires:       python-eventlet
-Requires:       python-trollius >= 0.3
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
 BuildArch:      noarch
+%ifpython2
+Requires:       python-trollius >= 0.3
 %endif
+%python_subpackages
 
 %description
 aioeventlet implements the asyncio API (PEP 3156) on top of eventlet. It makes
@@ -49,17 +51,17 @@
 parallel.
 
 %prep
-%setup -q -n aioeventlet-%{version}
+%setup -q -n aioeventlet-%{intver}
 
 %build
-python setup.py build
+%python_build
 
 %install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
 
-%files
-%defattr(-,root,root,-)
-%doc README COPYING
+%files %{python_files}
+%license COPYING
+%doc README
 %{python_sitelib}/*
 
 %changelog

++++++ aioeventlet-0.4.tar.gz -> aioeventlet-0.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/MANIFEST.in 
new/aioeventlet-0.5.1/MANIFEST.in
--- old/aioeventlet-0.4/MANIFEST.in     2014-11-21 21:23:33.000000000 +0100
+++ new/aioeventlet-0.5.1/MANIFEST.in   2016-02-22 14:11:25.000000000 +0100
@@ -1,6 +1,7 @@
 include COPYING
 include Makefile
 include runtests.py
+include run_aiotest.py
 include tests/*.py
 include tox.ini
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/PKG-INFO 
new/aioeventlet-0.5.1/PKG-INFO
--- old/aioeventlet-0.4/PKG-INFO        2014-12-03 00:56:38.000000000 +0100
+++ new/aioeventlet-0.5.1/PKG-INFO      2016-02-22 17:41:03.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: aioeventlet
-Version: 0.4
+Version: 0.5.1
 Summary: asyncio event loop scheduling callbacks in eventlet.
 Home-page: http://aioeventlet.readthedocs.org/
 Author: Victor Stinner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/aioeventlet.egg-info/PKG-INFO 
new/aioeventlet-0.5.1/aioeventlet.egg-info/PKG-INFO
--- old/aioeventlet-0.4/aioeventlet.egg-info/PKG-INFO   2014-12-03 
00:56:38.000000000 +0100
+++ new/aioeventlet-0.5.1/aioeventlet.egg-info/PKG-INFO 2016-02-22 
17:41:02.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: aioeventlet
-Version: 0.4
+Version: 0.5.1
 Summary: asyncio event loop scheduling callbacks in eventlet.
 Home-page: http://aioeventlet.readthedocs.org/
 Author: Victor Stinner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/aioeventlet.egg-info/SOURCES.txt 
new/aioeventlet-0.5.1/aioeventlet.egg-info/SOURCES.txt
--- old/aioeventlet-0.4/aioeventlet.egg-info/SOURCES.txt        2014-12-03 
00:56:38.000000000 +0100
+++ new/aioeventlet-0.5.1/aioeventlet.egg-info/SOURCES.txt      2016-02-22 
17:41:03.000000000 +0100
@@ -3,6 +3,7 @@
 Makefile
 README
 aioeventlet.py
+run_aiotest.py
 runtests.py
 setup.py
 tox.ini
@@ -21,11 +22,5 @@
 doc/status.rst
 doc/using.rst
 tests/__init__.py
-tests/test_add_reader.py
-tests/test_callback.py
-tests/test_coroutine.py
 tests/test_eventlet.py
-tests/test_greenlet.py
-tests/test_network.py
-tests/test_thread.py
-tests/test_timer.py
\ No newline at end of file
+tests/test_greenlet.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/aioeventlet.egg-info/requires.txt 
new/aioeventlet-0.5.1/aioeventlet.egg-info/requires.txt
--- old/aioeventlet-0.4/aioeventlet.egg-info/requires.txt       2014-12-03 
00:56:38.000000000 +0100
+++ new/aioeventlet-0.5.1/aioeventlet.egg-info/requires.txt     2016-02-22 
17:41:02.000000000 +0100
@@ -1,2 +1,2 @@
 eventlet
-trollius>=0.3
\ No newline at end of file
+trollius>=0.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/aioeventlet.py 
new/aioeventlet-0.5.1/aioeventlet.py
--- old/aioeventlet-0.4/aioeventlet.py  2014-12-03 00:24:35.000000000 +0100
+++ new/aioeventlet-0.5.1/aioeventlet.py        2016-02-22 17:20:44.000000000 
+0100
@@ -28,6 +28,12 @@
     # Examples: socket.socket(), socket.socketpair(),
     # threading.current_thread().
     asyncio.base_events.socket = socket
+    asyncio.base_events.threading = threading
+    if hasattr(threading, 'get_ident'):
+        asyncio.base_events._get_thread_ident = threading.get_ident
+    else:
+        # Python 2
+        asyncio.base_events._get_thread_ident = threading._get_ident
     asyncio.events.threading = threading
     if sys.platform == 'win32':
         asyncio.windows_events.socket = socket
@@ -200,6 +206,12 @@
         if eventlet.patcher.is_monkey_patched('thread'):
             self._default_executor = _TpoolExecutor(self)
 
+    def stop(self):
+        super(EventLoop, self).stop()
+        # selector.select() is running: write into the self-pipe to wake up
+        # the selector
+        self._write_to_self()
+
     def call_soon(self, callback, *args):
         handle = super(EventLoop, self).call_soon(callback, *args)
         if self._selector is not None and self._selector._event:
@@ -315,7 +327,7 @@
     Return the result or raise the exception of the future.
 
     The function must not be called from the greenthread
-    of the aioeventlet event loop.
+    running the aioeventlet event loop.
     """
     future = asyncio.async(future, loop=loop)
     if future._loop._greenthread == eventlet.getcurrent():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/doc/changelog.rst 
new/aioeventlet-0.5.1/doc/changelog.rst
--- old/aioeventlet-0.4/doc/changelog.rst       2014-12-03 00:55:03.000000000 
+0100
+++ new/aioeventlet-0.5.1/doc/changelog.rst     2016-02-22 17:23:28.000000000 
+0100
@@ -1,11 +1,32 @@
 Changelog
 =========
 
+2016-02-22: Version 0.5.1
+-------------------------
+
+* Fix EventLoop.stop() for the new semantics of stop() introduced
+  in Python 3.4.4 and Python 3.5.1. The method now writes into the self-pipe
+  to wake-up the event loop. Otherwise, the stop() may not be taken in account
+  immediatly, and even block forever.
+
+2016-02-22: Version 0.5
+-----------------------
+
+* Unit tests now use the aiotest library.
+* Fix for eventlet used with monkey-patching: inject the original threading
+  module and the original threading.get_ident() function in
+  asyncio.base_events.
+* Drop support for Python 2.6 and Python 3.2. aioeventlet depends on trollius
+  and pip which don't support these Python versions anymore.
+
 2014-12-03: Version 0.4
 -----------------------
 
+* Add run_aiotest.py
+* tox now also run the aiotest test suite
 * Rename the project from ``aiogreen`` to ``aioeventlet``
 * Rename the ``link_future()`` function to :func:`yield_future`
+* Running tests with eventlet monkey-patching now works with Python 3.
 
 2014-11-23: version 0.3
 -----------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/doc/conf.py 
new/aioeventlet-0.5.1/doc/conf.py
--- old/aioeventlet-0.4/doc/conf.py     2014-12-03 00:29:23.000000000 +0100
+++ new/aioeventlet-0.5.1/doc/conf.py   2016-02-22 17:21:25.000000000 +0100
@@ -51,9 +51,8 @@
 # built documents.
 #
 # The short X.Y version.
-version = '0.4'
 # The full version, including alpha/beta/rc tags.
-release = '0.4'
+version = release = '0.5.1'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/doc/index.rst 
new/aioeventlet-0.5.1/doc/index.rst
--- old/aioeventlet-0.4/doc/index.rst   2014-12-03 00:26:31.000000000 +0100
+++ new/aioeventlet-0.5.1/doc/index.rst 2016-02-22 14:51:37.000000000 +0100
@@ -14,8 +14,8 @@
 coroutines, tasks and futures in greenthreads: see :func:`yield_future` and
 :func:`wrap_greenthread` functions.
 
-The main visible difference between aioeventlet and trollius is the behaviour 
of
-``run_forever()``: ``run_forever()`` blocks with trollius, whereas it runs in a
+The main visible difference between aioeventlet and asyncio is the behaviour of
+``run_forever()``: ``run_forever()`` blocks with asyncio, whereas it runs in a
 greenthread with aioeventlet. It means that aioeventlet event loop can run in 
an
 greenthread while the Python main thread runs other greenthreads in parallel.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/doc/openstack.rst 
new/aioeventlet-0.5.1/doc/openstack.rst
--- old/aioeventlet-0.4/doc/openstack.rst       2014-12-03 00:27:06.000000000 
+0100
+++ new/aioeventlet-0.5.1/doc/openstack.rst     2016-02-22 14:51:01.000000000 
+0100
@@ -1,6 +1,12 @@
 asyncio in OpenStack
 ====================
 
+.. warning::
+   The project of replacing eventlet with trollius using aioeventlet in
+   OpenStack is abandonned. It might done "later" when Python 2 support
+   will be removed from OpenStack which is not going to happen in a near
+   future.
+
 First part (in progress): add support for trollius coroutines
 -------------------------------------------------------------
 
@@ -107,12 +113,61 @@
   parallel tasks (ex: send multiple requests to a database)
 
 
-History
--------
+openstack-dev mailing list
+--------------------------
+
+* `[oslo] Progress of the port to Python 3
+  
<http://lists.openstack.org/pipermail/openstack-dev/2015-January/053846.html>`_
+  (Victor Stinner, Jan 6 2015)
+
+* `[oslo] Add a new aiogreen executor for Oslo Messaging
+  
<http://lists.openstack.org/pipermail/openstack-dev/2014-November/051337.html>`_
+  (Victor Stinner, Nov 23 2014)
+
+* `[oslo] Asyncio and oslo.messaging
+  <http://lists.openstack.org/pipermail/openstack-dev/2014-July/039291.html>`_
+  (Mark McLoughlin, Jul 3 2014)
+
+  * `SQLAlchemy and asynchronous programming
+    
<http://lists.openstack.org/pipermail/openstack-dev/2014-July/039480.html>`_
+    by Mike Bayer (author and maintainer of SQLAlchemy)
+
+* `[Solum][Oslo] Next Release of oslo.messaging?
+  <http://lists.openstack.org/pipermail/openstack-dev/2014-March/030304.html>`_
+  (Victor Stinner, Mar 18 2014)
+
+* `[solum] async / threading for python 2 and 3
+  
<http://lists.openstack.org/pipermail/openstack-dev/2014-February/027685.html>`_
+  (Victor Stinner, Feb 20 2014)
+
+* `Asynchrounous programming: replace eventlet with asyncio
+  
<http://lists.openstack.org/pipermail/openstack-dev/2014-February/026237.html>`_
+  (Victor Stinner, Feb 4 2014)
+
+
+History of asyncio in OpenStack
+-------------------------------
+
+Threads and asyncio specs:
+
+* `Cross-project meeting: 2015-03-02
+  
<http://eavesdrop.openstack.org/meetings/crossproject/2015/crossproject.2015-03-03-21.02.log.html>`_
+* `Cross-project meeting: 2015-02-24T21:44:05
+  
<http://eavesdrop.openstack.org/meetings/crossproject/2015/crossproject.2015-02-24-21.03.log.html>`_
 
 Maybe the good one, aioeventlet project:
 
-* Novembre 23, two patches posted to Oslo Messaging:
+* March 13, 2015: Joshua Harlow wrote the spec `Replace eventlet +
+  monkey-patching with ?? <https://review.openstack.org/#/c/164035/>`_
+* February 17, 2015: Joshua Harlow wrote a different spec,
+  `Sew over eventlet + patching with threads
+  <https://review.openstack.org/#/c/156711/>`_
+* February 5, 2015: new cross-project spec `Replace eventlet with asyncio
+  <https://review.openstack.org/#/c/153298/>`_
+* December 3, 2014: two patches posted to requirements:
+  `Add aioeventlet dependency <https://review.openstack.org/#/c/138750/>`_
+  and `Drop greenio dependency <https://review.openstack.org/#/c/138748/>`_.
+* Novembre 23, 2014: two patches posted to Oslo Messaging:
   `Add a new aioeventlet executor <https://review.openstack.org/#/c/136653/>`_
   and `Add an optional executor callback to dispatcher
   <https://review.openstack.org/#/c/136652/>`_
@@ -148,7 +203,7 @@
   <https://review.openstack.org/#/c/104792/>`_ merged into 
openstack/oslo-specs.
 * July 7, 2014: Patch `Fix AMQPListener for polling with timeout
   <https://review.openstack.org/#/c/104964/>`_ merged into Oslo Messaging
-* July: greenio executor, `[openstack-dev] [oslo] Asyncio and oslo.messaging
+* July 2014: greenio executor, `[openstack-dev] [oslo] Asyncio and 
oslo.messaging
   <http://lists.openstack.org/pipermail/openstack-dev/2014-July/039291.html>`_
 
 First try with a trollius executor for Oslo Messaging:
@@ -186,3 +241,11 @@
   <https://blueprints.launchpad.net/oslo.messaging/+spec/asyncio-executor>`_
   proposed by Flavio Percoco and accepted for OpenStack Icehouse by Mark
   McLoughlin
+
+
+History of asynchronous programming in OpenStack
+------------------------------------------------
+
+In the past, the Nova project used Tornado, then Twisted and it is now using
+eventlet which also became the defacto standard in OpenStack
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/doc/status.rst 
new/aioeventlet-0.5.1/doc/status.rst
--- old/aioeventlet-0.4/doc/status.rst  2014-12-03 00:27:14.000000000 +0100
+++ new/aioeventlet-0.5.1/doc/status.rst        2016-02-22 14:49:21.000000000 
+0100
@@ -1,6 +1,7 @@
 To do
 =====
 
+* support monkey-patching enabled after loading the aioeventlet module
 * register signals in eventlet hub, only needed for pyevent hub?
 * port greenio examples to aioeventlet
 * write unit tests for, and maybe also examples for:
@@ -13,22 +14,6 @@
   - subprocesses
 
 * experiment running an event loop in a thread different than the main thread
-* tox.ini: test Python 3.3 with monkey-patching, see eventlet bug:
-  https://github.com/eventlet/eventlet/pull/168
-
-
-eventlet issues
-===============
-
-* eventlet monkey patching on Python 3 is incomplete. The most blocking issue
-  is in the importlib: the thread module is patched to use greenthreads, but
-  importlib really need to work on real threads. Pull request:
-  https://github.com/eventlet/eventlet/pull/168
-* eventlet.tpool.setup() seems to be broken on Windows in eventlet 0.15.
-  Pull request:
-  https://github.com/eventlet/eventlet/pull/167
-* hub.debug_blocking is implemented with signal.alarm() which is is not
-  available on Windows.
 
 
 .. _eventlet-py3:
@@ -36,24 +21,5 @@
 eventlet and Python 3
 =====================
 
-eventlet 0.15 is the first release supporting Python 3. Python 3 is only
-supported if monkey-patching is not used.
-
-Python 3 pull requests:
-
-* Pull request #160: `Python 3 compat; Improve WSGI, WS, threading and tests
-  <https://github.com/eventlet/eventlet/pull/160>`_ (sent the Nov 5, 2014): not
-  merged yet
-* Pull request #99, `Fix several issues with python3 thread patching
-  <https://github.com/eventlet/eventlet/pull/99>`_ (sent the July 3, 2014): not
-  merged yet, see the `commit
-  
<https://github.com/therve/eventlet/commit/9c3118162cf1ca1e50be330ba2a289f054c48d3c>`_
-
-Python 3 issues:
-
-* Issue #157: `eventlet hanging
-  <https://github.com/eventlet/eventlet/issues/157>`_ (open since Oct 30, 2014)
-* Issue #153: `py3: green.threading.local is not green
-  <https://github.com/eventlet/eventlet/issues/153>`_ (closed the Nov 5, 2014)
-* Issue #6: `Support Python 3.3
-  <https://github.com/eventlet/eventlet/issues/6>`_ (open since Jan 2013)
+eventlet 0.17 or newer is recommanded for Python 3 when monkey-patching is
+enabled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/doc/using.rst 
new/aioeventlet-0.5.1/doc/using.rst
--- old/aioeventlet-0.4/doc/using.rst   2014-12-03 00:53:23.000000000 +0100
+++ new/aioeventlet-0.5.1/doc/using.rst 2016-02-22 14:47:51.000000000 +0100
@@ -1,26 +1,26 @@
 Usage
 =====
 
-Use aioeventlet with trollius
------------------------------
-
-aioeventlet can be used with trollius, coroutines written with ``yield
-From(...)``. Using aioeventlet with trollius is a good start to port project
-written for eventlet to trollius.
+Use aioeventlet with asyncio
+----------------------------
 
-To use aioeventlet with trollius, set the event loop policy before using an 
event
-loop, example::
+aioeventlet can be used with asyncio, coroutines written with ``yield from 
...``.
+To use aioeventlet with asyncio, set the event loop policy before using an 
event
+loop. Example::
 
     import aioeventlet
-    import trollius
+    import asyncio
 
-    trollius.set_event_loop_policy(aioeventlet.EventLoopPolicy())
+    asyncio.set_event_loop_policy(aioeventlet.EventLoopPolicy())
     # ....
 
+Setting the event loop policy should be enough to examples of the asyncio
+documentation with the aioeventlet event loop.
+
 Hello World::
 
     import aioeventlet
-    import trollius as asyncio
+    import asyncio
 
     def hello_world():
         print("Hello World")
@@ -33,36 +33,35 @@
     loop.close()
 
 .. seealso::
-   `Trollius documentation <http://trollius.readthedocs.org/>`_.
+   The `asyncio documentation
+   <https://docs.python.org/dev/library/asyncio.html>`_.
 
 
-Use aioeventlet with asyncio
-----------------------------
+Use aioeventlet with trollius
+-----------------------------
 
-aioeventlet can be used with asyncio, coroutines written with ``yield from 
...``.
-To use aioeventlet with asyncio, set the event loop policy before using an 
event
-loop. Example::
+.. warning::
+   The `trollius project is now deprecated
+   <http://trollius.readthedocs.org/deprecated.html>`_. It's now recommended to
+   use aioeventlet with asyncio.
 
-    import aioeventlet
-    import asyncio
+aioeventlet can be used with trollius, coroutines written with ``yield
+From(...)``. Using aioeventlet with trollius is a good start to port project
+written for eventlet to trollius.
 
-    asyncio.set_event_loop_policy(aioeventlet.EventLoopPolicy())
-    # ....
+To use aioeventlet with trollius, set the event loop policy before using an 
event
+loop, example::
 
-Setting the event loop policy should be enough to examples of the asyncio
-documentation with the aioeventlet event loop.
+    import aioeventlet
+    import trollius
 
-.. warning::
-   Since aioeventlet relies on eventlet, eventlet port to Python 3 is not 
complete
-   and asyncio requires Python 3.3 or newer: using aioeventlet with asyncio is 
not
-   recommended yet. *Using aioeventlet with trollius should be preferred right
-   now*.  See the :ref:`status of the eventlet port to Python 3
-   <eventlet-py3>`.
+    trollius.set_event_loop_policy(aioeventlet.EventLoopPolicy())
+    # ....
 
 Hello World::
 
     import aioeventlet
-    import asyncio
+    import trollius as asyncio
 
     def hello_world():
         print("Hello World")
@@ -75,8 +74,7 @@
     loop.close()
 
 .. seealso::
-   The `asyncio documentation
-   <https://docs.python.org/dev/library/asyncio.html>`_.
+   `Trollius documentation <http://trollius.readthedocs.org/>`_.
 
 
 Threads
@@ -126,6 +124,7 @@
 .. warning::
    aioeventlet API is not considered as stable yet.
 
+
 yield_future
 ------------
 
@@ -135,8 +134,8 @@
 
    Return the result or raise the exception of the future.
 
-   The function must not be called from the greenthread of the aioeventlet 
event
-   loop.
+   The function must not be called from the greenthread running the aioeventlet
+   event loop.
 
    .. versionchanged:: 0.4
 
@@ -168,9 +167,7 @@
         def green_sum():
             loop.call_soon(progress)
 
-            task = asyncio.async(coro_slow_sum(1, 2))
-
-            value = aioeventlet.yield_future(task)
+            value = aioeventlet.yield_future(coro_slow_sum(1, 2))
             print("1 + 2 = %s" % value)
 
             loop.stop()
@@ -287,7 +284,7 @@
     needed)
   * Python 3.3: need Tulip 0.4.1 or newer (``pip install asyncio``),
     but Tulip 3.4.1 or newer is recommended
-  * Python 2.6-3.2: need Trollius 0.3 or newer (``pip install trollius``),
+  * Python 2.7: need Trollius 0.3 or newer (``pip install trollius``),
     but Trollius 1.0 or newer is recommended
 
 Type::
@@ -303,7 +300,7 @@
 
 The `tox project <http://testrun.org/tox/latest/>`_ can be used to build a
 virtual environment with all runtime and test dependencies and run tests
-against different Python versions (2.6, 2.7, 3.2, 3.3, 3.4).
+against different Python versions (2.7, 3.3, 3.4, 3.5).
 
 To test all Python versions, just type::
 
@@ -315,16 +312,16 @@
 
 To run tests against other Python versions:
 
-* ``py26``: Python 2.6
 * ``py27``: Python 2.7
 * ``py27_patch``: Python 2.7 with eventlet monkey patching
 * ``py27_old``: Python 2.7 with the oldest supported versions of eventlet and
   trollius
-* ``py32``: Python 3.2
 * ``py33``: Python 3.3
-* ``py33_old``: Python 3.3 with the oldest supported versions of eventlet and
+* ``py3_patch``: Python 3 with eventlet monkey patching
+* ``py3_old``: Python 3 with the oldest supported versions of eventlet and
   tulip
 * ``py34``: Python 3.4
+* ``py35``: Python 3.5
 
 Run tests manually
 ------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/run_aiotest.py 
new/aioeventlet-0.5.1/run_aiotest.py
--- old/aioeventlet-0.4/run_aiotest.py  1970-01-01 01:00:00.000000000 +0100
+++ new/aioeventlet-0.5.1/run_aiotest.py        2016-02-22 17:36:50.000000000 
+0100
@@ -0,0 +1,19 @@
+import eventlet
+import sys
+
+if '-m' in sys.argv:
+    print("Enable eventlet monkey patching")
+    eventlet.monkey_patch()
+    sys.argv.remove('-m')
+
+import aioeventlet
+import aiotest.run
+
+config = aiotest.TestConfig()
+config.asyncio = aioeventlet.asyncio
+config.socket = eventlet.patcher.original('socket')
+config.threading = eventlet.patcher.original('threading')
+config.sleep = eventlet.sleep
+config.socketpair = aioeventlet.socketpair
+config.new_event_pool_policy = aioeventlet.EventLoopPolicy
+aiotest.run.main(config)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/setup.py 
new/aioeventlet-0.5.1/setup.py
--- old/aioeventlet-0.4/setup.py        2014-12-03 00:25:40.000000000 +0100
+++ new/aioeventlet-0.5.1/setup.py      2016-02-22 17:21:17.000000000 +0100
@@ -1,4 +1,5 @@
-# Release procedure:
+# Prepare a release:
+#
 #  - fill the changelog
 #  - run unit tests on Linux: run "tox"
 #  - run unit tests on Windows, run::
@@ -7,15 +8,26 @@
 #       \Python27\python.exe runtest.py -r -m
 #
 #  - update the version in setup.py and doc/conf.py to X.Y
-#  - set release date in doc/changelog.rst
 #  - check that "python setup.py sdist" contains all files tracked by
 #    the SCM (Mercurial): update MANIFEST.in if needed
+#  - set release date in doc/changelog.rst
 #  - hg ci
+#  - hg push
+#
+# Release a new version:
+#
 #  - hg tag X.Y
 #  - hg push
-#  - python setup.py sdist bdist_wheel register upload
+#  - python setup.py sdist register upload
+#    WARNING: don't publish binary wheel packages, since setup.py
+#             hardcodes dependencies depending on the Python version.
 #  - increment version in setup.py and doc/conf.py
 #  - hg ci && hg push
+#
+# After the release:
+#
+#  - increment version in setup.py and doc/conf.py
+#  - hg ci -m "post-release" && hg push
 
 import sys
 try:
@@ -35,7 +47,7 @@
     # Python 3.3: use Tulip
     requirements.append('asyncio>=0.4.1')
 else:
-    # Python 2.6-3.2: use Trollius
+    # Python 2.7: use Trollius
     requirements.append('trollius>=0.3')
 
 with open("README") as fp:
@@ -43,7 +55,7 @@
 
 install_options = {
     "name": "aioeventlet",
-    "version": "0.4",
+    "version": "0.5.1",
     "license": "Apache License 2.0",
     "author": 'Victor Stinner',
     "author_email": 'victor.stin...@gmail.com',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/__init__.py 
new/aioeventlet-0.5.1/tests/__init__.py
--- old/aioeventlet-0.4/tests/__init__.py       2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/__init__.py     2016-02-22 17:07:02.000000000 
+0100
@@ -1,13 +1,10 @@
 import aioeventlet
+import sys
 try:
     import asyncio
 except ImportError:
     import trollius as asyncio
-try:
-    # On Python 2.6, unittest2 is needed to get new features like addCleanup()
-    import unittest2 as unittest
-except ImportError:
-    import unittest
+import unittest
 try:
     from unittest import mock
 except ImportError:
@@ -22,3 +19,7 @@
         self.loop = policy.get_event_loop()
         self.addCleanup(self.loop.close)
         self.addCleanup(asyncio.set_event_loop, None)
+
+    if sys.version_info < (3,):
+        def assertRaisesRegex(self, *args):
+            return self.assertRaisesRegexp(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_add_reader.py 
new/aioeventlet-0.5.1/tests/test_add_reader.py
--- old/aioeventlet-0.4/tests/test_add_reader.py        2014-12-03 
00:24:56.000000000 +0100
+++ new/aioeventlet-0.5.1/tests/test_add_reader.py      1970-01-01 
01:00:00.000000000 +0100
@@ -1,81 +0,0 @@
-from __future__ import absolute_import
-from aioeventlet import socketpair
-import eventlet
-import tests
-socket = eventlet.patcher.original('socket')
-
-
-class AddReaderTests(tests.TestCase):
-    def test_add_reader(self):
-        result = {'received': None}
-        rsock, wsock = socketpair()
-        self.addCleanup(rsock.close)
-        self.addCleanup(wsock.close)
-
-        def reader():
-            data = rsock.recv(100)
-            result['received'] = data
-            self.loop.remove_reader(rsock)
-            self.loop.stop()
-
-        def writer():
-            self.loop.remove_writer(wsock)
-            self.loop.call_soon(wsock.send, b'abc')
-
-        self.loop.add_reader(rsock, reader)
-        self.loop.add_writer(wsock, writer)
-
-        self.loop.run_forever()
-        self.assertEqual(result['received'], b'abc')
-
-    def check_add_replace(self, event):
-        selector = self.loop._selector
-        if event == 'reader':
-            add_sock = self.loop.add_reader
-            remove_sock = self.loop.remove_reader
-            def get_handle(fileobj):
-                return selector.get_key(fileobj).data[0]
-        else:
-            add_sock = self.loop.add_writer
-            remove_sock = self.loop.remove_writer
-            def get_handle(fileobj):
-                return selector.get_key(fileobj).data[1]
-
-        sock = socket.socket()
-        self.addCleanup(sock.close)
-
-        def func():
-            pass
-
-        def func2():
-            pass
-
-        self.assertRaises(KeyError, get_handle, sock)
-
-        add_sock(sock, func)
-        handle1 = get_handle(sock)
-        self.assertFalse(handle1._cancelled)
-
-        add_sock(sock, func2)
-        handle2 = get_handle(sock)
-        self.assertIsNot(handle1, handle2)
-        self.assertTrue(handle1._cancelled)
-        self.assertFalse(handle2._cancelled)
-
-        removed = remove_sock(sock)
-        self.assertTrue(removed)
-        self.assertTrue(handle2._cancelled)
-
-        removed = remove_sock(sock)
-        self.assertFalse(removed)
-
-    def test_add_reader_replace(self):
-        self.check_add_replace("reader")
-
-    def test_add_writer_replace(self):
-        self.check_add_replace("writer")
-
-
-if __name__ == '__main__':
-    import unittest
-    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_callback.py 
new/aioeventlet-0.5.1/tests/test_callback.py
--- old/aioeventlet-0.4/tests/test_callback.py  2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_callback.py        1970-01-01 
01:00:00.000000000 +0100
@@ -1,48 +0,0 @@
-import tests
-
-class CallbackTests(tests.TestCase):
-    def test_hello_world(self):
-        result = []
-
-        def hello_world(loop):
-            result.append('Hello World')
-            loop.stop()
-
-        self.loop.call_soon(hello_world, self.loop)
-        self.loop.run_forever()
-        self.assertEqual(result, ['Hello World'])
-
-    def test_soon_stop_soon(self):
-        result = []
-
-        def hello():
-            result.append("Hello")
-
-        def world():
-            result.append("World")
-            self.loop.stop()
-
-        self.loop.call_soon(hello)
-        self.loop.stop()
-        self.loop.call_soon(world)
-
-        self.loop.run_forever()
-        self.assertEqual(result, ["Hello"])
-
-        self.loop.run_forever()
-        self.assertEqual(result, ["Hello", "World"])
-
-    def test_close_soon(self):
-        def func():
-            pass
-
-        self.loop.close()
-        # FIXME: calling call_soon() on a closed event loop should raise an
-        # exception:
-        # http://bugs.python.org/issue22922
-        self.loop.call_soon(func)
-
-
-if __name__ == '__main__':
-    import unittest
-    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_coroutine.py 
new/aioeventlet-0.5.1/tests/test_coroutine.py
--- old/aioeventlet-0.4/tests/test_coroutine.py 2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_coroutine.py       1970-01-01 
01:00:00.000000000 +0100
@@ -1,62 +0,0 @@
-import tests
-
-try:
-    import asyncio
-
-    exec('''if 1:
-        def hello_world(result, delay):
-            result.append("Hello")
-            # retrieve the event loop from the policy
-            yield from asyncio.sleep(delay)
-            result.append('World')
-            return "."
-
-        def waiter(result):
-            loop = asyncio.get_event_loop()
-            fut = asyncio.Future(loop=loop)
-            loop.call_soon(fut.set_result, "Future")
-
-            value = yield from fut
-            result.append(value)
-
-            value = yield from hello_world(result, 0.001)
-            result.append(value)
-    ''')
-except ImportError:
-    import trollius as asyncio
-    from trollius import From, Return
-
-    def hello_world(result, delay):
-        result.append("Hello")
-        # retrieve the event loop from the policy
-        yield From(asyncio.sleep(delay))
-        result.append('World')
-        raise Return(".")
-
-    def waiter(result):
-        loop = asyncio.get_event_loop()
-        fut = asyncio.Future(loop=loop)
-        loop.call_soon(fut.set_result, "Future")
-
-        value = yield From(fut)
-        result.append(value)
-
-        value = yield From(hello_world(result, 0.001))
-        result.append(value)
-
-
-class CallbackTests(tests.TestCase):
-    def test_hello_world(self):
-        result = []
-        self.loop.run_until_complete(hello_world(result, 0.001))
-        self.assertEqual(result, ['Hello', 'World'])
-
-    def test_waiter(self):
-        result = []
-        self.loop.run_until_complete(waiter(result))
-        self.assertEqual(result, ['Future', 'Hello', 'World', '.'])
-
-
-if __name__ == '__main__':
-    import unittest
-    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_eventlet.py 
new/aioeventlet-0.5.1/tests/test_eventlet.py
--- old/aioeventlet-0.4/tests/test_eventlet.py  2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_eventlet.py        2016-02-22 
17:20:58.000000000 +0100
@@ -292,7 +292,7 @@
         self.loop.set_debug(False)
         gt = eventlet.spawn(func)
         msg = "wrap_greenthread: the greenthread is running"
-        self.assertRaisesRegexp(RuntimeError, msg, gt.wait)
+        self.assertRaisesRegex(RuntimeError, msg, gt.wait)
 
     def test_wrap_greenthread_dead(self):
         def func():
@@ -303,8 +303,8 @@
         self.assertEqual(result, 'ok')
 
         msg = "wrap_greenthread: the greenthread already finished"
-        self.assertRaisesRegexp(RuntimeError, msg,
-                                aioeventlet.wrap_greenthread, gt)
+        self.assertRaisesRegex(RuntimeError, msg,
+                               aioeventlet.wrap_greenthread, gt)
 
     def test_coro_wrap_greenthread(self):
         result = self.loop.run_until_complete(coro_wrap_greenthread())
@@ -358,7 +358,7 @@
 
         eventlet.spawn_n(func)
         msg = "wrap_greenthread: the greenthread is running"
-        self.assertRaisesRegexp(RuntimeError, msg, event.wait)
+        self.assertRaisesRegex(RuntimeError, msg, event.wait)
 
     def test_wrap_greenlet_dead(self):
         event = eventlet.event.Event()
@@ -368,7 +368,7 @@
         gt = eventlet.spawn_n(func)
         event.wait()
         msg = "wrap_greenthread: the greenthread already finished"
-        self.assertRaisesRegexp(RuntimeError, msg, 
aioeventlet.wrap_greenthread, gt)
+        self.assertRaisesRegex(RuntimeError, msg, 
aioeventlet.wrap_greenthread, gt)
 
 
 if __name__ == '__main__':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_greenlet.py 
new/aioeventlet-0.5.1/tests/test_greenlet.py
--- old/aioeventlet-0.4/tests/test_greenlet.py  2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_greenlet.py        2016-02-22 
14:11:25.000000000 +0100
@@ -26,8 +26,8 @@
     def test_wrap_greenlet_no_run_attr(self):
         gl = greenlet.greenlet()
         msg = "wrap_greenthread: the run attribute of the greenlet is not set"
-        self.assertRaisesRegexp(RuntimeError, msg,
-                                aioeventlet.wrap_greenthread, gl)
+        self.assertRaisesRegex(RuntimeError, msg,
+                               aioeventlet.wrap_greenthread, gl)
 
     def test_wrap_greenlet_running(self):
         def func(value):
@@ -36,7 +36,7 @@
 
         gl = greenlet.greenlet(func)
         msg = "wrap_greenthread: the greenthread is running"
-        self.assertRaisesRegexp(RuntimeError, msg, gl.switch, 5)
+        self.assertRaisesRegex(RuntimeError, msg, gl.switch, 5)
 
     def test_wrap_greenlet_dead(self):
         def func(value):
@@ -45,7 +45,7 @@
         gl = greenlet.greenlet(func)
         gl.switch(5)
         msg = "wrap_greenthread: the greenthread already finished"
-        self.assertRaisesRegexp(RuntimeError, msg, 
aioeventlet.wrap_greenthread, gl)
+        self.assertRaisesRegex(RuntimeError, msg, 
aioeventlet.wrap_greenthread, gl)
 
 
 if __name__ == '__main__':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_network.py 
new/aioeventlet-0.5.1/tests/test_network.py
--- old/aioeventlet-0.4/tests/test_network.py   2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_network.py 1970-01-01 01:00:00.000000000 
+0100
@@ -1,84 +0,0 @@
-import eventlet
-import tests
-socket = eventlet.patcher.original('socket')
-threading = eventlet.patcher.original('threading')
-
-class TcpEchoClientProtocol(tests.asyncio.Protocol):
-    def __init__(self, message, loop):
-        self.message = message
-        self.loop = loop
-        self.state = 'new'
-        self.received = None
-
-    def connection_made(self, transport):
-        self.state = 'ping'
-        transport.write(self.message)
-
-    def data_received(self, data):
-        self.state = 'pong'
-        self.received = data
-
-    def connection_lost(self, exc):
-        self.state = 'closed'
-        self.loop.stop()
-
-
-class TcpServer(threading.Thread):
-    def __init__(self, host, port, event):
-        super(TcpServer, self).__init__()
-        self.host = host
-        self.port = port
-        self.event = event
-        self.sock = None
-        self.client = None
-
-    def run(self):
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock = sock
-        try:
-            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-            sock.bind((self.host, self.port))
-            sock.listen(1)
-
-            self.event.set()
-            client, addr = sock.accept()
-            self.client = client
-            try:
-                message = client.recv(100)
-                client.sendall(message)
-            finally:
-                client.close()
-                self.client = None
-        finally:
-            sock.close()
-            self.sock = None
-
-    def stop(self):
-        self.join()
-
-
-class NetworkTests(tests.TestCase):
-    def test_tcp_hello(self):
-        port = 8888
-        host = '127.0.0.1'
-        message = b'Hello World!'
-
-        event = threading.Event()
-        server = TcpServer(host, port, event)
-        server.start()
-        self.addCleanup(server.stop)
-        event.wait()
-
-        proto = TcpEchoClientProtocol(message, self.loop)
-        coro = self.loop.create_connection(lambda: proto, host, port)
-        self.loop.run_until_complete(coro)
-        self.assertNotEqual(proto.state, 'new')
-
-        self.loop.run_forever()
-        self.assertEqual(proto.state, 'closed')
-        self.assertEqual(proto.received, message)
-
-
-if __name__ == '__main__':
-    import unittest
-    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_thread.py 
new/aioeventlet-0.5.1/tests/test_thread.py
--- old/aioeventlet-0.4/tests/test_thread.py    2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_thread.py  1970-01-01 01:00:00.000000000 
+0100
@@ -1,101 +0,0 @@
-import eventlet
-import tests
-threading = eventlet.patcher.original('threading')
-try:
-    import asyncio
-except ImportError:
-    import trollius as asyncio
-
-try:
-    get_ident = threading.get_ident   # Python 3
-except AttributeError:
-    get_ident = threading._get_ident   # Python 2
-
-class ThreadTests(tests.TestCase):
-    def test_ident(self):
-        result = {'ident': None}
-
-        def work():
-            result['ident'] = get_ident()
-
-        fut = self.loop.run_in_executor(None, work)
-        self.loop.run_until_complete(fut)
-
-        # ensure that work() was executed in a different thread
-        work_ident = result['ident']
-        self.assertIsNotNone(work_ident)
-        self.assertNotEqual(work_ident, get_ident())
-
-    def test_run_twice(self):
-        result = []
-
-        def work():
-            result.append("run")
-
-        fut = self.loop.run_in_executor(None, work)
-        self.loop.run_until_complete(fut)
-        self.assertEqual(result, ["run"])
-
-        # ensure that run_in_executor() can be called twice
-        fut = self.loop.run_in_executor(None, work)
-        self.loop.run_until_complete(fut)
-        self.assertEqual(result, ["run", "run"])
-
-    def test_policy(self):
-        result = {'loop': 'not set'}   # sentinel, different than None
-
-        def work():
-            try:
-                result['loop'] = asyncio.get_event_loop()
-            except AssertionError as exc:
-                result['loop'] = exc
-
-        # get_event_loop() must return None in a different thread
-        fut = self.loop.run_in_executor(None, work)
-        self.loop.run_until_complete(fut)
-        self.assertIsInstance(result['loop'], AssertionError)
-
-    def test_run_in_thread(self):
-        class LoopThread(threading.Thread):
-            def __init__(self, event):
-                super(LoopThread, self).__init__()
-                self.loop = None
-                self.event = event
-
-            def run(self):
-                self.loop = asyncio.new_event_loop()
-                try:
-                    self.loop.set_debug(True)
-                    asyncio.set_event_loop(self.loop)
-
-                    self.event.set()
-                    self.loop.run_forever()
-                finally:
-                    self.loop.close()
-                    asyncio.set_event_loop(None)
-
-        result = []
-
-        # start an event loop in a thread
-        event = threading.Event()
-        thread = LoopThread(event)
-        thread.start()
-        event.wait()
-        loop = thread.loop
-
-        def func(loop):
-            result.append(threading.current_thread().ident)
-            loop.stop()
-
-        # call func() in a different thread using the event loop
-        tid = thread.ident
-        loop.call_soon_threadsafe(func, loop)
-
-        # stop the event loop
-        thread.join()
-        self.assertEqual(result, [tid])
-
-
-if __name__ == '__main__':
-    import unittest
-    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tests/test_timer.py 
new/aioeventlet-0.5.1/tests/test_timer.py
--- old/aioeventlet-0.4/tests/test_timer.py     2014-12-03 00:24:56.000000000 
+0100
+++ new/aioeventlet-0.5.1/tests/test_timer.py   1970-01-01 01:00:00.000000000 
+0100
@@ -1,48 +0,0 @@
-import datetime
-import eventlet
-import tests
-
-class TimerTests(tests.TestCase):
-    def test_display_date(self):
-        result = []
-        delay = 0.050
-        count = 3
-
-        def display_date(end_time, loop):
-            result.append(datetime.datetime.now())
-            if (loop.time() + delay) < end_time:
-                loop.call_later(delay, display_date, end_time, loop)
-            else:
-                loop.stop()
-
-        end_time = self.loop.time() + delay * count
-        self.loop.call_soon(display_date, end_time, self.loop)
-        self.loop.run_forever()
-
-        self.assertEqual(len(result), count, result)
-
-    def test_later_stop_later(self):
-        result = []
-
-        def hello():
-            result.append("Hello")
-
-        def world(loop):
-            result.append("World")
-            loop.stop()
-
-        self.loop.call_later(0.001, hello)
-        self.loop.call_later(0.025, self.loop.stop)
-        self.loop.call_later(0.050, world, self.loop)
-        self.loop.run_forever()
-
-        eventlet.sleep(0.100)
-        self.assertEqual(result, ["Hello"])
-
-        self.loop.run_forever()
-        self.assertEqual(result, ["Hello", "World"])
-
-
-if __name__ == '__main__':
-    import unittest
-    unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aioeventlet-0.4/tox.ini new/aioeventlet-0.5.1/tox.ini
--- old/aioeventlet-0.4/tox.ini 2014-11-24 20:44:00.000000000 +0100
+++ new/aioeventlet-0.5.1/tox.ini       2016-02-22 14:28:45.000000000 +0100
@@ -1,84 +1,85 @@
 [tox]
 minversion = 1.4
-envlist = py26,py27,py27_old,py27_patch,py32,py33,py33_old,py34,py35
+envlist = py27,py27_old,py27_patch,py33,py3_patch,py3_old,py34,py35
 
-[testenv:py26]
-setenv =
-   TROLLIUSDEBUG = 1
-deps=
-   eventlet
-   mock
-   trollius
-   unittest2
-commands=python runtests.py -r
+[testenv]
+commands=
+    python runtests.py -r
+    python run_aiotest.py -r
 
 [testenv:py27]
 setenv =
    TROLLIUSDEBUG = 1
 deps=
-   eventlet
-   mock
-   trollius
-commands=python runtests.py -r
+    aiotest
+    eventlet
+    mock
+    trollius
 
 [testenv:py27_old]
 basepython = python2.7
 setenv =
    TROLLIUSDEBUG = 1
 deps=
-   eventlet==0.14.0
-   mock
-   trollius==0.3
-commands=python runtests.py -r
+    aiotest
+    eventlet==0.14.0
+    mock
+    trollius==0.3
 
 [testenv:py27_patch]
 basepython = python2.7
 setenv =
    TROLLIUSDEBUG = 1
 deps=
-   eventlet
-   mock
-   trollius
-commands=python runtests.py -r -m
+    aiotest
+    eventlet
+    mock
+    trollius
+commands=
+    python runtests.py -r -m
+    python run_aiotest.py -r -m
 
-[testenv:py32]
+[testenv:py33]
 setenv =
-   TROLLIUSDEBUG = 1
+   PYTHONASYNCIODEBUG = 1
 deps=
-   eventlet
-   mock
-   trollius
-commands=python runtests.py -r
+    aiotest
+    asyncio
+    eventlet
 
-[testenv:py33]
+[testenv:py3_patch]
+basepython = python3
 setenv =
    PYTHONASYNCIODEBUG = 1
 deps=
-   asyncio
-   eventlet
-commands=python runtests.py -r
+    aiotest
+    asyncio
+    eventlet
+commands=
+    python runtests.py -r -m
+    python run_aiotest.py -r -m
 
-[testenv:py33_old]
-basepython = python3.3
+[testenv:py3_old]
+basepython = python3
 setenv =
    PYTHONASYNCIODEBUG = 1
 deps=
-   asyncio==0.4.1
-   eventlet==0.15.0
-commands=python runtests.py -r
+    aiotest
+    asyncio==0.4.1
+    eventlet==0.15.0
 
 [testenv:py34]
 basepython = python3.4
 setenv =
    PYTHONASYNCIODEBUG = 1
 deps=
-   eventlet
-commands=python runtests.py -r
+    aiotest
+    eventlet
 
 [testenv:py35]
 basepython = python3.5
 setenv =
    PYTHONASYNCIODEBUG = 1
 deps=
-   eventlet
-commands=python runtests.py -r
+    aiotest
+    eventlet


Reply via email to