mirror of
https://github.com/BerriAI/litellm.git
synced 2026-08-28 05:25:59 +00:00
Every strict-gate rule whose budget ceiling was already 0 moves into the base config's lint.extend-select, so editors and ruff check --fix surface the diagnostics directly and the budget file shrinks to rules with real debt. Graduates stay in ruff-strict.toml's select so the strict RUF100 pass keeps policing their stale noqa directives, and base external entries they made redundant (FURB, I001, RUF010, RUF022, RUF023, RUF051) are dropped so base RUF100 polices those directly. UP037 had two violations hidden behind a star import; importing Literal explicitly fixes them so UP037 can graduate too. New drift tests pin the invariants: every strict-selected rule is budgeted or hard-failed by base, every base-owned rule stays visible to exactly one RUF100 pass, and graduated rules fail the normal ruff run.
51 lines
2.8 KiB
TOML
51 lines
2.8 KiB
TOML
lint.ignore = ["F405", "E402", "F403"]
|
|
# The second group is the strict gate's graduates: rules the codebase already has zero
|
|
# violations of, so they hard-fail here instead of being ratcheted in ruff-strict-budget.json.
|
|
# That gives editors and `ruff check --fix` the diagnostic, which the gate script cannot.
|
|
lint.extend-select = [
|
|
"T20", "PGH004", "RUF008", "RUF009", "RUF100",
|
|
"B033", "FURB136", "FURB168", "FURB188", "I001", "PERF402", "PIE790", "PIE800", "PLC0208",
|
|
"PLR0402", "PLR1711", "PLR1730", "PLR2044", "PYI030", "PYI041", "PYI064", "RET501", "RUF010",
|
|
"RUF022", "RUF023", "RUF051", "SIM114", "SIM118", "TC005", "UP006", "UP007", "UP008", "UP012",
|
|
"UP018", "UP024", "UP032", "UP034", "UP035", "UP037", "UP045",
|
|
]
|
|
# RUF100 (unused-noqa) only knows the rules enabled in THIS config, so it would strip
|
|
# `# noqa` directives that protect rules enforced elsewhere. List those codes as external
|
|
# so RUF100 leaves their directives alone: the strict gate (ruff-strict.toml) and upstream
|
|
# litellm's own ruff config both rely on suppressions this config can't see.
|
|
lint.external = [
|
|
# Enforced by the strict-rule gate (scripts/ruff_strict_gate.py + ruff-strict.toml).
|
|
# Family entries whose every strict rule graduated into extend-select above (FURB), and
|
|
# standalone graduated codes (I001, RUF010, RUF022, RUF023, RUF051), are dropped so this
|
|
# config's RUF100 polices their directives itself.
|
|
"ANN", "ASYNC230", "B", "C", "D419", "DTZ", "EXE", "LOG015", "N999", "PERF",
|
|
"PIE", "PL", "PYI", "RET", "RUF012", "RUF015", "RUF019",
|
|
"RUF046", "RUF059", "S110", "S112", "SIM", "TC", "TID251", "TRY", "UP",
|
|
# Enforced by upstream litellm's ruff config, but not run in this repo's CI
|
|
"PLC0415", "E402", "BLE001", "ARG002", "S102", "S324", "S606", "D401", "F403", "F405",
|
|
]
|
|
line-length = 120
|
|
|
|
format.exclude = ["**/enterprise/**"]
|
|
|
|
# Was the top-level `exclude`. Scoped to lint so `ruff format` still formats these paths
|
|
# (Black did) while `ruff check` keeps skipping them.
|
|
lint.exclude = ["litellm/__init__.py", "litellm/proxy/example_config_yaml/*", "tests/*"]
|
|
|
|
|
|
[lint.per-file-ignores]
|
|
"litellm/main.py" = ["F401"]
|
|
"litellm/types/caching.py" = ["F401"]
|
|
"litellm/types/integrations/slack_alerting.py" = ["F401"]
|
|
"litellm/types/llms/custom_http.py" = ["F401"]
|
|
"litellm/types/llms/openai.py" = ["F401"]
|
|
"litellm/types/proxy/management_endpoints/scim_v2.py" = ["F401"]
|
|
"litellm/types/responses/main.py" = ["F401"]
|
|
"litellm/utils.py" = ["F401"]
|
|
"litellm/proxy/proxy_server.py" = ["F401"]
|
|
"litellm/caching/__init__.py" = ["F401"]
|
|
"litellm/llms/anthropic/chat/__init__.py" = ["F401"]
|
|
"litellm/llms/azure_ai/embed/__init__.py" = ["F401"]
|
|
"litellm/llms/azure_ai/rerank/__init__.py" = ["F401"]
|
|
"litellm/llms/bedrock/chat/__init__.py" = ["F401"]
|
|
"litellm/proxy/utils.py" = ["F401"]
|