build(backend): close the lint gaps the E32 audit measured
ruff gains RUF100, PLW1510 and flake8-bugbear, every hit fixed rather than ignored. B008 stays on with FastAPI's Depends/Query declared immutable. basedpyright moves to standard mode, pytest to --strict-markers, and a hand run of pytest now requires the database unless SIFTLODE_TEST_REQUIRE_DB=0. PLW1510 found a real bug: the three ffprobe probes in plex/stream.py never looked at the exit status, so a probe that failed was read as the file's truth (an HDR source sent down the HW-safe path, a multi-audio file collapsed to one track, a subtitle offset taken from garbage) and the warning each except branch promises never fired. They now run with check=True.
This commit is contained in:
+19
-1
@@ -29,5 +29,23 @@ target-version = "py312"
|
||||
# nobody to raise to, a best-effort backfill inside a sync) and always worth a sentence.
|
||||
# The wider rule these two enforce lives in tests/test_swallowed_exceptions.py: a handler that
|
||||
# neither logs nor re-raises says `# silent-ok: <why>`. Ruff sees only the two narrow shapes.
|
||||
extend-select = ["LOG", "G", "T20", "TRY400", "TRY401", "S110", "S112", "BLE001"]
|
||||
#
|
||||
# E32 (gate integrity) added three more, each measured before it went on and with every hit fixed:
|
||||
# RUF100 — a `# noqa` that suppresses nothing. A stale one is a claim with no rule behind it, and
|
||||
# it stays armed for the day the line changes (24 were removed). A comment that merely
|
||||
# explains a noqa below it names the rule as `# TRY400: …`, never `# noqa TRY400`.
|
||||
# PLW1510 — `subprocess.run` without an explicit `check=`. Found the real E32 bug: three ffprobe
|
||||
# probes read the output of a probe that had FAILED and took it for the file's truth.
|
||||
# B — flake8-bugbear: loop-variable capture, `raise` without `from` inside `except`, a
|
||||
# `zip` that silently truncates (each one is `strict=True` now — the lengths are an
|
||||
# invariant, so a mismatch should be loud). B008 (a call in a default argument) stays ON:
|
||||
# FastAPI's `Depends(...)` / `Query(...)` ARE that shape by design (474 hits, all of
|
||||
# them), so those two are declared immutable below instead of switching the rule off —
|
||||
# any other call in a default still fails.
|
||||
extend-select = [
|
||||
"LOG", "G", "T20", "TRY400", "TRY401", "S110", "S112", "BLE001", "RUF100", "PLW1510", "B",
|
||||
]
|
||||
ignore = ["E402"]
|
||||
|
||||
[lint.flake8-bugbear]
|
||||
extend-immutable-calls = ["fastapi.Depends", "fastapi.Query"]
|
||||
|
||||
Reference in New Issue
Block a user