Bump ruff from 0.15.21 to 0.16.2 in /django - #479
Conversation
bf729dd to
f48277c
Compare
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.21 to 0.16.2. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.21...0.16.2) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.16.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Ruff 0.16 widened the rules enabled when no `select` is configured, and also began formatting Python code blocks embedded in Markdown. This repo has never carried a ruff config, so the bump surfaced 167 lint errors and 6 unformatted docs files. Rather than pin the old defaults, adapt the code. Automatic fixes (138): - UP006/UP035/UP045: PEP 585/604 built-in generics — `List[x]` -> `list[x]`, `Optional[x]` -> `x | None`, and `Callable`/`Iterable`/`Mapping` moved from `typing` to `collections.abc`. - UP017: `datetime.timezone.utc` -> `datetime.UTC`. - I001: import-block ordering. - RUF022/RUF100: `__all__` ordering and unused noqa directives. Manual fixes (29): - RUF012: annotated genuinely-shared class attributes with `ClassVar` (serializer `Meta` options, migration `dependencies`/`operations`, the `audited_models` registry and its test stubs). DRF views are the exception — `APIView` declares `permission_classes` as an *instance* variable, so `ClassVar` there fails mypy with "Cannot override instance variable with class variable". Those use an immutable tuple instead, which satisfies RUF012 without fighting the base class. - SIM117/SIM102: collapsed nested `with` and `if` statements. - B017: `assertRaises(Exception)` -> `assertRaises(IntegrityError)` in the two one-to-one uniqueness tests; verified that is what is actually raised. - B018: dropped a no-op `WefaLogEntry.objects.all().__class__` statement. - C408: `dict(...)` -> literal. FURB162: redundant zero-offset tz replace. - DTZ005: docs `datetime.now()` -> `datetime.now(tz=UTC)`. - BLE001: the blind catch around `django.setup()` in docs/source/conf.py is deliberate (docs must build without Django), so it carries an explicit `noqa: BLE001` with the reason; RUF100 will flag it if it stops applying. Markdown reformatting normalises the doc snippets to double quotes, matching the codebase. Inline comments are preserved, including the `nside_wefa.common` app-ordering note. Note for future work: the migration files are Django-generated, so a newly generated migration will need the same `ClassVar` annotations (or a per-file ignore) to pass lint. Verified: ruff check, ruff format --check, mypy, bandit, pysentry, `makemigrations --check`, and 325 passing tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
f48277c to
66a24f5
Compare
|
Re: the five The module is a deliberate PEP 562 lazy-import module: Verified at runtime — every name in Adopting the suggested fix (real module-level bindings) would force the eager imports this module exists to avoid. Worth noting these findings are not introduced by this PR — my only change to the file is RUF022 sorting |
Bumps ruff from 0.15.21 to 0.16.2.
Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
5b48a04Bump 0.16.2 (#27555)1b9e5fcUpdate Swatinem/rust-cache action to v2.9.2 (#27568)c4e86fc[ty] Add helper extension methods for half-range and equality constraints (#2...17a00de[ty] Reuse primer commands in memory reports (#27553)6ea296b[ty] Normalize type labels in structured docstrings (#26923)2fc445f[ty] Diagnose invalid getattr calls (#27502)22c7823[ty] Enable (but downrank) auto-import completion suggestions from stub-only ...05160d5[ty] Diagnose invalid descriptor__get__calls (#27400)baea3d0[ty] Expose strict analysis options in the playground (#27543)c88946e[ty] Bump ecosystem-analyzer for strict project settings (#27542)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)