Skip to content

Commit fde8187

Browse files
authored
style: make pre-commit happy (celery#594)
* ci: add .pre-commit-config.yaml * style: make flake8 happy style: flake8 * ci: flake8 exclude django migrations files
1 parent 626c2a0 commit fde8187

16 files changed

+125
-114
lines changed

.pre-commit-config.yaml

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
exclude: "migrations"
3+
4+
repos:
5+
- repo: https://github.com/asottile/pyupgrade
6+
rev: v3.0.0
7+
hooks:
8+
- id: pyupgrade
9+
args: ["--py37-plus"]
10+
11+
- repo: https://github.com/PyCQA/flake8
12+
rev: 5.0.4
13+
hooks:
14+
- id: flake8
15+
16+
- repo: https://github.com/asottile/yesqa
17+
rev: v1.4.0
18+
hooks:
19+
- id: yesqa
20+
21+
- repo: https://github.com/pre-commit/pre-commit-hooks
22+
rev: v4.3.0
23+
hooks:
24+
- id: check-merge-conflict
25+
- id: check-toml
26+
- id: check-yaml
27+
- id: mixed-line-ending
28+
29+
- repo: https://github.com/pycqa/isort
30+
rev: 5.10.1
31+
hooks:
32+
- id: isort

django_celery_beat/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
# All rights reserved.
44
# :license: BSD (3 Clause), see LICENSE for more details.
55
import re
6-
76
from collections import namedtuple
87

98
import django

django_celery_beat/admin.py

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
"""Periodic Task Admin interface."""
2+
from celery import current_app
3+
from celery.utils import cached_property
24
from django import forms
35
from django.conf import settings
46
from django.contrib import admin, messages
5-
from django.db.models import When, Value, Case
7+
from django.db.models import Case, Value, When
68
from django.forms.widgets import Select
79
from django.template.defaultfilters import pluralize
810
from django.utils.translation import gettext_lazy as _
9-
10-
from celery import current_app
11-
from celery.utils import cached_property
1211
from kombu.utils.json import loads
1312

14-
from .models import (
15-
PeriodicTask, PeriodicTasks,
16-
IntervalSchedule, CrontabSchedule,
17-
SolarSchedule, ClockedSchedule
18-
)
13+
from .models import (ClockedSchedule, CrontabSchedule, IntervalSchedule,
14+
PeriodicTask, PeriodicTasks, SolarSchedule)
1915
from .utils import is_database_scheduler
2016

2117

@@ -26,7 +22,7 @@ class TaskSelectWidget(Select):
2622
_choices = None
2723

2824
def tasks_as_choices(self):
29-
_ = self._modules # noqa
25+
_ = self._modules
3026
tasks = list(sorted(name for name in self.celery_app.tasks
3127
if not name.startswith('celery.')))
3228
return (('', ''), ) + tuple(zip(tasks, tasks))
@@ -149,7 +145,7 @@ def changelist_view(self, request, extra_context=None):
149145
extra_context = extra_context or {}
150146
scheduler = getattr(settings, 'CELERYBEAT_SCHEDULER', None)
151147
extra_context['wrong_scheduler'] = not is_database_scheduler(scheduler)
152-
return super(PeriodicTaskAdmin, self).changelist_view(
148+
return super().changelist_view(
153149
request, extra_context)
154150

155151
def get_queryset(self, request):
@@ -215,7 +211,7 @@ def run_tasks(self, request, queryset):
215211

216212
self.message_user(
217213
request,
218-
_('task "{0}" not found'.format(not_found_task_name)),
214+
_(f'task "{not_found_task_name}" not found'),
219215
level=messages.ERROR,
220216
)
221217
return

django_celery_beat/clockedschedule.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from celery import schedules
44
from celery.utils.time import maybe_make_aware
5+
56
from .utils import NEVER_CHECK_TIMEOUT
67

78

@@ -27,7 +28,7 @@ def is_due(self, last_run_at):
2728
return schedules.schedstate(is_due=False, next=remaining_s)
2829

2930
def __repr__(self):
30-
return '<clocked: {}>'.format(self.clocked_time)
31+
return f'<clocked: {self.clocked_time}>'
3132

3233
def __eq__(self, other):
3334
if isinstance(other, clocked):

django_celery_beat/models.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
from zoneinfo import available_timezones
44
except ImportError:
55
from backports.zoneinfo import available_timezones
6+
67
from datetime import timedelta
78

89
import timezone_field
9-
from celery import schedules, current_app
10+
from celery import current_app, schedules
1011
from django.conf import settings
1112
from django.core.exceptions import MultipleObjectsReturned, ValidationError
1213
from django.core.validators import MaxValueValidator, MinValueValidator
1314
from django.db import models
1415
from django.utils.translation import gettext_lazy as _
1516

1617
from . import querysets, validators
18+
from .clockedschedule import clocked
1719
from .tzcrontab import TzAwareCrontab
1820
from .utils import make_aware, now
19-
from .clockedschedule import clocked
20-
2121

2222
DAYS = 'days'
2323
HOURS = 'hours'
@@ -129,7 +129,7 @@ def from_schedule(cls, schedule):
129129
return cls(**spec)
130130

131131
def __str__(self):
132-
return '{0} ({1}, {2})'.format(
132+
return '{} ({}, {})'.format(
133133
self.get_event_display(),
134134
self.latitude,
135135
self.longitude
@@ -224,7 +224,7 @@ class Meta:
224224
ordering = ['clocked_time']
225225

226226
def __str__(self):
227-
return '{}'.format(make_aware(self.clocked_time))
227+
return f'{make_aware(self.clocked_time)}'
228228

229229
@property
230230
def schedule(self):
@@ -314,7 +314,7 @@ class Meta:
314314
'day_of_week', 'hour', 'minute', 'timezone']
315315

316316
def __str__(self):
317-
return '{0} {1} {2} {3} {4} (m/h/dM/MY/d) {5}'.format(
317+
return '{} {} {} {} {} (m/h/dM/MY/d) {}'.format(
318318
cronexp(self.minute), cronexp(self.hour),
319319
cronexp(self.day_of_month), cronexp(self.month_of_year),
320320
cronexp(self.day_of_week), str(self.timezone)

django_celery_beat/schedulers.py

+10-17
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,22 @@
22
import datetime
33
import logging
44
import math
5-
65
from multiprocessing.util import Finalize
76

8-
from celery import current_app
9-
from celery import schedules
10-
from celery.beat import Scheduler, ScheduleEntry
11-
7+
from celery import current_app, schedules
8+
from celery.beat import ScheduleEntry, Scheduler
129
from celery.utils.log import get_logger
1310
from celery.utils.time import maybe_make_aware
14-
from kombu.utils.encoding import safe_str, safe_repr
15-
from kombu.utils.json import dumps, loads
16-
1711
from django.conf import settings
18-
from django.db import transaction, close_old_connections
19-
from django.db.utils import DatabaseError, InterfaceError
2012
from django.core.exceptions import ObjectDoesNotExist
13+
from django.db import close_old_connections, transaction
14+
from django.db.utils import DatabaseError, InterfaceError
15+
from kombu.utils.encoding import safe_repr, safe_str
16+
from kombu.utils.json import dumps, loads
2117

22-
from .models import (
23-
PeriodicTask, PeriodicTasks,
24-
CrontabSchedule, IntervalSchedule,
25-
SolarSchedule, ClockedSchedule
26-
)
2718
from .clockedschedule import clocked
19+
from .models import (ClockedSchedule, CrontabSchedule, IntervalSchedule,
20+
PeriodicTask, PeriodicTasks, SolarSchedule)
2821
from .utils import NEVER_CHECK_TIMEOUT
2922

3023
# This scheduler must wake up more frequently than the
@@ -169,7 +162,7 @@ def to_model_schedule(cls, schedule):
169162
model_schedule.save()
170163
return model_schedule, model_field
171164
raise ValueError(
172-
'Cannot convert schedule type {0!r} to model'.format(schedule))
165+
f'Cannot convert schedule type {schedule!r} to model')
173166

174167
@classmethod
175168
def from_entry(cls, name, app=None, **entry):
@@ -205,7 +198,7 @@ def _unpack_options(cls, queue=None, exchange=None, routing_key=None,
205198
}
206199

207200
def __repr__(self):
208-
return '<ModelEntry: {0} {1}(*{2}, **{3}) {4}>'.format(
201+
return '<ModelEntry: {} {}(*{}, **{}) {}>'.format(
209202
safe_str(self.name), self.task, safe_repr(self.args),
210203
safe_repr(self.kwargs), self.schedule,
211204
)

django_celery_beat/signals.py

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1+
"""Django Application signals."""
2+
3+
14
def signals_connect():
2-
"""
3-
Connect to signals.
4-
"""
5+
"""Connect to signals."""
56
from django.db.models import signals
6-
from .models import (
7-
ClockedSchedule,
8-
PeriodicTask,
9-
PeriodicTasks,
10-
IntervalSchedule,
11-
CrontabSchedule,
12-
SolarSchedule
13-
)
7+
8+
from .models import (ClockedSchedule, CrontabSchedule, IntervalSchedule,
9+
PeriodicTask, PeriodicTasks, SolarSchedule)
1410

1511
signals.pre_save.connect(
1612
PeriodicTasks.changed, sender=PeriodicTask

django_celery_beat/tzcrontab.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
"""Timezone aware Cron schedule Implementation."""
2-
from celery import schedules
3-
42
from collections import namedtuple
53
from datetime import datetime, timezone
64

5+
from celery import schedules
76

87
schedstate = namedtuple('schedstate', ('is_due', 'next'))
98

django_celery_beat/utils.py

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def is_database_scheduler(scheduler):
4141
if not scheduler:
4242
return False
4343
from kombu.utils import symbol_by_name
44+
4445
from .schedulers import DatabaseScheduler
4546
return (
4647
scheduler == 'django'

docs/conf.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- coding: utf-8 -*-
21
import os
32

43
from sphinx_celery import conf
@@ -23,16 +22,19 @@
2322
r'django_celery_beat.migrations.*',
2423
],
2524
extlinks={
26-
'github_project': (
27-
'https://github.com/%s',
28-
'GitHub project %s',
29-
),
30-
'github_pr': (
31-
'https://github.com/celery/django-celery-beat/pull/%s',
32-
'GitHub PR #%s',
33-
),
25+
'github_project': (
26+
'https://github.com/%s',
27+
'GitHub project %s',
28+
),
29+
'github_pr': (
30+
'https://github.com/celery/django-celery-beat/pull/%s',
31+
'GitHub PR #%s',
32+
),
3433
},
3534
extra_intersphinx_mapping={
36-
'django-celery-results': ('https://django-celery-results.readthedocs.io/en/latest/', None),
35+
'django-celery-results': (
36+
'https://django-celery-results.readthedocs.io/en/latest/',
37+
None
38+
),
3739
},
3840
))

setup.cfg

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ DJANGO_SETTINGS_MODULE=t.proj.settings
77
# classes can be lowercase, arguments and variables can be uppercase
88
# whenever it makes the code more readable.
99
ignore = N806, N802, N801, N803, W503, W504
10+
exclude =
11+
**/migrations/*.py
1012

1113
[pep257]
1214
ignore = D102,D104,D203,D105,D213

setup.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def _pyimp():
1818
NAME = 'django-celery-beat'
1919
PACKAGE = 'django_celery_beat'
2020

21-
E_UNSUPPORTED_PYTHON = '%s 1.0 requires %%s %%s or later!' % (NAME,)
21+
E_UNSUPPORTED_PYTHON = f'{NAME} 1.0 requires %s %s or later!'
2222

2323
PYIMP = _pyimp()
2424
PY37_OR_LESS = sys.version_info < (3, 7)
@@ -65,6 +65,7 @@ def add_default(m):
6565
def add_doc(m):
6666
return (('doc', m.groups()[0]),)
6767

68+
6869
pats = {re_meta: add_default,
6970
re_doc: add_doc}
7071
here = os.path.abspath(os.path.dirname(__file__))
@@ -80,8 +81,9 @@ def add_doc(m):
8081

8182
# -*- Installation Requires -*-
8283

83-
def strip_comments(l):
84-
return l.split('#', 1)[0].strip()
84+
85+
def strip_comments(line):
86+
return line.split('#', 1)[0].strip()
8587

8688

8789
def _pip_requirement(req):
@@ -94,7 +96,7 @@ def _pip_requirement(req):
9496
def _reqs(*f):
9597
return [
9698
_pip_requirement(r) for r in (
97-
strip_comments(l) for l in open(
99+
strip_comments(line) for line in open(
98100
os.path.join(os.getcwd(), 'requirements', *f)).readlines()
99101
) if r]
100102

@@ -104,11 +106,12 @@ def reqs(*f):
104106

105107
# -*- Long Description -*-
106108

109+
107110
if os.path.exists('README.rst'):
108111
long_description = codecs.open('README.rst', 'r', 'utf-8').read()
109112
long_description_content_type = 'text/x-rst'
110113
else:
111-
long_description = 'See http://pypi.python.org/pypi/%s' % (NAME,)
114+
long_description = f'See http://pypi.python.org/pypi/{NAME}'
112115
long_description_content_type = 'text/markdown'
113116

114117
# -*- %%% -*-
@@ -125,6 +128,7 @@ def run_tests(self):
125128
import pytest
126129
sys.exit(pytest.main(self.pytest_args))
127130

131+
128132
setuptools.setup(
129133
name=NAME,
130134
packages=setuptools.find_packages(exclude=[

t/unit/conftest.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import pytest
2-
32
# we have to import the pytest plugin fixtures here,
43
# in case user did not do the `python setup.py develop` yet,
54
# that installs the pytest plugin into the setuptools registry.
6-
from celery.contrib.pytest import (celery_app, celery_enable_logging,
7-
celery_parameters, depends_on_current_app,
8-
celery_config, use_celery_app_trap)
5+
from celery.contrib.pytest import (celery_app, celery_config,
6+
celery_enable_logging, celery_parameters,
7+
depends_on_current_app, use_celery_app_trap)
98
from celery.contrib.testing.app import TestApp, Trap
109

1110
# Tricks flake8 into silencing redefining fixtures warnings.

0 commit comments

Comments
 (0)