Skip to content

Commit

Permalink
Merge pull request #56 from edx/jenkins/cleanup-python-code-cb0fc8b
Browse files Browse the repository at this point in the history
Python Code Cleanup
  • Loading branch information
awais786 authored Jan 21, 2021
2 parents 3ec9326 + 1fe81c9 commit 7962a92
Show file tree
Hide file tree
Showing 21 changed files with 109 additions and 127 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ Unreleased
~~~~~~~~~~
*

[1.0.0] - 2021-01-21
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Dropped python3.5 support.

[0.5.4] - 2020-12-10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Upgrade celery to 5.0.4
Expand Down
2 changes: 1 addition & 1 deletion celery_utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
Code to support working with celery.
"""

__version__ = '0.5.7'
__version__ = '1.0.0'

default_app_config = 'celery_utils.apps.CeleryUtilsConfig' # pylint: disable=invalid-name
1 change: 0 additions & 1 deletion celery_utils/apps.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
"""
celery_utils Django application initialization.
"""
Expand Down
4 changes: 2 additions & 2 deletions celery_utils/management/commands/cleanup_resolved_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ def add_arguments(self, parser):
parser.add_argument(
'--task-name', '-t',
default=None,
help=u"Restrict cleanup to tasks matching the named task.",
help="Restrict cleanup to tasks matching the named task.",
)
parser.add_argument(
'--age', '-a',
type=int,
default=30,
help=u"Only delete tasks that have been resolved for at least the specified number of days (default: 30)",
help="Only delete tasks that have been resolved for at least the specified number of days (default: 30)",
)

def handle(self, *args, **options):
Expand Down
44 changes: 22 additions & 22 deletions celery_utils/management/commands/tests/test_reapply_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

from collections import Counter
from datetime import datetime
from unittest import mock

import mock
import pytest

from django.core.management import call_command
Expand All @@ -28,64 +28,64 @@ def failed_tasks():
return [
models.FailedTask.objects.create(
task_name=tasks.fallible_task.name,
task_id=u'fail_again',
task_id='fail_again',
args=[],
kwargs={"error_message": "Err, yo!"},
exc=u'UhOhError().',
exc='UhOhError().',
),
models.FailedTask.objects.create(
task_name=tasks.fallible_task.name,
task_id=u'will_succeed',
task_id='will_succeed',
args=[],
kwargs={},
exc=u'NetworkErrorMaybe?()',
exc='NetworkErrorMaybe?()',
),
models.FailedTask.objects.create(
task_name=tasks.passing_task.name,
task_id=u'other_task',
task_id='other_task',
args=[],
kwargs={},
exc=u'RaceCondition()',
exc='RaceCondition()',
),
]


@pytest.mark.django_db
@pytest.mark.usefixtures('failed_tasks')
def test_call_command():
call_command(u'reapply_tasks')
assert_unresolved(models.FailedTask.objects.get(task_id=u'fail_again'))
assert_resolved(models.FailedTask.objects.get(task_id=u'will_succeed'))
assert_resolved(models.FailedTask.objects.get(task_id=u'other_task'))
call_command('reapply_tasks')
assert_unresolved(models.FailedTask.objects.get(task_id='fail_again'))
assert_resolved(models.FailedTask.objects.get(task_id='will_succeed'))
assert_resolved(models.FailedTask.objects.get(task_id='other_task'))


@pytest.mark.django_db
@pytest.mark.usefixtures('failed_tasks')
def test_call_command_with_specified_task():
call_command(u'reapply_tasks', u'--task-name={}'.format(tasks.fallible_task.name))
assert_unresolved(models.FailedTask.objects.get(task_id=u'fail_again'))
assert_resolved(models.FailedTask.objects.get(task_id=u'will_succeed'))
assert_unresolved(models.FailedTask.objects.get(task_id=u'other_task'))
call_command('reapply_tasks', f'--task-name={tasks.fallible_task.name}')
assert_unresolved(models.FailedTask.objects.get(task_id='fail_again'))
assert_resolved(models.FailedTask.objects.get(task_id='will_succeed'))
assert_unresolved(models.FailedTask.objects.get(task_id='other_task'))


@pytest.mark.django_db
@pytest.mark.usefixtures('failed_tasks')
def test_duplicate_tasks():
models.FailedTask.objects.create(
task_name=tasks.fallible_task.name,
task_id=u'will_succeed',
task_id='will_succeed',
args=[],
kwargs={},
exc=u'AlsoThisOtherError()',
exc='AlsoThisOtherError()',
)
# Verify that only one task got run for this task_id.
# pylint: disable=no-member
with mock.patch.object(tasks.fallible_task, u'apply_async', wraps=tasks.fallible_task.apply_async) as mock_apply:
call_command(u'reapply_tasks')
task_id_counts = Counter(call[2][u'task_id'] for call in mock_apply.mock_calls)
assert task_id_counts[u'will_succeed'] == 1
with mock.patch.object(tasks.fallible_task, 'apply_async', wraps=tasks.fallible_task.apply_async) as mock_apply:
call_command('reapply_tasks')
task_id_counts = Counter(call[2]['task_id'] for call in mock_apply.mock_calls)
assert task_id_counts['will_succeed'] == 1
# Verify that both tasks matching that task_id are resolved.
will_succeed_tasks = models.FailedTask.objects.filter(task_id=u'will_succeed').all()
will_succeed_tasks = models.FailedTask.objects.filter(task_id='will_succeed').all()
assert len(will_succeed_tasks) == 2
for task_object in will_succeed_tasks:
assert_resolved(task_object)
Expand Down
3 changes: 1 addition & 2 deletions celery_utils/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.5 on 2017-01-31 13:50


Expand Down Expand Up @@ -33,6 +32,6 @@ class Migration(migrations.Migration):
),
migrations.AlterIndexTogether(
name='failedtask',
index_together=set([('task_name', 'exc')]),
index_together={('task_name', 'exc')},
),
]
3 changes: 0 additions & 3 deletions celery_utils/migrations/0002_chordable_django_backend.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-


from django.db import migrations


Expand Down
1 change: 0 additions & 1 deletion celery_utils/models.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
"""
Database models for celery_utils.
"""
Expand Down
1 change: 0 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# pylint: disable=invalid-name
"""
edx-celeryutils documentation build configuration file.
Expand Down
6 changes: 3 additions & 3 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#
# make upgrade
#
amqp==5.0.2
amqp==5.0.3
# via kombu
billiard==3.6.3.0
# via celery
Expand All @@ -28,7 +28,7 @@ django-model-utils==4.1.1
# via -r requirements/base.in
django==2.2.17
# via
# -c requirements/constraints.txt
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -r requirements/base.in
# django-model-utils
# jsonfield2
Expand All @@ -38,7 +38,7 @@ jsonfield2==4.0.0.post0
# via -r requirements/base.in
kombu==5.0.2
# via celery
prompt-toolkit==3.0.9
prompt-toolkit==3.0.11
# via click-repl
pytz==2020.5
# via
Expand Down
4 changes: 2 additions & 2 deletions requirements/celery50.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
amqp==5.0.2
amqp==5.0.3
billiard==3.6.3.0
celery==5.0.4
click-didyoumean==0.0.3
click-repl==0.1.6
click==7.1.2
kombu==5.0.2
prompt-toolkit==3.0.9
prompt-toolkit==3.0.11
vine==5.0.0
4 changes: 2 additions & 2 deletions requirements/ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ toml==0.10.2
# via tox
tox-battery==0.6.1
# via -r requirements/ci.in
tox==3.20.1
tox==3.21.2
# via
# -r requirements/ci.in
# tox-battery
urllib3==1.26.2
# via requests
virtualenv==20.2.2
virtualenv==20.4.0
# via tox
4 changes: 2 additions & 2 deletions requirements/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
# pin when possible. Writing an issue against the offending project and
# linking to it here is good.

