Date: Sunday, July 1, 2018 @ 18:44:12 Author: foutrelis Revision: 349419
Fix build with Python 3.7 Added: gunicorn/trunk/pr1796-python37.patch Modified: gunicorn/trunk/PKGBUILD -----------------------+ PKGBUILD | 8 + pr1796-python37.patch | 281 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 287 insertions(+), 2 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2018-07-01 15:07:29 UTC (rev 349418) +++ PKGBUILD 2018-07-01 18:44:12 UTC (rev 349419) @@ -16,10 +16,14 @@ checkdepends=('python2-mock' 'python-coverage' 'python2-coverage' 'python-pytest' 'python2-pytest' 'python-pytest-cov' 'python2-pytest-cov' 'python-pytest-runner' 'python2-pytest-runner') -source=("$pkgbase-$pkgver.tar.gz::https://github.com/benoitc/$pkgbase/archive/$pkgver.tar.gz") -sha512sums=('2fbdbc939c08fde2035d88780f97afdcdd9aada9267fefdd9c39e2c8e48f790077ea9e45e7149e93d2f97041d176af8470e0be400775ee775e50573f7de03148') +source=("$pkgbase-$pkgver.tar.gz::https://github.com/benoitc/$pkgbase/archive/$pkgver.tar.gz" + pr1796-python37.patch) +sha512sums=('2fbdbc939c08fde2035d88780f97afdcdd9aada9267fefdd9c39e2c8e48f790077ea9e45e7149e93d2f97041d176af8470e0be400775ee775e50573f7de03148' + 'cae6af688ca47a3b56196e7894f320a360ed60a9542b499dd072218c79c6210852510e7698dd6e3cf7cea7220cba460e3c7c0c48faa3e36366246f2baf90c577') prepare() { + # https://github.com/benoitc/gunicorn/issues/1795 + patch -d gunicorn-$pkgver -Np1 < pr1796-python37.patch sed -e 's/==/>=/' -e 's/,<.*$//' -i gunicorn-$pkgver/requirements_test.txt cp -a gunicorn-$pkgver{,-py2} } Added: pr1796-python37.patch =================================================================== --- pr1796-python37.patch (rev 0) +++ pr1796-python37.patch 2018-07-01 18:44:12 UTC (rev 349419) @@ -0,0 +1,281 @@ +From 0a88d19ddf29b461b819b66e49ea313c89ab576c Mon Sep 17 00:00:00 2001 +From: Diego Oliveira <cont...@diegoholiveira.com> +Date: Sat, 26 May 2018 10:22:42 -0300 +Subject: [PATCH 1/6] Move the module async to _async + +--- + gunicorn/workers/{async.py => _async.py} | 0 + gunicorn/workers/geventlet.py | 2 +- + gunicorn/workers/ggevent.py | 2 +- + 3 files changed, 2 insertions(+), 2 deletions(-) + rename gunicorn/workers/{async.py => _async.py} (100%) + +diff --git a/gunicorn/workers/async.py b/gunicorn/workers/_async.py +similarity index 100% +rename from gunicorn/workers/async.py +rename to gunicorn/workers/_async.py +diff --git a/gunicorn/workers/geventlet.py b/gunicorn/workers/geventlet.py +index f0bb06495..0c0fa1dcb 100644 +--- a/gunicorn/workers/geventlet.py ++++ b/gunicorn/workers/geventlet.py +@@ -24,7 +24,7 @@ + import greenlet + + from gunicorn.http.wsgi import sendfile as o_sendfile +-from gunicorn.workers.async import AsyncWorker ++from gunicorn.workers._async import AsyncWorker + + def _eventlet_sendfile(fdout, fdin, offset, nbytes): + while True: +diff --git a/gunicorn/workers/ggevent.py b/gunicorn/workers/ggevent.py +index 34ee72a82..ac9011bef 100644 +--- a/gunicorn/workers/ggevent.py ++++ b/gunicorn/workers/ggevent.py +@@ -27,7 +27,7 @@ + + import gunicorn + from gunicorn.http.wsgi import base_environ +-from gunicorn.workers.async import AsyncWorker ++from gunicorn.workers._async import AsyncWorker + from gunicorn.http.wsgi import sendfile as o_sendfile + + VERSION = "gevent/%s gunicorn/%s" % (gevent.__version__, gunicorn.__version__) + +From 43e31c366b79d9e212bcbc9ad7bae788539bd62f Mon Sep 17 00:00:00 2001 +From: Diego Oliveira <cont...@diegoholiveira.com> +Date: Sat, 26 May 2018 10:42:15 -0300 +Subject: [PATCH 2/6] Fix gaiohttp worker + +--- + .gitignore | 2 ++ + THANKS | 1 + + docs/source/news.rst | 8 ++++++++ + gunicorn/workers/__init__.py | 2 +- + gunicorn/workers/_gaiohttp.py | 2 +- + requirements_test.txt | 4 ++-- + tests/test_gaiohttp.py | 2 +- + 7 files changed, 16 insertions(+), 5 deletions(-) + +diff --git a/THANKS b/THANKS +index f23b74ed0..ff271ad13 100644 +--- a/THANKS ++++ b/THANKS +@@ -49,6 +49,7 @@ Dariusz Suchojad <dsuch-git...@m.zato.io> + David Vincelli <da...@freshbooks.com> + David Wolever <da...@wolever.net> + Denis Bilenko <denis.bile...@gmail.com> ++Diego Oliveira <cont...@diegoholiveira.com> + Dima Barsky <git...@kappa.ac93.org> + Djoume Salvetti <djo...@freshbooks.com> + Dmitry Medvinsky <m...@dmedvinsky.name> +diff --git a/docs/source/news.rst b/docs/source/news.rst +index 3d90aead2..eb9c4e498 100644 +--- a/docs/source/news.rst ++++ b/docs/source/news.rst +@@ -2,6 +2,14 @@ + Changelog + ========= + ++19.9.0 / 2018/05/26 ++=================== ++ ++- the internal module `gunicorn.workers.async` was renamed to `gunicorn.workers.async` ++ since ``async`` is now a reserved word in Python 3.7 ++ (:pr:`1527`) ++ ++ + 19.8.1 / 2018/04/30 + =================== + +diff --git a/gunicorn/workers/__init__.py b/gunicorn/workers/__init__.py +index 05a3e286a..fceaa03c1 100644 +--- a/gunicorn/workers/__init__.py ++++ b/gunicorn/workers/__init__.py +@@ -17,6 +17,6 @@ + } + + +-if sys.version_info >= (3, 3): ++if sys.version_info >= (3, 4): + # gaiohttp worker can be used with Python 3.3+ only. + SUPPORTED_WORKERS["gaiohttp"] = "gunicorn.workers.gaiohttp.AiohttpWorker" +diff --git a/gunicorn/workers/_gaiohttp.py b/gunicorn/workers/_gaiohttp.py +index cdce4be75..fe378c351 100644 +--- a/gunicorn/workers/_gaiohttp.py ++++ b/gunicorn/workers/_gaiohttp.py +@@ -46,7 +46,7 @@ def init_process(self): + super().init_process() + + def run(self): +- self._runner = asyncio.async(self._run(), loop=self.loop) ++ self._runner = asyncio.ensure_future(self._run(), loop=self.loop) + + try: + self.loop.run_until_complete(self._runner) +diff --git a/requirements_test.txt b/requirements_test.txt +index a99b558bf..30cce5ed5 100644 +--- a/requirements_test.txt ++++ b/requirements_test.txt +@@ -1,3 +1,3 @@ + coverage>=4.0,<4.4 # TODO: https://github.com/benoitc/gunicorn/issues/1548 +-pytest==3.0.5 +-pytest-cov==2.4.0 ++pytest ++pytest-cov +diff --git a/tests/test_gaiohttp.py b/tests/test_gaiohttp.py +index 6a08c413d..e58f36c10 100644 +--- a/tests/test_gaiohttp.py ++++ b/tests/test_gaiohttp.py +@@ -50,7 +50,7 @@ def test_run(self, m_asyncio): + self.worker.loop = mock.Mock() + self.worker.run() + +- self.assertTrue(m_asyncio.async.called) ++ self.assertTrue(m_asyncio.ensure_future.called) + self.assertTrue(self.worker.loop.run_until_complete.called) + self.assertTrue(self.worker.loop.close.called) + + +From 5a82e7c068ecf01cbdb4d59848149a44a8c6b35f Mon Sep 17 00:00:00 2001 +From: Diego Oliveira <cont...@diegoholiveira.com> +Date: Sat, 26 May 2018 17:11:33 -0300 +Subject: [PATCH 3/6] Change _async to base_async + +--- + docs/source/news.rst | 2 +- + gunicorn/workers/{_async.py => base_async.py} | 0 + gunicorn/workers/geventlet.py | 2 +- + gunicorn/workers/ggevent.py | 2 +- + 4 files changed, 3 insertions(+), 3 deletions(-) + rename gunicorn/workers/{_async.py => base_async.py} (100%) + +diff --git a/docs/source/news.rst b/docs/source/news.rst +index eb9c4e498..ae28a7cba 100644 +--- a/docs/source/news.rst ++++ b/docs/source/news.rst +@@ -5,7 +5,7 @@ Changelog + 19.9.0 / 2018/05/26 + =================== + +-- the internal module `gunicorn.workers.async` was renamed to `gunicorn.workers.async` ++- the internal module `gunicorn.workers.async` was renamed to `gunicorn.workers.base_async` + since ``async`` is now a reserved word in Python 3.7 + (:pr:`1527`) + +diff --git a/gunicorn/workers/_async.py b/gunicorn/workers/base_async.py +similarity index 100% +rename from gunicorn/workers/_async.py +rename to gunicorn/workers/base_async.py +diff --git a/gunicorn/workers/geventlet.py b/gunicorn/workers/geventlet.py +index 0c0fa1dcb..189062c89 100644 +--- a/gunicorn/workers/geventlet.py ++++ b/gunicorn/workers/geventlet.py +@@ -24,7 +24,7 @@ + import greenlet + + from gunicorn.http.wsgi import sendfile as o_sendfile +-from gunicorn.workers._async import AsyncWorker ++from gunicorn.workers.base_async import AsyncWorker + + def _eventlet_sendfile(fdout, fdin, offset, nbytes): + while True: +diff --git a/gunicorn/workers/ggevent.py b/gunicorn/workers/ggevent.py +index ac9011bef..fb9d91947 100644 +--- a/gunicorn/workers/ggevent.py ++++ b/gunicorn/workers/ggevent.py +@@ -27,7 +27,7 @@ + + import gunicorn + from gunicorn.http.wsgi import base_environ +-from gunicorn.workers._async import AsyncWorker ++from gunicorn.workers.base_async import AsyncWorker + from gunicorn.http.wsgi import sendfile as o_sendfile + + VERSION = "gevent/%s gunicorn/%s" % (gevent.__version__, gunicorn.__version__) + +From 72dde4336ddd9f9f53410011ad35ada866a93c4f Mon Sep 17 00:00:00 2001 +From: Diego Oliveira <cont...@diegoholiveira.com> +Date: Sun, 3 Jun 2018 11:38:39 -0300 +Subject: [PATCH 4/6] Fix style issues and revert some unrelated changes + +--- + .gitignore | 2 -- + docs/source/news.rst | 4 ++-- + requirements_test.txt | 4 ++-- + 3 files changed, 4 insertions(+), 6 deletions(-) + +diff --git a/docs/source/news.rst b/docs/source/news.rst +index ae28a7cba..0d7b494dd 100644 +--- a/docs/source/news.rst ++++ b/docs/source/news.rst +@@ -2,10 +2,10 @@ + Changelog + ========= + +-19.9.0 / 2018/05/26 ++19.9.0 / not released + =================== + +-- the internal module `gunicorn.workers.async` was renamed to `gunicorn.workers.base_async` ++- The internal module ``gunicorn.workers.async`` was renamed to ``gunicorn.workers.base_async`` + since ``async`` is now a reserved word in Python 3.7 + (:pr:`1527`) + +diff --git a/requirements_test.txt b/requirements_test.txt +index 30cce5ed5..a99b558bf 100644 +--- a/requirements_test.txt ++++ b/requirements_test.txt +@@ -1,3 +1,3 @@ + coverage>=4.0,<4.4 # TODO: https://github.com/benoitc/gunicorn/issues/1548 +-pytest +-pytest-cov ++pytest==3.0.5 ++pytest-cov==2.4.0 + +From 07dc7167003d231364991416080367cf103a2c26 Mon Sep 17 00:00:00 2001 +From: Berker Peksag <berker.pek...@gmail.com> +Date: Sun, 3 Jun 2018 18:35:23 +0300 +Subject: [PATCH 5/6] markup tweaks + +--- + docs/source/news.rst | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/docs/source/news.rst b/docs/source/news.rst +index 0d7b494dd..05a4b4139 100644 +--- a/docs/source/news.rst ++++ b/docs/source/news.rst +@@ -3,10 +3,10 @@ Changelog + ========= + + 19.9.0 / not released +-=================== ++===================== + + - The internal module ``gunicorn.workers.async`` was renamed to ``gunicorn.workers.base_async`` +- since ``async`` is now a reserved word in Python 3.7 ++ since ``async`` is now a reserved word in Python 3.7. + (:pr:`1527`) + + + +From d338fe16f897b81b70bd4c4b6377f6ad269aca58 Mon Sep 17 00:00:00 2001 +From: Diego Oliveira <cont...@diegoholiveira.com> +Date: Sat, 9 Jun 2018 08:39:25 -0300 +Subject: [PATCH 6/6] Fix comment about python version + +--- + gunicorn/workers/__init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gunicorn/workers/__init__.py b/gunicorn/workers/__init__.py +index fceaa03c1..074e0012e 100644 +--- a/gunicorn/workers/__init__.py ++++ b/gunicorn/workers/__init__.py +@@ -18,5 +18,5 @@ + + + if sys.version_info >= (3, 4): +- # gaiohttp worker can be used with Python 3.3+ only. ++ # gaiohttp worker can be used with Python 3.4+ only. + SUPPORTED_WORKERS["gaiohttp"] = "gunicorn.workers.gaiohttp.AiohttpWorker"