Hello community, here is the log from the commit of package python-django-q for openSUSE:Factory checked in at 2020-06-12 21:45:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-django-q (Old) and /work/SRC/openSUSE:Factory/.python-django-q.new.3606 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-q" Fri Jun 12 21:45:03 2020 rev:4 rq:814135 version:1.2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-django-q/python-django-q.changes 2020-02-20 14:59:28.566770252 +0100 +++ /work/SRC/openSUSE:Factory/.python-django-q.new.3606/python-django-q.changes 2020-06-12 21:46:13.156604343 +0200 @@ -1,0 +2,10 @@ +Fri Jun 12 11:04:36 UTC 2020 - Ondřej Súkup <mimi...@gmail.com> + +- Update to 1.2.4 + * When sync=True, re-raise exceptions from the worker + * Fix issue when using USE_TZ=False with MySQL + * Fix issues when using multiple databases with a database router + * Expose list of workers and their states via API + * Add missing migration + +------------------------------------------------------------------- Old: ---- v1.2.1.tar.gz New: ---- v1.2.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-django-q.spec ++++++ --- /var/tmp/diff_new_pack.pGgJZz/_old 2020-06-12 21:46:15.628610145 +0200 +++ /var/tmp/diff_new_pack.pGgJZz/_new 2020-06-12 21:46:15.628610145 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-django-q -Version: 1.2.1 +Version: 1.2.4 Release: 0 Summary: Multiprocessing Distributed Task Queue for Django License: MIT ++++++ v1.2.1.tar.gz -> v1.2.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/.github/FUNDING.yml new/django-q-1.2.4/.github/FUNDING.yml --- old/django-q-1.2.1/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/django-q-1.2.4/.github/FUNDING.yml 2020-06-10 11:46:50.000000000 +0200 @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [koed00] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/.travis.yml new/django-q-1.2.4/.travis.yml --- old/django-q-1.2.1/.travis.yml 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/.travis.yml 2020-06-10 11:46:50.000000000 +0200 @@ -9,8 +9,8 @@ - "3.8" env: - - DJANGO=3.0.2 - - DJANGO=2.2.9 + - DJANGO=3.0.7 + - DJANGO=2.2.13 sudo: true dist: xenial @@ -30,8 +30,8 @@ - pip install -q django==$DJANGO - pip install -r requirements.txt - pip install pytest --upgrade - - pip install pytest-django codecov sphinx - - python setup.py install + - pip install pytest-django codecov sphinx poetry + - poetry install script: - coverage run --source=django_q -m py.test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/CHANGELOG.md new/django-q-1.2.4/CHANGELOG.md --- old/django-q-1.2.1/CHANGELOG.md 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/CHANGELOG.md 2020-06-10 11:46:50.000000000 +0200 @@ -1,5 +1,36 @@ # Changelog +## [v1.2.3](https://github.com/koed00/django-q/tree/v1.2.3) (2020-05-31) + +[Full Changelog](https://github.com/koed00/django-q/compare/v1.2.2...v1.2.3) + +## [v1.2.2](https://github.com/koed00/django-q/tree/v1.2.2) (2020-05-31) + +[Full Changelog](https://github.com/koed00/django-q/compare/v1.2.1...v1.2.2) + +**Closed issues:** + +- Scheduled task being executed many times [\#426](https://github.com/Koed00/django-q/issues/426) +- schedule doesn't work [\#416](https://github.com/Koed00/django-q/issues/416) +- Expose list of workers and their states via API [\#364](https://github.com/Koed00/django-q/issues/364) +- Tasks are not encrypted, only signed [\#300](https://github.com/Koed00/django-q/issues/300) + +**Merged pull requests:** + +- Poetry [\#442](https://github.com/Koed00/django-q/pull/442) ([Koed00](https://github.com/Koed00)) +- Fix issues when using multiple databases with a database router [\#440](https://github.com/Koed00/django-q/pull/440) ([maerteijn](https://github.com/maerteijn)) +- Update documentation to say tasks are signed, not encrypted [\#429](https://github.com/Koed00/django-q/pull/429) ([asedeno](https://github.com/asedeno)) +- Fix issue when using USE\_TZ=False with MySQL [\#428](https://github.com/Koed00/django-q/pull/428) ([hhyo](https://github.com/hhyo)) +- When sync=True, re-raise exceptions from the worker. [\#417](https://github.com/Koed00/django-q/pull/417) ([rbranche](https://github.com/rbranche)) + +## [v1.2.1](https://github.com/koed00/django-q/tree/v1.2.1) (2020-02-18) + +[Full Changelog](https://github.com/koed00/django-q/compare/v1.2.0...v1.2.1) + +**Merged pull requests:** + +- Convert to f-strings [\#415](https://github.com/Koed00/django-q/pull/415) ([Koed00](https://github.com/Koed00)) + ## [v1.2.0](https://github.com/koed00/django-q/tree/v1.2.0) (2020-02-17) [Full Changelog](https://github.com/koed00/django-q/compare/v.1.1.0...v1.2.0) @@ -34,7 +65,7 @@ - Django 3 support [\#404](https://github.com/Koed00/django-q/pull/404) ([Koed00](https://github.com/Koed00)) - ability to use a Redis connection URI - closes \#402 [\#403](https://github.com/Koed00/django-q/pull/403) ([valentinogagliardi](https://github.com/valentinogagliardi)) -- Replacing `ugettext\_` functions with `gettext\_` for Django 3 [\#399](https://github.com/Koed00/django-q/pull/399) ([theunraveler](https://github.com/theunraveler)) +- Replacing `ugettext_` functions with `gettext_` for Django 3 [\#399](https://github.com/Koed00/django-q/pull/399) ([theunraveler](https://github.com/theunraveler)) - Bump django from 2.2.5 to 2.2.8 [\#395](https://github.com/Koed00/django-q/pull/395) ([dependabot[bot]](https://github.com/apps/dependabot)) - Preserve database connection when sync=True [\#393](https://github.com/Koed00/django-q/pull/393) ([Urth](https://github.com/Urth)) - Fix scheduler concurrency with multiple clusters [\#347](https://github.com/Koed00/django-q/pull/347) ([maerteijn](https://github.com/maerteijn)) @@ -69,10 +100,10 @@ - Inline import to prevent circular imports under some toolchain combinations [\#356](https://github.com/Koed00/django-q/pull/356) ([lamby](https://github.com/lamby)) - fix spelling of careful [\#355](https://github.com/Koed00/django-q/pull/355) ([tylerharper](https://github.com/tylerharper)) - Fix issue when using USE\_TZ=False with MySQL [\#353](https://github.com/Koed00/django-q/pull/353) ([maerteijn](https://github.com/maerteijn)) -- Document the behaviour of retry value properly [\#340](https://github.com/Koed00/django-q/pull/340) ([jannero](https://github.com/jannero)) -- Fix concurrency issue in timeout timer value processing [\#337](https://github.com/Koed00/django-q/pull/337) ([jannero](https://github.com/jannero)) -- Timeout handling fix and improvements to related tests [\#336](https://github.com/Koed00/django-q/pull/336) ([jannero](https://github.com/jannero)) -- Document how to run tests on your computer [\#334](https://github.com/Koed00/django-q/pull/334) ([jannero](https://github.com/jannero)) +- Document the behaviour of retry value properly [\#340](https://github.com/Koed00/django-q/pull/340) ([janneronkko](https://github.com/janneronkko)) +- Fix concurrency issue in timeout timer value processing [\#337](https://github.com/Koed00/django-q/pull/337) ([janneronkko](https://github.com/janneronkko)) +- Timeout handling fix and improvements to related tests [\#336](https://github.com/Koed00/django-q/pull/336) ([janneronkko](https://github.com/janneronkko)) +- Document how to run tests on your computer [\#334](https://github.com/Koed00/django-q/pull/334) ([janneronkko](https://github.com/janneronkko)) - Updates django version and packages [\#330](https://github.com/Koed00/django-q/pull/330) ([Koed00](https://github.com/Koed00)) - Modified django\_q imports to support Python 3.4 again in cluster.py. … [\#327](https://github.com/Koed00/django-q/pull/327) ([mattaw](https://github.com/mattaw)) @@ -131,7 +162,7 @@ - Overflow on repeats fields [\#255](https://github.com/Koed00/django-q/issues/255) - apps.py: Attempted relative import with no known parent package [\#249](https://github.com/Koed00/django-q/issues/249) - Django and Django Q on different server with Redis as broker [\#237](https://github.com/Koed00/django-q/issues/237) -- The `django\_q/tests` directory isn't in the tarball [\#226](https://github.com/Koed00/django-q/issues/226) +- The `django_q/tests` directory isn't in the tarball [\#226](https://github.com/Koed00/django-q/issues/226) - django scrapy project can't connect to redis [\#217](https://github.com/Koed00/django-q/issues/217) - django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. [\#216](https://github.com/Koed00/django-q/issues/216) - Add Sentry support [\#210](https://github.com/Koed00/django-q/issues/210) @@ -389,7 +420,7 @@ - adds version info to qinfo [\#90](https://github.com/Koed00/django-q/pull/90) ([Koed00](https://github.com/Koed00)) - Adds version and broker info to qinfo [\#89](https://github.com/Koed00/django-q/pull/89) ([Koed00](https://github.com/Koed00)) - Updates botocore, requests and six for testing [\#88](https://github.com/Koed00/django-q/pull/88) ([Koed00](https://github.com/Koed00)) -- adds `cached` option to `async\_iter` [\#87](https://github.com/Koed00/django-q/pull/87) ([Koed00](https://github.com/Koed00)) +- adds `cached` option to `async_iter` [\#87](https://github.com/Koed00/django-q/pull/87) ([Koed00](https://github.com/Koed00)) - moves hook signal in separate module [\#86](https://github.com/Koed00/django-q/pull/86) ([Koed00](https://github.com/Koed00)) - Updates psutil to 3.2.2 [\#85](https://github.com/Koed00/django-q/pull/85) ([Koed00](https://github.com/Koed00)) @@ -533,7 +564,7 @@ **Merged pull requests:** - v0.5.3 [\#49](https://github.com/Koed00/django-q/pull/49) ([Koed00](https://github.com/Koed00)) -- adds `catch\_up` configuration option [\#48](https://github.com/Koed00/django-q/pull/48) ([Koed00](https://github.com/Koed00)) +- adds `catch_up` configuration option [\#48](https://github.com/Koed00/django-q/pull/48) ([Koed00](https://github.com/Koed00)) - consolidates redis ping [\#47](https://github.com/Koed00/django-q/pull/47) ([Koed00](https://github.com/Koed00)) ## [v0.5.2](https://github.com/koed00/django-q/tree/v0.5.2) (2015-08-13) @@ -631,7 +662,6 @@ - Adds `save` override options for tasks [\#27](https://github.com/Koed00/django-q/pull/27) ([Koed00](https://github.com/Koed00)) - Expanding coverage [\#26](https://github.com/Koed00/django-q/pull/26) ([Koed00](https://github.com/Koed00)) -- Adds task groups [\#21](https://github.com/Koed00/django-q/pull/21) ([Koed00](https://github.com/Koed00)) ## [v0.4.0](https://github.com/koed00/django-q/tree/v0.4.0) (2015-07-19) @@ -643,6 +673,7 @@ - Adds failure filtering to group functions [\#24](https://github.com/Koed00/django-q/pull/24) ([Koed00](https://github.com/Koed00)) - Adds count\_group\(\) and delete\_group\(\) [\#23](https://github.com/Koed00/django-q/pull/23) ([Koed00](https://github.com/Koed00)) - decoding values\_list on a picklefield is faster [\#22](https://github.com/Koed00/django-q/pull/22) ([Koed00](https://github.com/Koed00)) +- Adds task groups [\#21](https://github.com/Koed00/django-q/pull/21) ([Koed00](https://github.com/Koed00)) ## [v0.3.5](https://github.com/koed00/django-q/tree/v0.3.5) (2015-07-17) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/README.rst new/django-q-1.2.4/README.rst --- old/django-q-1.2.1/README.rst 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/README.rst 2020-06-10 11:46:50.000000000 +0200 @@ -14,7 +14,7 @@ - Multiprocessing worker pool - Asynchronous tasks - Scheduled and repeated tasks -- Encrypted and compressed packages +- Signed and compressed packages - Failure and success database or cache - Result hooks, groups and chains - Django Admin integration diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/django_q/__init__.py new/django-q-1.2.4/django_q/__init__.py --- old/django-q-1.2.1/django_q/__init__.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/django_q/__init__.py 2020-06-10 11:46:50.000000000 +0200 @@ -1,4 +1,4 @@ -VERSION = (1, 2, 1) +VERSION = (1, 2, 4) default_app_config = 'django_q.apps.DjangoQConfig' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/django_q/brokers/orm.py new/django-q-1.2.4/django_q/brokers/orm.py --- old/django-q-1.2.1/django_q/brokers/orm.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/django_q/brokers/orm.py 2020-06-10 11:46:50.000000000 +0200 @@ -17,7 +17,7 @@ class ORM(Broker): @staticmethod def get_connection(list_key=Conf.PREFIX): - if transaction.get_autocommit(): # Only True when not in an atomic block + if transaction.get_autocommit(using=Conf.ORM): # Only True when not in an atomic block # Make sure stale connections in the broker thread are explicitly # closed before attempting DB access. # logger.debug("Broker thread calling close_old_connections") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/django_q/cluster.py new/django-q-1.2.4/django_q/cluster.py --- old/django-q-1.2.1/django_q/cluster.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/django_q/cluster.py 2020-06-10 11:46:50.000000000 +0200 @@ -20,6 +20,7 @@ # Django from django import db +from django.conf import settings from django.utils import timezone from django.utils.translation import gettext_lazy as _ @@ -424,6 +425,8 @@ result = (f"{e} : {traceback.format_exc()}", False) if error_reporter: error_reporter.report() + if task.get("sync", False): + raise with timer.get_lock(): # Process result task["result"] = result[0] @@ -546,7 +549,7 @@ broker = get_broker() close_old_django_connections() try: - with db.transaction.atomic(): + with db.transaction.atomic(using=Schedule.objects.db): for s in ( Schedule.objects.select_for_update() .exclude(repeats=0) @@ -589,7 +592,9 @@ next_run = next_run.shift(years=+1) if Conf.CATCH_UP or next_run > arrow.utcnow(): break - s.next_run = next_run.datetime + # arrow always returns a tz aware datetime, and we don't want + # this when we explicitly configured django with USE_TZ=False + s.next_run = next_run.datetime if settings.USE_TZ else next_run.datetime.replace(tzinfo=None) s.repeats += -1 # send it to the cluster q_options["broker"] = broker diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/django_q/migrations/0010_auto_20200610_0856.py new/django-q-1.2.4/django_q/migrations/0010_auto_20200610_0856.py --- old/django-q-1.2.1/django_q/migrations/0010_auto_20200610_0856.py 1970-01-01 01:00:00.000000000 +0100 +++ new/django-q-1.2.4/django_q/migrations/0010_auto_20200610_0856.py 2020-06-10 11:46:50.000000000 +0200 @@ -0,0 +1,27 @@ +from django.db import migrations +import picklefield.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_q', '0009_auto_20171009_0915'), + ] + + operations = [ + migrations.AlterField( + model_name='task', + name='args', + field=picklefield.fields.PickledObjectField(editable=False, null=True, protocol=-1), + ), + migrations.AlterField( + model_name='task', + name='kwargs', + field=picklefield.fields.PickledObjectField(editable=False, null=True, protocol=-1), + ), + migrations.AlterField( + model_name='task', + name='result', + field=picklefield.fields.PickledObjectField(editable=False, null=True, protocol=-1), + ), + ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/django_q/tests/tasks.py new/django-q-1.2.4/django_q/tests/tasks.py --- old/django-q-1.2.1/django_q/tests/tasks.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/django_q/tests/tasks.py 2020-06-10 11:46:50.000000000 +0200 @@ -1,6 +1,10 @@ from time import sleep +class TaskError(Exception): + pass + + def countdown(n): while n > 0: n -= 1 @@ -44,3 +48,7 @@ def result(obj): print(f"RESULT HOOK {obj.name} : {obj.result()}") + + +def raise_exception(): + raise TaskError("this is an exception!") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/django_q/tests/test_cluster.py new/django-q-1.2.4/django_q/tests/test_cluster.py --- old/django-q-1.2.1/django_q/tests/test_cluster.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/django_q/tests/test_cluster.py 2020-06-10 11:46:50.000000000 +0200 @@ -18,7 +18,7 @@ from django_q.conf import Conf from django_q.status import Stat from django_q.brokers import get_broker, Broker -from django_q.tests.tasks import multiply +from django_q.tests.tasks import multiply, TaskError from django_q.queues import Queue @@ -45,6 +45,11 @@ task = async_task('django_q.tests.tasks.count_letters', DEFAULT_WORDLIST, broker=broker, sync=True) assert result(task) == 1506 +@pytest.mark.django_db +def test_sync_raise_exception(broker): + with pytest.raises(TaskError): + async_task('django_q.tests.tasks.raise_exception', broker=broker, sync=True) + @pytest.mark.django_db def test_cluster_initial(broker): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/docs/conf.py new/django-q-1.2.4/docs/conf.py --- old/django-q-1.2.1/docs/conf.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/docs/conf.py 2020-06-10 11:46:50.000000000 +0200 @@ -73,7 +73,7 @@ # The short X.Y version. version = '1.2' # The full version, including alpha/beta/rc tags. -release = '1.2.1' +release = '1.2.4' # 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/django-q-1.2.1/docs/configure.rst new/django-q-1.2.4/docs/configure.rst --- old/django-q-1.2.1/docs/configure.rst 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/docs/configure.rst 2020-06-10 11:46:50.000000000 +0200 @@ -33,7 +33,7 @@ Defaults to ``'default'``. .. note:: - Tasks are encrypted. When a worker encounters a task it can not decrypt, it will be discarded or failed. + Tasks are signed. When a worker encounters a task with an invalid signature, it will be discarded or failed. workers ~~~~~~~ @@ -207,7 +207,7 @@ .. tip:: - Django Q uses your ``SECRET_KEY`` to encrypt task packages and prevent task crossover. So make sure you have it set up in your Django settings. + Django Q uses your ``SECRET_KEY`` to sign task packages and prevent task crossover. So make sure you have it set up in your Django settings. .. _disque_configuration: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/docs/index.rst new/django-q-1.2.4/docs/index.rst --- old/django-q-1.2.1/docs/index.rst 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/docs/index.rst 2020-06-10 11:46:50.000000000 +0200 @@ -14,7 +14,7 @@ - Multiprocessing worker pools - Asynchronous tasks - Scheduled and repeated tasks -- Encrypted and compressed packages +- Signed and compressed packages - Failure and success database or cache - Result hooks, groups and chains - Django Admin integration diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/poetry.lock new/django-q-1.2.4/poetry.lock --- old/django-q-1.2.1/poetry.lock 1970-01-01 01:00:00.000000000 +0100 +++ new/django-q-1.2.4/poetry.lock 2020-06-10 11:46:50.000000000 +0200 @@ -0,0 +1,415 @@ +[[package]] +category = "main" +description = "Python wrapper for loading Jason Hood's ANSICON" +marker = "platform_system == \"Windows\"" +name = "ansicon" +optional = false +python-versions = "*" +version = "1.89.0" + +[[package]] +category = "main" +description = "Better dates & times for Python" +name = "arrow" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.15.6" + +[package.dependencies] +python-dateutil = "*" + +[[package]] +category = "main" +description = "ASGI specs, helper code, and adapters" +name = "asgiref" +optional = false +python-versions = ">=3.5" +version = "3.2.7" + +[package.extras] +tests = ["pytest (>=4.3.0,<4.4.0)", "pytest-asyncio (>=0.10.0,<0.11.0)"] + +[[package]] +category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.0" + +[[package]] +category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[package.extras] +azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] +dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] +docs = ["sphinx", "zope.interface"] +tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] + +[[package]] +category = "main" +description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." +name = "blessed" +optional = false +python-versions = "*" +version = "1.17.8" + +[package.dependencies] +jinxed = ">=0.5.4" +six = ">=1.9.0" +wcwidth = ">=0.1.4" + +[[package]] +category = "dev" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.4.3" + +[[package]] +category = "main" +description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." +name = "django" +optional = false +python-versions = ">=3.6" +version = "3.0.7" + +[package.dependencies] +asgiref = ">=3.2,<4.0" +pytz = "*" +sqlparse = ">=0.2.2" + +[package.extras] +argon2 = ["argon2-cffi (>=16.1.0)"] +bcrypt = ["bcrypt"] + +[[package]] +category = "main" +description = "Pickled object field for Django" +name = "django-picklefield" +optional = false +python-versions = ">=3" +version = "3.0.1" + +[package.dependencies] +Django = ">=2.2" + +[package.extras] +tests = ["tox"] + +[[package]] +category = "main" +description = "A Rollbar support plugin for Django Q" +name = "django-q-rollbar" +optional = true +python-versions = "*" +version = "0.1.1" + +[[package]] +category = "main" +description = "A Sentry support plugin for Django Q" +name = "django-q-sentry" +optional = true +python-versions = "*" +version = "0.1.1" + +[[package]] +category = "dev" +description = "Read metadata from Python packages" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "1.6.1" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "rst.linker"] +testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] + +[[package]] +category = "main" +description = "Jinxed Terminal Library" +marker = "platform_system == \"Windows\"" +name = "jinxed" +optional = false +python-versions = "*" +version = "1.0.0" + +[package.dependencies] +ansicon = "*" + +[[package]] +category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.5" +version = "8.3.0" + +[[package]] +category = "dev" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.4" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.8.1" + +[[package]] +category = "dev" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.7" + +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=3.5" +version = "5.4.3" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +checkqa-mypy = ["mypy (v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +category = "dev" +description = "A Django plugin for pytest." +name = "pytest-django" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.9.0" + +[package.dependencies] +pytest = ">=3.6" + +[package.extras] +docs = ["sphinx", "sphinx-rtd-theme"] +testing = ["django", "django-configurations (>=2.0)", "six"] + +[[package]] +category = "main" +description = "Extensions to the standard Python datetime module" +name = "python-dateutil" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +version = "2.8.1" + +[package.dependencies] +six = ">=1.5" + +[[package]] +category = "main" +description = "World timezone definitions, modern and historical" +name = "pytz" +optional = false +python-versions = "*" +version = "2020.1" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.15.0" + +[[package]] +category = "main" +description = "Non-validating SQL parser" +name = "sqlparse" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.3.1" + +[[package]] +category = "main" +description = "Measures the displayed width of unicode strings in a terminal" +name = "wcwidth" +optional = false +python-versions = "*" +version = "0.2.4" + +[[package]] +category = "dev" +description = "Backport of pathlib-compatible object wrapper for zip files" +marker = "python_version < \"3.8\"" +name = "zipp" +optional = false +python-versions = ">=3.6" +version = "3.1.0" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["jaraco.itertools", "func-timeout"] + +[extras] +build-backend = [] +requires = [] +rollbar = ["django-q-rollbar"] +sentry = [] + +[metadata] +content-hash = "c14f1d4928aae7854db39e71c407cc07581883aa9d74b4eb64fbd83b3d33895e" +python-versions = ">=3.6" + +[metadata.files] +ansicon = [ + {file = "ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec"}, + {file = "ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1"}, +] +arrow = [ + {file = "arrow-0.15.6-py2.py3-none-any.whl", hash = "sha256:a24c1de90850f6fb2033fd6bf8a11f281e84cb54825e5eabdda219e673b52aac"}, + {file = "arrow-0.15.6.tar.gz", hash = "sha256:eb5d339f00072cc297d7de252a2e75f272085d1231a3723f1026d1fa91367118"}, +] +asgiref = [ + {file = "asgiref-3.2.7-py2.py3-none-any.whl", hash = "sha256:9ca8b952a0a9afa61d30aa6d3d9b570bb3fd6bafcf7ec9e6bed43b936133db1c"}, + {file = "asgiref-3.2.7.tar.gz", hash = "sha256:8036f90603c54e93521e5777b2b9a39ba1bad05773fcf2d208f0299d1df58ce5"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, + {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, +] +blessed = [ + {file = "blessed-1.17.8-py2.py3-none-any.whl", hash = "sha256:219d422995a0938a0b5c89c711878ce76262091a8e97def7d2028a1721cf06ab"}, + {file = "blessed-1.17.8.tar.gz", hash = "sha256:7671d057b2df6ddbefd809009fb08feb2f8d2d163d240b5e765088a90519b2f1"}, +] +colorama = [ + {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, + {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, +] +django = [ + {file = "Django-3.0.7-py3-none-any.whl", hash = "sha256:e1630333248c9b3d4e38f02093a26f1e07b271ca896d73097457996e0fae12e8"}, + {file = "Django-3.0.7.tar.gz", hash = "sha256:5052b34b34b3425233c682e0e11d658fd6efd587d11335a0203d827224ada8f2"}, +] +django-picklefield = [ + {file = "django-picklefield-3.0.1.tar.gz", hash = "sha256:15ccba592ca953b9edf9532e64640329cd47b136b7f8f10f2939caa5f9ce4287"}, + {file = "django_picklefield-3.0.1-py3-none-any.whl", hash = "sha256:3c702a54fde2d322fe5b2f39b8f78d9f655b8f77944ab26f703be6c0ed335a35"}, +] +django-q-rollbar = [ + {file = "django-q-rollbar-0.1.1.tar.gz", hash = "sha256:31bd30fbdd8934e626a6ac61faf36cbb514e6ed6eb7e766ce43af0d321613f9f"}, + {file = "django_q_rollbar-0.1.1-py3-none-any.whl", hash = "sha256:5b261a15bcdfa440c9e7574569e887046b084c7edeb01bfe4e273494e71ac07e"}, +] +django-q-sentry = [ + {file = "django-q-sentry-0.1.1.tar.gz", hash = "sha256:b864b26ccfc09aafa948d8c8752a005a0fc1008240748d7424d9e4d750dbbb0d"}, + {file = "django_q_sentry-0.1.1-py3-none-any.whl", hash = "sha256:4864022c7bd8e456ea51401830fc1ab37977099ca29ab9b6c0d35c4988c4aad9"}, +] +importlib-metadata = [ + {file = "importlib_metadata-1.6.1-py2.py3-none-any.whl", hash = "sha256:15ec6c0fd909e893e3a08b3a7c76ecb149122fb14b7efe1199ddd4c7c57ea958"}, + {file = "importlib_metadata-1.6.1.tar.gz", hash = "sha256:0505dd08068cfec00f53a74a0ad927676d7757da81b7436a6eefe4c7cf75c545"}, +] +jinxed = [ + {file = "jinxed-1.0.0-py2.py3-none-any.whl", hash = "sha256:79ceb7097ba9d905000905173554092e81fe31aebb107b9566a15767dfdc3a82"}, + {file = "jinxed-1.0.0.tar.gz", hash = "sha256:094d0e1c92b8bcf324d1fb4dceaa82cb79e4524790caf524eca0499807a0fbd8"}, +] +more-itertools = [ + {file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"}, + {file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"}, +] +packaging = [ + {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, + {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +py = [ + {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, + {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, +] +pyparsing = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +pytest-django = [ + {file = "pytest-django-3.9.0.tar.gz", hash = "sha256:664e5f42242e5e182519388f01b9f25d824a9feb7cd17d8f863c8d776f38baf9"}, + {file = "pytest_django-3.9.0-py2.py3-none-any.whl", hash = "sha256:64f99d565dd9497af412fcab2989fe40982c1282d4118ff422b407f3f7275ca5"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, + {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, +] +pytz = [ + {file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"}, + {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +sqlparse = [ + {file = "sqlparse-0.3.1-py2.py3-none-any.whl", hash = "sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e"}, + {file = "sqlparse-0.3.1.tar.gz", hash = "sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548"}, +] +wcwidth = [ + {file = "wcwidth-0.2.4-py2.py3-none-any.whl", hash = "sha256:79375666b9954d4a1a10739315816324c3e73110af9d0e102d906fdb0aec009f"}, + {file = "wcwidth-0.2.4.tar.gz", hash = "sha256:8c6b5b6ee1360b842645f336d9e5d68c55817c26d3050f46b235ef2bc650e48f"}, +] +zipp = [ + {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"}, + {file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"}, +] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/pyproject.toml new/django-q-1.2.4/pyproject.toml --- old/django-q-1.2.1/pyproject.toml 1970-01-01 01:00:00.000000000 +0100 +++ new/django-q-1.2.4/pyproject.toml 2020-06-10 11:46:50.000000000 +0200 @@ -0,0 +1,58 @@ +[tool.poetry] +name = "django-q" +version = "1.2.4" +description = "A multiprocessing distributed task queue for Django" +authors = ["Ilan Steemers <koe...@gmail.com>"] +license = "MIT" +readme = 'README.rst' + +repository = "https://github.com/koed00/django-q" +homepage = "https://django-q.readthedocs.org" +documentation = "https://django-q.readthedocs.org" + +keywords = ["django", "distributed", "multiprocessing", "queue","scheduler"] + +classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Web Environment', + 'Framework :: Django', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: POSIX', + 'Operating System :: MacOS', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Topic :: Internet :: WWW/HTTP', + 'Topic :: System :: Distributed Computing', + 'Topic :: Software Development :: Libraries :: Python Modules', + ] +include=['CHANGELOG.md'] + +[tool.poetry.plugins."djangoq.errorreporters"] +"rollbar" = "django_q_rollbar:Rollbar" +"sentry" = "django_q_sentry:Sentry" + + +[tool.poetry.dependencies] +python = ">=3.6" +django = ">=2.2" +blessed = "^1.17.6" +arrow = "^0.15.6" + +django-q-rollbar= { version = "^0.1", optional = true } +django-q-sentry = { version = "^0.1", optional = true } +django-picklefield = "^3.0.1" + +[tool.poetry.dev-dependencies] +pytest = "^5.4.2" +pytest-django = "^3.9.0" + +[tool.poetry.extras] +rollbar = ["django-q-rollbar"] +sentry = ["django-q-sentry "] +requires = ["poetry>=0.12"] +build-backend = ["poetry.masonry.api"] + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/requirements.txt new/django-q-1.2.4/requirements.txt --- old/django-q-1.2.1/requirements.txt 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/requirements.txt 2020-06-10 11:46:50.000000000 +0200 @@ -4,30 +4,30 @@ # # pip-compile requirements.in # -arrow==0.15.5 -asgiref==3.2.3 # via django -blessed==1.17.2 -boto3==1.12.1 -botocore==1.15.1 # via boto3, s3transfer -certifi==2019.11.28 # via requests +arrow==0.15.6 # via -r requirements.in +asgiref==3.2.7 # via django +blessed==1.17.8 # via -r requirements.in +boto3==1.13.26 # via -r requirements.in +botocore==1.16.26 # via boto3, s3transfer +certifi==2020.4.5.2 # via requests chardet==3.0.4 # via requests -django-picklefield==2.1.1 -django-redis==4.11.0 -django==3.0.3 # via django-picklefield, django-redis +django-picklefield==3.0.1 # via -r requirements.in +django-redis==4.12.1 # via -r requirements.in +django==3.0.7 # via django-picklefield, django-redis docutils==0.15.2 # via botocore -hiredis==1.0.1 -idna==2.8 # via requests +hiredis==1.0.1 # via -r requirements.in +idna==2.9 # via requests iron-core==1.2.0 # via iron-mq -iron-mq==0.9 -jmespath==0.9.4 # via boto3, botocore -psutil==5.7.0 -pymongo==3.10.1 +iron-mq==0.9 # via -r requirements.in +jmespath==0.10.0 # via boto3, botocore +psutil==5.7.0 # via -r requirements.in +pymongo==3.10.1 # via -r requirements.in python-dateutil==2.8.1 # via arrow, botocore, iron-core -pytz==2019.3 # via django -redis==3.4.1 -requests==2.22.0 # via iron-core +pytz==2020.1 # via django +redis==3.5.3 # via -r requirements.in, django-redis +requests==2.23.0 # via iron-core s3transfer==0.3.3 # via boto3 -six==1.14.0 # via blessed, python-dateutil -sqlparse==0.3.0 # via django -urllib3==1.25.8 # via botocore, requests -wcwidth==0.1.8 # via blessed +six==1.15.0 # via blessed, python-dateutil +sqlparse==0.3.1 # via django +urllib3==1.25.9 # via botocore, requests +wcwidth==0.2.4 # via blessed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-q-1.2.1/setup.py new/django-q-1.2.4/setup.py --- old/django-q-1.2.1/setup.py 2020-02-18 20:24:38.000000000 +0100 +++ new/django-q-1.2.4/setup.py 2020-06-10 11:46:50.000000000 +0200 @@ -26,10 +26,10 @@ setup( name='django-q', - version='1.2.1', + version='1.2.4', author='Ilan Steemers', - author_email='ko...@gmail.com', - keywords='django distributed task queue worker scheduler cron redis disque ironmq sqs orm mongodb multiprocessing rollbar', + author_email='koe...@gmail.com', + keywords='django multiprocessing worker scheduler queue', packages=['django_q'], include_package_data=True, url='https://django-q.readthedocs.org',