[build-system]
requires = [ "setuptools" ]
build-backend = "setuptools.build_meta"

[project]
name = "clan-cli"
description = "cLAN CLI tool"
dynamic = [ "version" ]
scripts = { clan = "clan_cli:main" }

[tool.setuptools.packages.find]
exclude = ["clan_cli.nixpkgs*"]

[tool.setuptools.package-data]
clan_cli = [ "config/jsonschema/*", "webui/assets/**/*"]



[tool.pytest.ini_options]
testpaths = "tests"
faulthandler_timeout = 60
log_level = "DEBUG"
log_format = "%(levelname)s: %(message)s"
addopts = "--cov . --cov-report term --cov-report html:.reports/html --no-cov-on-fail --durations 5 --color=yes --maxfail=1 --new-first" # Add --pdb for debugging
norecursedirs = "tests/helpers"
markers = [ "impure" ]

[tool.mypy]
python_version = "3.10"
warn_redundant_casts = true
disallow_untyped_calls = true
disallow_untyped_defs = true
no_implicit_optional = true
follow_imports = "normal"
exclude = [
  "clan_cli.nixpkgs",
]

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

[[tool.mypy.overrides]]
module = "argcomplete.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "ipdb.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "jsonschema.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "pytest.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "anyio.*"
ignore_missing_imports = true


[[tool.mypy.overrides]]
module = "setuptools.*"
ignore_missing_imports = true

[tool.ruff]
line-length = 88
select = [ "E", "F", "I", "N"]
ignore = [ "E501", "N805" ]
exclude = ["tests/openapi_client"]

[tool.black]
line-length = 88
target-version = [ "py310" ]
include = "\\.pyi?$"
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
  # The following are specific to Black, you probably don't want those.
  | blib2to3
  | tests/data
  | profiling
)/
'''
