From 15e7b20f1eb6518950cd060818eaafb550b810b587d34830b1c75a6d2fa0eca4 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Sat, 6 Jan 2024 20:15:13 +0000 Subject: [PATCH] - update to 2.0.1: * Ask for safe args strings when calling inspect.active * Enable basic auth for api, fixes * Allow non integer rate limits like 3/m * Provide support for Python 3.10 and 3.11 * Drop python 3.6 support * Improve error message - drop remove-mock.patch: upstream - drop backport_run_in_executor.patch: obsolete - add python-rpm-macros dependency * Fixing GitHub OAuth callback handling * Switch away from Google+ OAuth2 * Fix a bug in humanizing timestamps on the tasks page * Removed 500px height limitation * Fixed Python 3 mistake in Github Login Handler * Support environment variables in tornado 4.2.0 and >=4.3 * Fix XSS on tasks page * Replace websokets with ajax * Fix bug in tasks page template * Fix celery version comparsion * Refactor version comparision * Use redis as default broker * Update dashboard counters on worker table updates * Move shut down group button to worker page * Update navbar title * Add a script for calling tasks * Add a link to worker name * Remove active task start time from worker page * Fix py3 json serialization * Enable all tasks columns with --tasks-options=all OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-flower?expand=0&rev=17 --- backport_run_in_executor.patch | 48 ------------- flower-1.1.0.tar.gz | 3 - flower-2.0.1.tar.gz | 3 + python-flower.changes | 69 ++++++++++-------- python-flower.spec | 21 +++--- remove-mock.patch | 124 --------------------------------- 6 files changed, 52 insertions(+), 216 deletions(-) delete mode 100644 backport_run_in_executor.patch delete mode 100644 flower-1.1.0.tar.gz create mode 100644 flower-2.0.1.tar.gz delete mode 100644 remove-mock.patch diff --git a/backport_run_in_executor.patch b/backport_run_in_executor.patch deleted file mode 100644 index 51dcd9b..0000000 --- a/backport_run_in_executor.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 5741cbcbc5c2a75c2552326018ee97b8fe5f257f Mon Sep 17 00:00:00 2001 -From: John Vandenberg -Date: Fri, 22 Mar 2019 08:28:34 +0700 -Subject: [PATCH] Backport run_in_executor - ---- - flower/api/tasks.py | 21 +++++++++++++++++++-- - 1 file changed, 19 insertions(+), 2 deletions(-) - -Index: flower-1.0.0/flower/api/tasks.py -=================================================================== ---- flower-1.0.0.orig/flower/api/tasks.py -+++ flower-1.0.0/flower/api/tasks.py -@@ -83,6 +83,24 @@ class BaseTaskHandler(BaseHandler): - return result - - -+def inline_run_in_executor(func, *args): -+ from tornado.concurrent import Future, chain_future -+ -+ io_loop = IOLoop.current() -+ if not hasattr(io_loop, "_executor"): -+ import concurrent.futures -+ from tornado.process import cpu_count -+ -+ io_loop._executor = concurrent.futures.ThreadPoolExecutor( -+ max_workers=(cpu_count() * 5) -+ ) -+ executor = io_loop._executor -+ c_future = executor.submit(func, *args) -+ t_future = Future() -+ io_loop.add_future(c_future, lambda f: chain_future(f, t_future)) -+ return t_future -+ -+ - class TaskApply(BaseTaskHandler): - @web.authenticated - @gen.coroutine -@@ -143,8 +161,7 @@ Execute a task by name and wait results - result = task.apply_async(args=args, kwargs=kwargs, **options) - response = {'task-id': result.task_id} - -- response = yield IOLoop.current().run_in_executor( -- None, self.wait_results, result, response) -+ response = yield inline_run_in_executor(self.wait_results, result, response) - self.write(response) - - def wait_results(self, result, response): diff --git a/flower-1.1.0.tar.gz b/flower-1.1.0.tar.gz deleted file mode 100644 index 4f61a6d..0000000 --- a/flower-1.1.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f920ca2902d7539fc180ab15e51f1d918355e5cc23da854ff9d59c6e5a1725b6 -size 1974126 diff --git a/flower-2.0.1.tar.gz b/flower-2.0.1.tar.gz new file mode 100644 index 0000000..720f68f --- /dev/null +++ b/flower-2.0.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ab717b979530770c16afb48b50d2a98d23c3e9fe39851dcf6bc4d01845a02a0 +size 3220408 diff --git a/python-flower.changes b/python-flower.changes index 0f50076..9e9c1c1 100644 --- a/python-flower.changes +++ b/python-flower.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Sat Jan 6 20:11:53 UTC 2024 - Dirk Müller + +- update to 2.0.1: + * Ask for safe args strings when calling inspect.active + * Enable basic auth for api, fixes + * Allow non integer rate limits like 3/m + * Provide support for Python 3.10 and 3.11 + * Drop python 3.6 support + * Improve error message +- drop remove-mock.patch: upstream +- drop backport_run_in_executor.patch: obsolete + ------------------------------------------------------------------- Wed Jul 13 01:41:44 UTC 2022 - Steve Kowalik @@ -35,7 +48,7 @@ Tue May 17 12:28:23 UTC 2022 - pgajdos@suse.com ------------------------------------------------------------------- Tue Jan 11 20:58:26 UTC 2022 - Dirk Müller -- add python-rpm-macros dependency +- add python-rpm-macros dependency ------------------------------------------------------------------- Tue Feb 2 00:18:01 UTC 2021 - John Vandenberg @@ -82,57 +95,57 @@ Fri Mar 22 01:59:49 UTC 2019 - John Vandenberg * Upgrade tornado * Fix the out-dated doc link in Worker.html * Declare futures dependency using environment markers - * Fixing GitHub OAuth callback handling + * Fixing GitHub OAuth callback handling * Correct spelling error * Correct spelling and grammatical errors - * Switch away from Google+ OAuth2 + * Switch away from Google+ OAuth2 * restrict release dependencies with version upper-bound - from v0.9.2 * Add logout button - * Fix a bug in humanizing timestamps on the tasks page + * Fix a bug in humanizing timestamps on the tasks page * Handle errors in custom format_task functions * Pending tasks don't have a worker * Fix result encoding - * Removed 500px height limitation + * Removed 500px height limitation * Do not show debug information on 500 error - * Fixed Python 3 mistake in Github Login Handler - * Support environment variables in tornado 4.2.0 and >=4.3 - * Fix XSS on tasks page + * Fixed Python 3 mistake in Github Login Handler + * Support environment variables in tornado 4.2.0 and >=4.3 + * Fix XSS on tasks page * Enable cross-origin websockets * Fix bugreport * Resolve relative config file names * Fix broker api validation * Loosen broker api validation - * Replace websokets with ajax - * Fix bug in tasks page template - * Fix celery version comparsion - * Refactor version comparision + * Replace websokets with ajax + * Fix bug in tasks page template + * Fix celery version comparsion + * Refactor version comparision * Fixes in config documents * Fix invalid URL used for datatable query - * Use redis as default broker - * Update dashboard counters on worker table updates - * Move shut down group button to worker page - * Update navbar title - * Add a script for calling tasks - * Add a link to worker name - * Remove active task start time from worker page - * Fix py3 json serialization + * Use redis as default broker + * Update dashboard counters on worker table updates + * Move shut down group button to worker page + * Update navbar title + * Add a script for calling tasks + * Add a link to worker name + * Remove active task start time from worker page + * Fix py3 json serialization * Fix Error 500 because task.worker is None * HTML escape task args * Disable broker cert verification - * Enable all tasks columns with --tasks-options=all - * Add runtime to default tasks columns - * Document --tasks-columns=all - * Refactor redis broker + * Enable all tasks columns with --tasks-options=all + * Add runtime to default tasks columns + * Document --tasks-columns=all + * Refactor redis broker * Support CELERY_QUEUES option - * Remove rabbitmq-plugins enable warning + * Remove rabbitmq-plugins enable warning * Fix broken link to celery configuration document - from v0.9.1 * Improve envvar handling * By default update worker cache * Fix task sorting for py3 - * Fix missing workername - * Fix monitor tab problem of missing graphs + * Fix missing workername + * Fix monitor tab problem of missing graphs - from v0.9.0 * workers can be sorted and filtered * tasks can be sorted, filtered by name, state, worker, runtime, etc. @@ -168,7 +181,7 @@ Wed Feb 20 08:09:01 UTC 2019 - John Vandenberg * Fix bug, `events.Task.as_dict` is new in `Celery 3.1.7` * events.Task.as_dict is new in Celery 3.1.7 * Refactor /api/tasks/ #515 - * Use pprint instead of ast #491 + * Use pprint instead of ast #491 * Define CELERY_ACCEPT_CONTENT for examples * Fix task searching #480 diff --git a/python-flower.spec b/python-flower.spec index 882afcf..3dbcd4c 100644 --- a/python-flower.spec +++ b/python-flower.spec @@ -1,7 +1,7 @@ # # spec file for package python-flower # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,31 +17,25 @@ Name: python-flower -Version: 1.1.0 +Version: 2.0.1 Release: 0 Summary: A web frontend for monitoring and administrating Celery clusters License: BSD-3-Clause URL: https://github.com/mher/flower Source: https://files.pythonhosted.org/packages/source/f/flower/flower-%{version}.tar.gz -# Tornado 5+ update blocked by salt, so backport the missing piece -Patch0: backport_run_in_executor.patch -# PATCH-FIX-UPSTREAM gh#mher/flower#1228 -Patch1: remove-mock.patch -BuildRequires: %{python_module Babel >= 1.0} BuildRequires: %{python_module celery >= 5.0.0} -BuildRequires: %{python_module certifi} BuildRequires: %{python_module humanize} BuildRequires: %{python_module kombu} +BuildRequires: %{python_module pip} BuildRequires: %{python_module prometheus_client >= 0.8.0} BuildRequires: %{python_module pytest} BuildRequires: %{python_module pytz} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module tornado >= 5.0.0} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-Babel >= 1.0 Requires: python-celery >= 5.0.0 -Requires: python-certifi Requires: python-humanize Requires: python-prometheus_client >= 0.8.0 Requires: python-pytz @@ -58,10 +52,10 @@ Flower is a web based tool for monitoring and administrating Celery clusters. %autosetup -p1 -n flower-%{version} %build -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %check @@ -70,6 +64,7 @@ Flower is a web based tool for monitoring and administrating Celery clusters. %files %{python_files} %license LICENSE %doc README.rst -%{python_sitelib}/* +%{python_sitelib}/flower +%{python_sitelib}/flower-%{version}.dist-info %changelog diff --git a/remove-mock.patch b/remove-mock.patch deleted file mode 100644 index 6760ea1..0000000 --- a/remove-mock.patch +++ /dev/null @@ -1,124 +0,0 @@ -Index: flower-1.1.0/tests/unit/__init__.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/__init__.py -+++ flower-1.1.0/tests/unit/__init__.py -@@ -1,3 +1,4 @@ -+from unittest import mock - from urllib.parse import urlencode - - import tornado.testing -@@ -6,7 +7,6 @@ from tornado.options import options - from tornado.concurrent import Future - - import celery --import mock - - from flower.app import Flower - from flower.urls import handlers -Index: flower-1.1.0/tests/unit/api/test_control.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/api/test_control.py -+++ flower-1.1.0/tests/unit/api/test_control.py -@@ -1,5 +1,4 @@ --from mock import MagicMock --import mock -+from unittest.mock import MagicMock, patch - from flower.api.control import ControlHandler - - from tests.unit import AsyncHTTPTestCase -@@ -174,7 +173,7 @@ class TaskControlTests(AsyncHTTPTestCase - - class ControlAuthTests(WorkerControlTests): - def test_auth(self): -- with mock.patch.object(options.mockable(), 'basic_auth', ['user1:password1']): -+ with patch.object(options.mockable(), 'basic_auth', ['user1:password1']): - app = self._app.capp - app.control.broadcast = MagicMock() - r = self.post('/api/worker/shutdown/test', body={}) -Index: flower-1.1.0/tests/unit/api/test_workers.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/api/test_workers.py -+++ flower-1.1.0/tests/unit/api/test_workers.py -@@ -1,6 +1,6 @@ - import json - --import mock -+from unittest import mock - - from flower.api.control import ControlHandler - from flower.inspector import Inspector -Index: flower-1.1.0/tests/unit/test_command.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/test_command.py -+++ flower-1.1.0/tests/unit/test_command.py -@@ -5,7 +5,6 @@ import unittest - import subprocess - from unittest.mock import Mock, patch - --import mock - from prometheus_client import Histogram - - from flower.command import apply_options, warn_about_celery_args_used_in_flower_command, apply_env_options -@@ -49,7 +48,7 @@ class TestFlowerCommand(AsyncHTTPTestCas - - create flower command - """ - celery_app = self._get_celery_app() -- with mock.patch.object(celery_app, '_autodiscover_tasks') as autodiscover: -+ with patch.object(celery_app, '_autodiscover_tasks') as autodiscover: - celery_app.autodiscover_tasks() - - self.get_app(capp=celery_app) -Index: flower-1.1.0/tests/unit/api/test_tasks.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/api/test_tasks.py -+++ flower-1.1.0/tests/unit/api/test_tasks.py -@@ -1,4 +1,4 @@ --from mock import Mock, patch -+from unittest.mock import Mock, patch - from datetime import datetime, timedelta - - from celery.result import AsyncResult -@@ -16,7 +16,7 @@ from collections import OrderedDict - - class ApplyTests(AsyncHTTPTestCase): - def test_apply(self): -- from mock import patch, PropertyMock -+ from unittest.mock import patch, PropertyMock - import json - - result = 'result' -Index: flower-1.1.0/tests/unit/utils/test_broker.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/utils/test_broker.py -+++ flower-1.1.0/tests/unit/utils/test_broker.py -@@ -1,6 +1,6 @@ - import unittest - --from mock import MagicMock -+from unittest.mock import MagicMock - - from flower.utils import broker - from flower.utils.broker import RabbitMQ, Redis, RedisBase, RedisSocket, Broker, RedisSentinel -Index: flower-1.1.0/tests/unit/views/test_dashboard.py -=================================================================== ---- flower-1.1.0.orig/tests/unit/views/test_dashboard.py -+++ flower-1.1.0/tests/unit/views/test_dashboard.py -@@ -1,17 +1,11 @@ - import time - import unittest --import sys -+from unittest.mock import patch - - from tests.unit import AsyncHTTPTestCase - from tests.unit.utils import task_succeeded_events, task_failed_events - from tests.unit.utils import HtmlTableParser - --if sys.version_info >= (2, 7): -- from mock import patch --else: -- from unittest.mock import patch -- -- - from celery.events import Event - from celery.utils import uuid -