Skip to content

Commit b5de854

Browse files
authored
Merge pull request #1189 from pycontw/introduce-ruff
lint: replace flake8 with ruff
2 parents e8f124c + fca6fd2 commit b5de854

File tree

115 files changed

+411
-409
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+411
-409
lines changed

.git-blame-ignore-revs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# When making commits that are strictly formatting/style changes, add the
2+
# commit hash here, so git blame can ignore the change.
3+
#
4+
# For more details, see:
5+
# https://git-scm.com/docs/git-config#Documentation/git-config.txt-blameignoreRevsFile
6+
7+
0dcb6dd5973796cf12be34fdfd9fa761a6ba22d9 # isort
8+
ef09dbe9a03ebf4f649fd8830224a6c93ab422e7 # pep-naming
9+
e1dad3a0ca41d3f312f5be423711f577fd804f2f # bugbear
10+
399a7d64ddc2c2c857670c69890c24de8ba98610 # pyupgrade

.github/workflows/ci.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ jobs:
5151
with:
5252
cmd: install
5353

54-
- name: Run Flake8 on src
54+
- name: Run ruff on src
5555
run: |
56-
poetry run flake8 --config src/.flake8 src
56+
poetry run ruff check src
5757
5858
- name: Run DB migration for test
5959
run: |

poetry.lock

Lines changed: 27 additions & 50 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,52 @@ Pillow = "10.3.0"
3838
[tool.poetry.group.dev.dependencies]
3939
cssselect = "1.2.0"
4040
django-debug-toolbar = "4.3.0"
41-
flake8 = "7.0.0"
4241
pytest = "8.1.1"
4342
pytest-cov = "5.0.0"
4443
pytest-django = "4.8.0"
4544
pytest-mock = "3.14.0"
4645
pytest-xdist = "3.5.0"
46+
ruff = "0.3.5"
4747
Werkzeug = "3.0.2"
4848

4949

50+
[tool.ruff]
51+
exclude = [
52+
".git",
53+
"__pycache__",
54+
"migrations"
55+
]
56+
line-length = 120
57+
58+
[tool.ruff.lint]
59+
ignore = [
60+
"E251",
61+
]
62+
select = [
63+
"E", # pycodestyle error
64+
"W", # pycodestyle warning
65+
"F", # Pyflakes
66+
"I001", # isort
67+
"N", # pep8-naming
68+
"B", # bugbear
69+
"UP", # pyupgrade
70+
]
71+
72+
[tool.ruff.lint.isort]
73+
known-first-party = [
74+
"attendee",
75+
"ccip",
76+
"core",
77+
"events",
78+
"postgres",
79+
"proposals",
80+
"pycontw2016",
81+
"reviews",
82+
"sponsors",
83+
"users"
84+
]
85+
86+
5087
[build-system]
5188
requires = ["poetry-core"]
5289
build-backend = "poetry.core.masonry.api"

src/.flake8

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/attendee/api/urls.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from attendee.api.views import AttendeeAPIView
44

5-
65
urlpatterns = [
76
path('verify/', AttendeeAPIView.as_view()),
87
]

src/attendee/api/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from django.conf import settings
22
from registry.helper import reg
3-
from rest_framework import views, status
4-
from rest_framework.response import Response
3+
from rest_framework import status, views
54
from rest_framework.permissions import IsAuthenticated
5+
from rest_framework.response import Response
66

7-
from core.authentication import TokenAuthentication
87
from attendee.models import Attendee
8+
from core.authentication import TokenAuthentication
99

1010

1111
class AttendeeAPIView(views.APIView):

src/attendee/tests.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
from django.conf import settings
33
from registry.helper import reg
4+
45
from attendee.models import Attendee
56
from core.models import Token
67

src/ccip/views.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
import operator
2-
from datetime import timezone, timedelta
2+
from datetime import timedelta, timezone
33

44
from django.http import JsonResponse
55
from django.templatetags.static import static
66
from django.utils import translation
77
from django.utils.encoding import force_str
88
from django.utils.translation import pgettext_lazy
9-
from django.views.generic import View, TemplateView
9+
from django.views.generic import TemplateView, View
1010

1111
from core.utils import TemplateExistanceStatusResponse
1212
from core.views import IndexView
1313
from events.models import (
14-
CustomEvent, KeynoteEvent,
15-
ProposedTalkEvent, ProposedTutorialEvent,
14+
CustomEvent,
15+
KeynoteEvent,
16+
ProposedTalkEvent,
17+
ProposedTutorialEvent,
1618
SponsoredEvent,
1719
)
1820
from proposals.models import PrimarySpeaker
@@ -43,8 +45,8 @@ def _iter_translations(value):
4345

4446
def _transform_translatable(key, value):
4547
data = {'id': key}
46-
for code, value in _iter_translations(value):
47-
data[code] = {'name': value}
48+
for code, val in _iter_translations(value):
49+
data[code] = {'name': val}
4850
return data
4951

5052

@@ -75,8 +77,7 @@ def __bool__(self):
7577

7678
@property
7779
def speakers(self):
78-
for s in self._speakers:
79-
yield s
80+
yield from self._speakers
8081

8182

8283
def _get_empty_event_info(event):
@@ -167,15 +168,15 @@ def _transform_session(request, event, type_key, info_getter):
167168
for speaker in event_info.speakers
168169
]
169170

170-
LOCAL_TIMEZONE = timezone(offset=timedelta(hours=8))
171+
local_timezone = timezone(offset=timedelta(hours=8))
171172
# Explicitly show the local timezone used by OPass(CCIP)
172173
# to avoid iOS device showing UTC+0 time without changing it to local time
173174
# https://github.com/CCIP-App/CCIP-iOS/issues/54
174175
session = {
175176
'id': f'{type_key}-{event_info.pk}',
176177
'type': type_key,
177-
'start': event.begin_time.value.astimezone(LOCAL_TIMEZONE).isoformat() if event.begin_time else None,
178-
'end': event.end_time.value.astimezone(LOCAL_TIMEZONE).isoformat() if event.end_time else None,
178+
'start': event.begin_time.value.astimezone(local_timezone).isoformat() if event.begin_time else None,
179+
'end': event.end_time.value.astimezone(local_timezone).isoformat() if event.end_time else None,
179180
'slide': event_info.slide_link,
180181
'speakers': [speaker['id'] for speaker in speakers],
181182
'tags': [tag['id'] for tag in tags],

src/conftest.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import collections
2-
import six
32

43
import pytest
5-
4+
import six
5+
from django.conf import settings
66
from django.contrib.auth import get_user_model
77
from django.contrib.auth.models import AnonymousUser
88
from django.test.html import parse_html
9-
from django.conf import settings
109
from rest_framework.test import APIClient
1110

1211
from proposals.models import TalkProposal

0 commit comments

Comments
 (0)