lint.external = ["CCR", "DAR", "DOC", "WPS"]

lint.select = ["ALL"]
lint.ignore = [
  "COM812",  # Trailing comma, supposedly conflicts with linter, so we have add-trailing-commas
  "D100",    # No docstrings for modules
  "D104",    # No docstrings for packages
  "D107",    # Allow __init__ to not have docstrings, conflicts with pydoclint
  "FIX",     # Allow TODOs which are checked by TD rules
  "ISC001",  # Allow implicit string concatenation. Sometimes it's just cleaner
  "PLR2004", # Allow magic value comparison
  "SLF",     # Ignore private member access, covered by pyright
]
line-length = 80
target-version = "py312"

[format]
quote-style = "single"
indent-style = "space"
skip-magic-trailing-comma = false

[lint.flake8-annotations]
allow-star-arg-any = true

[lint.flake8-quotes]
inline-quotes = "single"
multiline-quotes = "double"

[lint.isort]
split-on-trailing-comma = true

[lint.mccabe]
max-complexity = 7

[lint.per-file-ignores]
"test_*.py" = [
  "ANN201", # Allow tests to not have a return type
  "ARG001", # Ignore unused arguments in tests - sometimes required for fixtures
  "D101",   # Allow test code to have public classes without docstrings
  "D102",   # Allow test code to have public methods without docstrings
  "D103",   # Allow test code to have public functions without docstrings
  "PT004",  # Allow none-returning fixtures to not lead with underscore due to pyright conflict
  "S101",   # Please sir may I use assert in my tests?
]
"**/conftest.py" = ["ANN201", "ARG001", "D101", "D102", "D103", "PT004", "S101"]

[lint.pydocstyle]
convention = "google"
