lint.ignore = ["F405", "E402", "E501", "F403"] lint.extend-select = ["E501", "T20", "PGH004", "RUF008", "RUF009", "RUF100"] # 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) "C901", # 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 # `ruff format` (replacing Black) must wrap at 88, the width Black used and the whole # history is formatted to. The global line-length stays 120 because E501 and the import # sorter (I001, strict gate) are tuned to it and ruff has no per-formatter line-length, # so 88 is passed at the `ruff format --line-length 88` call sites (Makefile + CI). 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/types/*", "litellm/__init__.py", "litellm/proxy/example_config_yaml/*", "tests/*"] [lint.per-file-ignores] "litellm/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"]