[tool.codespell]
ignore-words-list = "fpr,hepler,loos,te,thrid"

[tool.ruff]
lint.select = [
  "AIR",       # Airflow
  "ASYNC",     # flake8-async
  "B",         # flake8-bugbear
  "C90",       # McCabe cyclomatic complexity
  "DTZ",       # flake8-datetimez
  "E",         # pycodestyle
  "F",         # Pyflakes
  "FA",        # flake8-future-annotations
  "FLY",       # flynt
  "ICN",       # flake8-import-conventions
  "INT",       # flake8-gettext
  "ISC",       # flake8-implicit-str-concat
  "PL",        # Pylint
  "PT",        # flake8-pytest-style
  "PYI",       # flake8-pyi
  "RSE",       # flake8-raise
  "RUF",       # Ruff-specific rules
  "T10",       # flake8-debugger
  "TCH",       # flake8-type-checking
  "TID",       # flake8-tidy-imports
  "W",         # pycodestyle
  "YTT",       # flake8-2020
  # "A",       # flake8-builtins
  # "ANN",     # flake8-annotations
  # "ARG",     # flake8-unused-arguments
  # "BLE",     # flake8-blind-except
  # "C4",      # flake8-comprehensions
  # "COM",     # flake8-commas
  # "D",       # pydocstyle
  # "DJ",      # flake8-django
  # "EM",      # flake8-errmsg
  # "ERA",     # eradicate
  # "EXE",     # flake8-executable
  # "FBT",     # flake8-boolean-trap
  # "FIX",     # flake8-fixme
  # "G",       # flake8-logging-format
  # "I",       # isort
  # "INP",     # flake8-no-pep420
  # "N",       # pep8-naming
  # "NPY",     # NumPy-specific rules
  # "PD",      # pandas-vet
  # "PGH",     # pygrep-hooks
  # "PIE",     # flake8-pie
  # "PLR091",  # Pylint Refactor just for max-args, max-branches, etc.
  # "PTH",     # flake8-use-pathlib
  # "Q",       # flake8-quotes
  # "RET",     # flake8-return
  # "S",       # flake8-bandit
  # "SIM",     # flake8-simplify
  # "SLF",     # flake8-self
  # "T20",     # flake8-print
  # "TD",      # flake8-todos
  # "TRY",     # tryceratops
  # "UP",      # pyupgrade
]
lint.ignore = [
  "B007",
  "B904",
  "E401",
  "E402",
  "E711",
  "E712",
  "E713",
  "E722",
  "E731",
  "F401",
  "F403",
  "F405",
  "F841",
  "PLR0402",
  "PLW2901",
  "RUF005",
  "RUF021",
  "RUF022",
]
line-length = 142
target-version = "py37"

[tool.ruff.lint.mccabe]
max-complexity = 16

[tool.ruff.lint.pylint]
allow-magic-value-types = ["bytes", "int", "str"]
max-args = 11
max-branches = 20
max-returns = 7
max-statements = 56

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["E402"]
"test/*" = ["S101"]

[tool.coverage.run]
concurrency = ["multiprocessing"]
