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 - [email protected]
+
+- Require only trollus on py2 the asyncio is for py3 < 3.4
+
+-------------------------------------------------------------------
+Thu May 10 13:52:56 UTC 2018 - [email protected]
+
+- Version update to 0.5.2
+ * No obvious changelog or SCM present
+
+-------------------------------------------------------------------
+Thu Aug 24 13:32:39 UTC 2017 - [email protected]
+
+- 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": '[email protected]',
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