[tool.black]
line-length = 100
exclude = '''
(
  /(
      \.eggs         # exclude a few common directories in the
    | \.git          # root of the project
    | \.hg
    | \.mypy_cache
    | \.tox
    | \.venv
    | _build
    | buck-out
    | build
    | dist
  )/
  # Exclude vendor directory
  | vendor
)
'''

[tool.isort]
line_length = 100
multi_line_output=0
lines_after_imports=2
skip_glob = ["**/.env*", "**/env/*", "**/.venv/*", "**/docs/*", "**/user_data/*"]

[tool.pytest.ini_options]
asyncio_mode = "auto"

[tool.mypy]
ignore_missing_imports = true
namespace_packages = false
warn_unused_ignores = true
exclude = [
    '^build_helpers\.py$'
]
plugins = [
  "sqlalchemy.ext.mypy.plugin"
]

[[tool.mypy.overrides]]
module = "tests.*"
ignore_errors = true

[[tool.mypy.overrides]]
# Telegram does not use implicit_optional = false in the current version.
module = "telegram.*"
implicit_optional = true

[build-system]
requires = ["setuptools >= 46.4.0", "wheel"]
build-backend = "setuptools.build_meta"

[tool.pyright]
include = ["freqtrade"]
exclude = [
  "**/__pycache__",
  "build_helpers/*.py",
]
ignore = ["freqtrade/vendor/**"]


[tool.ruff]
line-length = 100
extend-exclude = [".env"]
target-version = "py38"
extend-select = [
  "C90",    # mccabe
  # "N",    # pep8-naming
  # "UP",   # pyupgrade
  "TID",    # flake8-tidy-imports
  # "EXE",  # flake8-executable
  "YTT",    # flake8-2020
  # "DTZ",  # flake8-datetimez
  # "RSE",  # flake8-raise
  # "TCH",  # flake8-type-checking
  "PTH",  # flake8-use-pathlib
]

[tool.ruff.mccabe]
max-complexity = 12