target-version = "py310"
fix = true

[lint]
select = [
    "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",
]
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
]
