target-version = "py312" line-length = 120 [lint] select = ["E", "F", "W", "C901"] ignore = ["E501"] # line length handled by line-length above [lint.mccabe] max-complexity = 10 [lint.per-file-ignores] # security.py builds inline SVG charts as deliberately dense, semicolon-packed # row-builders + tiny lambda helpers — that compactness is the point for chart # code. Exempt ONLY the statement-density style rules; F (logic), W, and C901 # (complexity) still apply. "api/security.py" = ["E701", "E702", "E731"] # scripts/security/refresh.py is the HOST-side log parser that FEEDS that page, # written in the same dense row-builder style (one-line guards, semicolon-packed # counters) over log lines. Same exemption, same reason, same limits: F, W and # C901 still apply. E401 is the one multi-import line at its top. "api/scripts/security/refresh.py" = ["E401", "E701", "E702", "E731"]