[project]
name = "argenta"
version = "1.2.0"
description = "Python library for building modular CLI applications"
authors = [{ name = "kolo", email = "kolo.is.main@gmail.com" }]
requires-python = ">=3.12,<3.15"
readme = "README.md"
license = { text = "MIT" }
dependencies = [
    "rich (>=14.0.0,<15.0.0)",
    "art (>=6.4,<7.0)",
    "dishka>=1.7.2",
    "prompt-toolkit>=3.0.52",
]

[project.optional-dependencies]
cli = [
    "typer>=0.9,!=0.12,<=0.21.1",
]

[dependency-groups]
dev = [
    {include-group = "linters"},
    {include-group = "typecheckers"},
    {include-group = "docs"},
    {include-group = "tests"},
    "scriv>=1.8.0",
]
linters = [
    "isort>=7.0.0",
    "ruff>=0.12.12",
    "wemake-python-styleguide>=0.17.0",
]
typecheckers = [
    "mypy>=1.14.1",
]
docs = [
    "esbonio>=1.0.0",
    "shibuya>=2025.9.25",
    "sphinx>=8.2.3",
    "sphinx-autobuild>=2025.8.25",
    "sphinx-intl>=2.3.2",
]
tests = [
    "pyfakefs>=5.5.0",
    "pytest>=8.3.2",
    "pytest-cov>=7.0.0",
    "pytest-mock>=3.15.1",
]
metrics = [
    "matplotlib>=3.10.8",
    "psutil>=7.2.1",
    "py-cpuinfo>=9.0.0",
]

[project.scripts]
argenta = "argenta._cli.__main__:main"

[tool.ruff]
line-length=100

[tool.pyright]
typeCheckingMode = "strict"

[[tool.pyright.executionEnvironments]]
root = "tests/"
reportPrivateUsage = false
reportUnusedFunction = false

[[tool.pyright.executionEnvironments]]
root = "metrics/"
reportPrivateUsage = false
reportUnusedFunction = false

[tool.coverage.run]
branch = true
omit = [
    "src/argenta/app/protocols.py",
    "src/argenta/*/exceptions.py",
    "src/argenta/metrics/*"
]

[tool.scriv]
format = "md"
output_file = "CHANGELOG.md"
fragment_directory = "changelog.d"
categories = [
    "Added",
    "Changed",
    "Deprecated",
    "Removed",
    "Fixed",
]
md_header_level = "2"

[tool.mypy]
disable_error_code = "import-untyped"

[tool.isort]
line_length=90

[build-system]
requires = ["uv_build"]
build-backend = "uv_build"
