style: say which lint rules this repo keeps, then keep them

`[tool.ruff]` set a line length and a target version and nothing else, so which
rules ran depended on the installed ruff's defaults — fine while nobody ran it,
not fine for a CI job that can turn a push red because a tool changed its mind.

The set is named explicitly (E, F, I, UP, SIM, B, RUF) with three ignores that
are each a real decision rather than a shrug: B008, because FastAPI's whole
dependency idiom is a call in a default argument; E501, because wrapping prose
is a formatter's business; and RUF001, because the reports and the bot speak
Russian and "ambiguous character" is the wrong complaint about a string the
user is meant to read.

The 73 findings that remained are fixed — mostly `datetime.timezone.utc` →
`datetime.UTC`, `typing.Callable` → `collections.abc.Callable`, import order,
and unused `noqa` markers — plus seven by hand: `contextlib.suppress` for two
try/except/pass pairs, unpacking instead of list concatenation, one negated
return.

`ruff format` is deliberately *not* adopted: it would reformat 51 files, and
some of the layout here is hand-set (the comment tables, the DNS wire-format
structs) in ways a formatter flattens.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
timka123andClaude Opus 5 committed 2026-10-22 17:28:57 +03:00
1 parent 5facf41f10
commit ec7eedbc66
28 files changed
+84 -68

No files matched your search

+5 -5
View File
@@ -7,7 +7,7 @@ for" — here.
from __future__ import annotations
from datetime import date, datetime, time, timedelta, timezone
from datetime import UTC, date, datetime, time, timedelta
from zoneinfo import ZoneInfo
@@ -19,7 +19,7 @@ def tz(name: str) -> ZoneInfo:
def now_utc() -> datetime:
return datetime.now(timezone.utc)
return datetime.now(UTC)
def ensure_utc(moment: datetime | None) -> datetime | None:
@@ -31,12 +31,12 @@ def ensure_utc(moment: datetime | None) -> datetime | None:
"""
if moment is None:
return None
return moment if moment.tzinfo is not None else moment.replace(tzinfo=timezone.utc)
return moment if moment.tzinfo is not None else moment.replace(tzinfo=UTC)
def to_local(moment: datetime, tz_name: str) -> datetime:
if moment.tzinfo is None:
moment = moment.replace(tzinfo=timezone.utc)
moment = moment.replace(tzinfo=UTC)
return moment.astimezone(tz(tz_name))
@@ -54,7 +54,7 @@ def day_bounds_utc(day: date, tz_name: str) -> tuple[datetime, datetime]:
zone = tz(tz_name)
start = datetime.combine(day, time.min, tzinfo=zone)
end = start + timedelta(days=1)
return start.astimezone(timezone.utc), end.astimezone(timezone.utc)
return start.astimezone(UTC), end.astimezone(UTC)
def in_window(moment: time, start: time, end: time) -> bool: