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:
28 files changed
+84
-68
No files matched your search
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user