ruff

#Config

.ruff.toml, pyproject.toml or ruff.toml in the file’s directory or any parent directory.

# Support Python 3.10+.
target-version = "py310"
# Set the maximum line length to 79.
line-length = 79

[lint]
# Add the `line-too-long` rule to the enforced rule set.
extend-select = ["E501"]

select = [
    "B",       # Bugbear
    "E",       # pycodestyle, standard
    "F",       # Enable all pyflakes rules
    "UP",      # Enable all pyupgrade rules by default
    "RUF100",  # Ban unused `# noqa` comments
    "PGH004",  # Ban blanket `# noqa` comments (only ignore specific error codes)
]

ignore = [
    # Unnecessary parentheses to functools.lru_cache: just leads to unnecessary churn.
    # https://github.com/python/cpython/pull/104684#discussion_r1199653347.
    "UP011",
    # Use format specifiers instead of %-style formatting.
    # Doesn't always make code more readable.
    "UP031",
    # Use f-strings instead of format specifiers.
    # Doesn't always make code more readable.
    "UP032",
    # Use PEP-604 unions rather than tuples for isinstance() checks.
    # Makes code slower and more verbose. https://github.com/astral-sh/ruff/issues/7871.
    "UP038",
    "E501", # line-too-long
    "F403", # undefined-local-with-import-star
    "F405", # undefined-local-with-import-star-usage
]

unfixable = [
    # The autofixes sometimes do the wrong things for these;
    # it's better to have to manually look at the code and see how it needs fixing
    "F841",  # Detects unused variables
    "F601",  # Detects dictionaries that have duplicate keys
    "F602",  # Also detects dictionaries that have duplicate keys
]

#Checks

#VSCode Integration

{
  "ruff.lint.run": "onSave",
  "ruff.showNotifications": "onError",
  "ruff.lint.args": [
    "check", "--config", "/path/ruff.toml"
  ],

}