[project]
name = "jujumate"
version = "0.3.0"

description = "Terminal UI for Juju infrastructure orchestration"
readme = "README.md"
authors = [
    { name = "Jose C. Massón", email = "jose.masson@canonical.com" }
]
requires-python = ">=3.10"
dependencies = [
    "juju>=3.6.1.3",
    "websockets<14",
    "textual>=8.0.0",
]

[project.scripts]
jujumate = "jujumate:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[dependency-groups]
dev = [
    "mkdocs<2.0",
    "mkdocs-material<9.7",
    "nox>=2026.2.9",
    "nox-uv>=0.7.1",
    "pyright>=1.1.408",
    "pytest>=9.0.2",
    "pytest-asyncio>=1.3.0",
    "pytest-cov>=7.0.0",
    "ruff>=0.15.2",
]

[tool.pytest.ini_options]
asyncio_mode = "strict"
filterwarnings = [
    "ignore::DeprecationWarning:websockets",
    "ignore::DeprecationWarning:juju",
]

[tool.ruff]
target-version = "py310"
line-length = 100

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]

[tool.pyright]
pythonVersion = "3.10"
typeCheckingMode = "standard"
include = ["src"]

[tool.coverage.run]
source = ["src/jujumate"]
omit = ["*/__init__.py", "*/jujumate/__main__.py"]
disable_warnings = ["couldnt-parse"]

[tool.coverage.report]
show_missing = true
