[project]
name = "grimoire-dashboard"
version = "0.1.8"
description = "Self-hostable GitHub repository monitoring dashboard"
authors = [
    {name = "Luca Bello", email = "lusgabello@gmail.com"},
]
readme = "README.md"
license-files = ["LICENSE"]
requires-python = ">=3.13"
dependencies = [
    "dataconfy>=0.0.3",
    "fastapi>=0.115",
    "uvicorn[standard]>=0.34",
    "jinja2>=3.1",
    "httpx>=0.28",
    "pyyaml>=6.0",
    "pydantic>=2.10",
    "sqlmodel>=0.0.22",
    "aiosqlite>=0.21",
    "apscheduler>=3.11,<4",
    "prometheus-client>=0.22",
    "opentelemetry-api>=1.30",
    "opentelemetry-sdk>=1.30",
    "opentelemetry-instrumentation-fastapi>=0.51b0",
    "python-multipart>=0.0.18",
]

[project.scripts]
grimoire = "grimoire.__main__:main"

[dependency-groups]
dev = [
    "ruff>=0.14.14",
    "pyright>=1.1.408",
    "codespell>=2.4.1",
    "vulture>=2.14",
    "pytest>=9.0.2",
    "pytest-cov>=7.0.0",
    "pytest-sugar>=1.1.1",
    "pytest-asyncio>=0.25",
    "respx>=0.22",
    "actionlint-py>=1.7.10.24",
    "uv-secure>=0.15.4",
]
docs = [
    "mkdocs-material>=9.6",
]

[project.urls]
Homepage = "https://github.com/lucabello/grimoire"
Documentation = "https://github.com/lucabello/grimoire"
Repository = "https://github.com/lucabello/grimoire"
Issues = "https://github.com/lucabello/grimoire/issues"
Changelog = "https://github.com/lucabello/grimoire/releases"


# Building and publishing
[build-system]
requires = ["hatchling >= 1.26"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/grimoire"]

[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
publish-url = "https://test.pypi.org/legacy/"
explicit = true

# Tools configuration
[tool.ruff]
line-length = 99

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.codespell]
skip = ".git,build,venv*"
ignore-words-list = "assertIn"

[tool.vulture]
min_confidence = 80

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

[tool.pyright]
pythonVersion = "3.13"
venvPath = "."
venv = ".venv"
