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

[project]
name = "crm-system"
version = "1.0.0"
description = "Self-hosted CRM for small sales teams"
requires-python = ">=3.11"

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
    "-ra",
    "--strict-markers",
    "--tb=short",
]
filterwarnings = [
    "ignore::DeprecationWarning:passlib.*",
    "ignore::DeprecationWarning:jose.*",
]

[tool.coverage.run]
source = ["app"]
branch = true
concurrency = ["greenlet"]
omit = [
    "app/__init__.py",
    "app/*/__init__.py",
    "app/plugins/builtins/test_sample.py",
]

[tool.coverage.report]
precision = 2
show_missing = true
skip_covered = false

[tool.ruff]
line-length = 100
target-version = "py311"
extend-exclude = [".venv", "alembic/versions"]

[tool.ruff.lint]
select = ["E", "F", "W", "I", "B", "UP", "N", "ASYNC"]
ignore = ["E501", "B008"]

[tool.mypy]
python_version = "3.11"
strict = true
ignore_missing_imports = true
warn_unused_ignores = true
warn_return_any = true
disallow_untyped_defs = false
files = ["app"]
