"""
Ruff configuration for linting and formatting.
"""
[tool.ruff]
# Target Python version
target-version = "py312"

# Line length
line-length = 100

# Enable rules
[tool.ruff.lint]
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort
    "B",  # bugbear
    "C4", # flake8-comprehensions
    "UP", # pyupgrade
]

# Ignore specific rules
[tool.ruff.lint.ignore]
E501 = "Line too long"  # Handled by formatter

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]  # Allow unused imports in __init__.py
"tests/**" = ["S101"]    # Allow assert in tests
