Hello community, here is the log from the commit of package python-aioeventlet for openSUSE:Factory checked in at 2020-08-28 21:20:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-aioeventlet (Old) and /work/SRC/openSUSE:Factory/.python-aioeventlet.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aioeventlet" Fri Aug 28 21:20:30 2020 rev:4 rq:828003 version:0.5.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-aioeventlet/python-aioeventlet.changes 2019-11-06 14:05:50.884769835 +0100 +++ /work/SRC/openSUSE:Factory/.python-aioeventlet.new.3399/python-aioeventlet.changes 2020-08-28 21:21:31.352328900 +0200 @@ -1,0 +2,6 @@ +Wed Aug 19 10:34:12 UTC 2020 - John Vandenberg <jay...@gmail.com> + +- Add pr_1.patch for Python 3.7+ support +- Activate test suite on Python 3.7+ + +------------------------------------------------------------------- New: ---- pr_1.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-aioeventlet.spec ++++++ --- /var/tmp/diff_new_pack.OV8rfL/_old 2020-08-28 21:21:31.980329205 +0200 +++ /var/tmp/diff_new_pack.OV8rfL/_new 2020-08-28 21:21:31.984329207 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-aioeventlet # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,6 +26,10 @@ License: Apache-2.0 URL: https://pypi.org/project/aioeventlet/ Source: https://files.pythonhosted.org/packages/source/a/aioeventlet/aioeventlet-%{version}.tar.gz +# pr_1.patch is Python 3.7+ support +Patch0: pr_1.patch +BuildRequires: %{python_module eventlet} +BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: python-rpm-macros Requires: python-eventlet @@ -51,6 +55,7 @@ %prep %setup -q -n aioeventlet-%{intver} +%patch0 -p1 %build %python_build @@ -58,6 +63,15 @@ %install %python_install +%check +# Python 2 requires trollius which is not in devel project, +# and test setup fails on Python 3.6 as it tries to reach live DNS server +%{python_expand PYTHON_VERSION=%{$python_version_nodots} +if [[ ${PYTHON_VERSION:0:1} -eq 3 && ${PYTHON_VERSION:1:2} -gt 6 ]]; then + # Some tests in test_eventlet.py halt + $python -m pytest -k 'EventletTests or test_wrap_invalid_type or test_wrap_greenlet_dead or test_wrap_greenlet_running or test_greenlet' +fi} + %files %{python_files} %license COPYING %doc README ++++++ pr_1.patch ++++++ commit fb25301bd9dc5dbf77a66349b2434ee672868fd2 Author: John Vandenberg <jay...@gmail.com> Date: Wed Aug 19 17:21:53 2020 +0700 aioeventlet: Fix breakage in Python 3.7+ asyncio Index: aioeventlet-0.5.1/aioeventlet.py =================================================================== --- aioeventlet-0.5.1.orig/aioeventlet.py +++ aioeventlet-0.5.1/aioeventlet.py @@ -10,6 +10,12 @@ logger = logging.getLogger('aioeventlet' try: import asyncio + try: + import selectors + except ImportError: + pass + else: + asyncio.selectors = selectors if sys.platform == 'win32': from asyncio.windows_utils import socketpair @@ -212,16 +218,16 @@ class EventLoop(asyncio.SelectorEventLoo # the selector self._write_to_self() - def call_soon(self, callback, *args): - handle = super(EventLoop, self).call_soon(callback, *args) + def call_soon(self, callback, *args, **kwargs): + handle = super(EventLoop, self).call_soon(callback, *args, **kwargs) if self._selector is not None and self._selector._event: # selector.select() is running: write into the self-pipe to wake up # the selector self._write_to_self() return handle - def call_at(self, when, callback, *args): - handle = super(EventLoop, self).call_at(when, callback, *args) + def call_at(self, when, callback, *args, **kwargs): + handle = super(EventLoop, self).call_at(when, callback, *args, **kwargs) if self._selector is not None and self._selector._event: # selector.select() is running: write into the self-pipe to wake up # the selector @@ -329,7 +335,11 @@ def yield_future(future, loop=None): The function must not be called from the greenthread running the aioeventlet event loop. """ - future = asyncio.async(future, loop=loop) + if hasattr(asyncio, "ensure_future"): + ensure_future = asyncio.ensure_future + else: # use of async keyword has been Deprecated since Python 3.4.4 + ensure_future = getattr(asyncio, "async") + future = ensure_future(future, loop=loop) if future._loop._greenthread == eventlet.getcurrent(): raise RuntimeError("yield_future() must not be called from " "the greenthread of the aioeventlet event loop")