Hello community, here is the log from the commit of package python-celery for openSUSE:Factory checked in at 2019-02-27 15:05:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-celery (Old) and /work/SRC/openSUSE:Factory/.python-celery.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-celery" Wed Feb 27 15:05:59 2019 rev:25 rq:678212 version:4.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-celery/python-celery.changes 2019-02-01 12:22:50.806339931 +0100 +++ /work/SRC/openSUSE:Factory/.python-celery.new.28833/python-celery.changes 2019-02-27 15:06:10.322446587 +0100 @@ -1,0 +2,18 @@ +Thu Feb 21 10:48:26 UTC 2019 - John Vandenberg <jay...@gmail.com> + +- Replace no-async.patch with three Python 3.7 patches merged upstream + python37-1.patch, python37-2.patch & python37-3.patch +- Replace sed invocation with unpin-pytest.patch for clarity + +------------------------------------------------------------------- +Thu Feb 21 09:44:59 UTC 2019 - John Vandenberg <jay...@gmail.com> + +- Add missing dependency on pytz, needed by celery.utils +- Remove unused build dependency on cl + +------------------------------------------------------------------- +Fri Feb 15 11:07:36 UTC 2019 - John Vandenberg <jay...@gmail.com> + +- Add relax-billiard-pin.patch to allow billiard 3.6.0.0 + +------------------------------------------------------------------- Old: ---- no-async.patch New: ---- python37-1.patch python37-2.patch python37-3.patch relax-billiard-pin.patch unpin-pytest.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-celery.spec ++++++ --- /var/tmp/diff_new_pack.bQ7FqL/_old 2019-02-27 15:06:14.334445366 +0100 +++ /var/tmp/diff_new_pack.bQ7FqL/_new 2019-02-27 15:06:14.334445366 +0100 @@ -27,11 +27,15 @@ Source: https://files.pythonhosted.org/packages/source/c/celery/celery-%{version}.tar.gz Patch0: disable-pytest-log-capturing.patch Patch1: celery-no-redis.patch -Patch2: no-async.patch +Patch2: unpin-pytest.patch +Patch3: relax-billiard-pin.patch +# Upstream patches for Python 3.7 support +Patch4: python37-1.patch +Patch5: python37-2.patch +Patch6: python37-3.patch BuildRequires: %{python_module SQLAlchemy} BuildRequires: %{python_module billiard >= 3.5.0.2} BuildRequires: %{python_module case >= 1.3.1} -BuildRequires: %{python_module cl} BuildRequires: %{python_module curses} BuildRequires: %{python_module eventlet} BuildRequires: %{python_module gevent} @@ -39,7 +43,7 @@ BuildRequires: %{python_module pyOpenSSL} BuildRequires: %{python_module pytest >= 3.0} BuildRequires: %{python_module python-dateutil} -BuildRequires: %{python_module pytz} +BuildRequires: %{python_module pytz >= 2016.7} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: netcfg @@ -47,6 +51,7 @@ Requires: python-billiard >= 3.5.0.2 Requires: python-kombu >= 4.0.2 Requires: python-python-dateutil +Requires: python-pytz >= 2016.7 Requires: python-vine Recommends: python-curses Recommends: python-pyOpenSSL @@ -66,7 +71,6 @@ %prep %setup -q -n celery-%{version} %autopatch -p1 -sed -i -e 's:,<3.3::g' requirements/test.txt %build %python_build ++++++ python37-1.patch ++++++ >From e7002769211f7340f38df80b3112706a8e07cafb Mon Sep 17 00:00:00 2001 From: Asif Saifuddin Auvi <auv...@gmail.com> Date: Mon, 9 Jul 2018 11:33:36 +0600 Subject: [PATCH] Python 3.7 compat issues (#4852) * renamed banckend.async to asynchronous * adjust redis imports of async * adjust imports of async * import style adjust * renamed doc from async to asynchronous * renamed doc contents from async to asynchronous --- celery/backends/{async.py => asynchronous.py} | 0 celery/backends/redis.py | 7 ++++--- celery/backends/rpc.py | 2 +- ...backends.async.rst => celery.backends.asynchronous.rst} | 6 +++--- t/unit/backends/test_redis.py | 4 ++-- 5 files changed, 10 insertions(+), 9 deletions(-) rename celery/backends/{async.py => asynchronous.py} (100%) rename docs/internals/reference/{celery.backends.async.rst => celery.backends.asynchronous.rst} (52%) diff --git a/celery/backends/async.py b/celery/backends/asynchronous.py similarity index 100% rename from celery/backends/async.py rename to celery/backends/asynchronous.py diff --git a/celery/backends/redis.py b/celery/backends/redis.py index 012db0f36e..6c311d8273 100644 --- a/celery/backends/redis.py +++ b/celery/backends/redis.py @@ -19,7 +19,8 @@ from celery.utils.log import get_logger from celery.utils.time import humanize_seconds -from . import async, base +from .asynchronous import AsyncBackendMixin, BaseResultConsumer +from .base import BaseKeyValueStoreBackend try: from urllib.parse import unquote @@ -74,7 +75,7 @@ logger = get_logger(__name__) -class ResultConsumer(async.BaseResultConsumer): +class ResultConsumer(BaseResultConsumer): _pubsub = None def __init__(self, *args, **kwargs): @@ -138,7 +139,7 @@ def cancel_for(self, task_id): self._pubsub.unsubscribe(key) -class RedisBackend(base.BaseKeyValueStoreBackend, async.AsyncBackendMixin): +class RedisBackend(BaseKeyValueStoreBackend, AsyncBackendMixin): """Redis task result store.""" ResultConsumer = ResultConsumer diff --git a/celery/backends/rpc.py b/celery/backends/rpc.py index 6e31cef75e..5e6e407ce6 100644 --- a/celery/backends/rpc.py +++ b/celery/backends/rpc.py @@ -17,7 +17,7 @@ from celery.five import items, range from . import base -from .async import AsyncBackendMixin, BaseResultConsumer +from .asynchronous import AsyncBackendMixin, BaseResultConsumer __all__ = ('BacklogLimitExceeded', 'RPCBackend') diff --git a/docs/internals/reference/celery.backends.async.rst b/docs/internals/reference/celery.backends.asynchronous.rst similarity index 52% rename from docs/internals/reference/celery.backends.async.rst rename to docs/internals/reference/celery.backends.asynchronous.rst index 03d10feb33..fef524294e 100644 --- a/docs/internals/reference/celery.backends.async.rst +++ b/docs/internals/reference/celery.backends.asynchronous.rst @@ -1,12 +1,12 @@ ===================================== - ``celery.backends.async`` + ``celery.backends.asynchronous`` ===================================== .. contents:: :local: -.. currentmodule:: celery.backends.async +.. currentmodule:: celery.backends.asynchronous -.. automodule:: celery.backends.async +.. automodule:: celery.backends.asynchronous :members: :undoc-members: diff --git a/t/unit/backends/test_redis.py b/t/unit/backends/test_redis.py index 166aa0dc34..6a7dbbd501 100644 --- a/t/unit/backends/test_redis.py +++ b/t/unit/backends/test_redis.py @@ -146,7 +146,7 @@ class _RedisBackend(RedisBackend): def get_consumer(self): return self.get_backend().result_consumer - @patch('celery.backends.async.BaseResultConsumer.on_after_fork') + @patch('celery.backends.asynchronous.BaseResultConsumer.on_after_fork') def test_on_after_fork(self, parent_method): consumer = self.get_consumer() consumer.start('none') @@ -172,7 +172,7 @@ def test_on_after_fork(self, parent_method): parent_method.assert_called_once() @patch('celery.backends.redis.ResultConsumer.cancel_for') - @patch('celery.backends.async.BaseResultConsumer.on_state_change') + @patch('celery.backends.asynchronous.BaseResultConsumer.on_state_change') def test_on_state_change(self, parent_method, cancel_for): consumer = self.get_consumer() meta = {'task_id': 'testing', 'status': states.SUCCESS} ++++++ python37-2.patch ++++++ >From 1c3a15938d0b9dde674d4666689d6a6c733d64e4 Mon Sep 17 00:00:00 2001 From: kidoz <cki...@gmail.com> Date: Thu, 12 Jul 2018 20:02:10 +0300 Subject: [PATCH] Added compatibility with python 3.7 (#4902) --- celery/app/routes.py | 8 +++++++- t/unit/app/test_routes.py | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/celery/app/routes.py b/celery/app/routes.py index 9957a4feae..dc06eb988e 100644 --- a/celery/app/routes.py +++ b/celery/app/routes.py @@ -17,6 +17,12 @@ from celery.utils.functional import maybe_evaluate, mlazy from celery.utils.imports import symbol_by_name +try: + Pattern = re._pattern_type +except AttributeError: # pragma: no cover + # for support Python 3.7 + Pattern = re.Pattern + __all__ = ('MapRoute', 'Router', 'prepare') @@ -33,7 +39,7 @@ def __init__(self, map): self.map = {} self.patterns = OrderedDict() for k, v in map: - if isinstance(k, re._pattern_type): + if isinstance(k, Pattern): self.patterns[k] = v elif '*' in k: self.patterns[re.compile(glob_to_re(k))] = v diff --git a/t/unit/app/test_routes.py b/t/unit/app/test_routes.py index 8d3eac0417..5ed8c53b1c 100644 --- a/t/unit/app/test_routes.py +++ b/t/unit/app/test_routes.py @@ -78,12 +78,17 @@ def test_route_for_task(self): assert route('celery.awesome') is None def test_route_for_task__glob(self): + from re import compile + route = routes.MapRoute([ ('proj.tasks.*', 'routeA'), ('demoapp.tasks.bar.*', {'exchange': 'routeB'}), + (compile(r'(video|image)\.tasks\..*'), {'queue': 'media'}), ]) assert route('proj.tasks.foo') == {'queue': 'routeA'} assert route('demoapp.tasks.bar.moo') == {'exchange': 'routeB'} + assert route('video.tasks.foo') == {'queue': 'media'} + assert route('image.tasks.foo') == {'queue': 'media'} assert route('demoapp.foo.bar.moo') is None def test_expand_route_not_found(self): ++++++ python37-3.patch ++++++ >From 6ab775eb6b5643311af21557fa84d10ce605eb17 Mon Sep 17 00:00:00 2001 From: Omer Katz <omer.d...@gmail.com> Date: Fri, 4 Jan 2019 07:12:10 +0200 Subject: [PATCH] Avoid raising StopIterator in generators. (#5263) According to [PEP-479](https://www.python.org/dev/peps/pep-0479/) StopIteration should not be used any more to indicate the termination of a generator. Starting from Python 3.7 this behaviour is always enforced and a RuntimeError is raised instead. Instead of raising a StopIterator exception, we now never execute our yield statement. Since it is present Gen is still a generator but it will never yield any value. --- t/unit/worker/test_loops.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/unit/worker/test_loops.py b/t/unit/worker/test_loops.py index f86f730f16..d57b416e47 100644 --- a/t/unit/worker/test_loops.py +++ b/t/unit/worker/test_loops.py @@ -383,8 +383,8 @@ def test_poll_write_generator_stopped(self): x = X(self.app) def Gen(): - raise StopIteration() - yield + if 0: + yield gen = Gen() x.hub.add_writer(6, gen) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) ++++++ relax-billiard-pin.patch ++++++ --- celery-4.2.1-orig/requirements/default.txt 2018-05-21 14:35:08.000000000 +0700 +++ celery-4.2.1/requirements/default.txt 2019-02-15 17:25:21.902960298 +0700 @@ -1,3 +1,3 @@ pytz>dev -billiard>=3.5.0.2,<3.6.0 +billiard>=3.5.0.2 kombu>=4.2.0,<5.0 ++++++ unpin-pytest.patch ++++++ --- celery-4.2.1/requirements/test.txt.orig 2019-02-21 17:43:53.252577134 +0700 +++ celery-4.2.1/requirements/test.txt 2019-02-21 17:44:02.860644766 +0700 @@ -1,2 +1,2 @@ case>=1.3.1 -pytest>=3.0,<3.3 +pytest>=3.0