# Stay on an LTS release
django<2.3
# This file contains all common constraints for edx-repos
-c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt

# pinning it to latest release.
celery==5.0.4
35 changes: 12 additions & 23 deletions requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ astroid==2.4.2
# via
# pylint
# pylint-celery
bleach==3.2.1
bleach==3.2.2
# via readme-renderer
certifi==2020.12.5
# via requests
cffi==1.14.4
# via cryptography
chardet==4.0.0
# via requests
# via
# diff-cover
# requests
click-log==0.3.2
# via edx-lint
click==7.1.2
Expand All @@ -27,15 +27,13 @@ click==7.1.2
# pip-tools
colorama==0.4.4
# via twine
cryptography==3.3.1
# via secretstorage
diff-cover==4.0.1
diff-cover==4.2.0
# via -r requirements/dev.in
distlib==0.3.1
# via virtualenv
django==2.2.17
# via
# -c requirements/constraints.txt
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# edx-i18n-tools
docutils==0.16
# via readme-renderer
Expand All @@ -57,10 +55,6 @@ isort==5.7.0
# via
# -r requirements/quality.in
# pylint
jeepney==0.6.0
# via
# keyring
# secretstorage
jinja2-pluralize==0.3.0
# via diff-cover
jinja2==2.11.2
Expand All @@ -85,7 +79,7 @@ path==15.0.1
# via path.py
pip-tools==5.5.0
# via -r requirements/dev.in
pkginfo==1.6.1
pkginfo==1.7.0
# via twine
pluggy==0.13.1
# via
Expand All @@ -97,11 +91,9 @@ py==1.10.0
# via tox
pycodestyle==2.6.0
# via -r requirements/quality.in
pycparser==2.20
# via cffi
pydocstyle==3.0.0
# via -r requirements/quality.in
pygments==2.7.3
pygments==2.7.4
# via
# diff-cover
# readme-renderer
Expand All @@ -123,7 +115,7 @@ pyparsing==2.4.7
# via packaging
pytz==2020.5
# via django
pyyaml==5.3.1
pyyaml==5.4.1
# via edx-i18n-tools
readme-renderer==28.0
# via twine
Expand All @@ -135,13 +127,10 @@ requests==2.25.1
# twine
rfc3986==1.4.0
# via twine
secretstorage==3.3.0
# via keyring
six==1.15.0
# via
# astroid
# bleach
# cryptography
# edx-i18n-tools
# edx-lint
# pydocstyle
Expand All @@ -158,17 +147,17 @@ toml==0.10.2
# tox
tox-battery==0.6.1
# via -r requirements/dev.in
tox==3.20.1
tox==3.21.2
# via
# -r requirements/dev.in
# tox-battery
tqdm==4.55.1
tqdm==4.56.0
# via twine
twine==3.3.0
# via -r requirements/dev.in
urllib3==1.26.2
# via requests
virtualenv==20.2.2
virtualenv==20.4.0
# via tox
webencodings==0.5.1
# via bleach
Expand Down
14 changes: 7 additions & 7 deletions requirements/doc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
#
alabaster==0.7.12
# via sphinx
amqp==5.0.2
amqp==5.0.3
# via kombu
babel==2.9.0
# via sphinx
billiard==3.6.3.0
# via celery
bleach==3.2.1
bleach==3.2.2
# via readme-renderer
celery==5.0.4
# via
Expand Down Expand Up @@ -40,7 +40,7 @@ django-model-utils==4.1.1
# via -r requirements/base.in
django==2.2.17
# via
# -c requirements/constraints.txt
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -r requirements/base.in
# django-model-utils
# jsonfield2
Expand All @@ -52,7 +52,7 @@ docutils==0.16
# readme-renderer
# restructuredtext-lint
# sphinx
edx-sphinx-theme==1.6.0
edx-sphinx-theme==1.6.1
# via -r requirements/doc.in
future==0.18.2
# via -r requirements/base.in
Expand All @@ -76,9 +76,9 @@ pbr==5.5.1
# via stevedore
pockets==0.9.1
# via sphinxcontrib-napoleon
prompt-toolkit==3.0.9
prompt-toolkit==3.0.11
# via click-repl
pygments==2.7.3
pygments==2.7.4
# via
# doc8
# readme-renderer
Expand Down Expand Up @@ -107,7 +107,7 @@ six==1.15.0
# sphinxcontrib-napoleon
snowballstemmer==2.0.0
# via sphinx
sphinx==3.4.2
sphinx==3.4.3
# via
# -r requirements/doc.in
# edx-sphinx-theme
Expand Down
Loading

0 comments on commit 7962a92

Please sign in to comment.