[tool.ruff]
line-length = 88
target-version = "py311"

select = ["ALL"]
ignore = [
  # pydocstyle
  "D",
  # todo comments
  "TD",
  # fixmes
  "FIX",

  # Unused function argument
  "ARG001",

  # Shebang should contain `python`
  "EXE003",
  # Shebang should be at the beginning of the file
  "EXE005",

  # Missing type annotation for `self` in method
  "ANN101",
  # Dynamically typed expressions (typing.Any)
  "ANN401",
  # Trailing comma missing
  "COM812",
  # Unnecessary `dict` call (rewrite as a literal)
  "C408",
  # Boolean-typed positional argument in function definition
  "FBT001",
  # Logging statement uses f-string
  "G004",
  # disabled on ruff's recommendation as causes problems with the formatter
  "ISC001",
  # Use of `assert` detected
  "S101",
  # `subprocess` call: check for execution of untrusted input
  "S603",
  # Starting a process with a partial executable path
  "S607",
  # Boolean default positional argument in function definition
  "FBT002",

  # Too many statements
  "PLR0915",
  # Too many arguments in function definition
  "PLR0913",
  "PLR0912", # Too many branches
  # $X is too complex
  "C901",

  "E501", # line too long
  "T201", # `print` found
  "PLR2004", # Magic value used in comparison
]

[tool.mypy]
python_version = "3.11"
warn_redundant_casts = true
disallow_untyped_calls = true
disallow_untyped_defs = true
no_implicit_optional = true
pretty = true