[project]
name = "beautyspot"
dynamic = ["version"]
description = "Make your functions beautiful with beauty spots."
readme = "README.md"
authors = [
    { name = "Neel Bauman", email = "neel.bauman@example.com" }
]

requires-python = ">=3.12"
license = "MIT"
dependencies = [
    "msgpack>=1.1.2",
    "rich>=14.3.1",
    "typer>=0.21.1",
]

[project.optional-dependencies]
all = [
    "boto3>=1.34.0",
    "pandas>=2.3.3",
    "streamlit>=1.51.0",
    "watchdog>=6.0.0",
    "graphviz>=0.20.1",
]
s3 = [
    "boto3>=1.34.0",
]
dashboard = [
    "pandas>=2.3.3",
    "streamlit>=1.51.0",
    "watchdog>=6.0.0",
    "graphviz>=0.20.1",
]

[dependency-groups]
dev = [
    "msgpack>=1.1.2",
    "pandas>=2.3.3",
    "streamlit>=1.51.0",
    "watchdog>=6.0.0",
    "boto3>=1.34.0",
    "graphviz>=0.20.1",
    "pydantic>=2.12.5",
    "pyright>=1.1.408",
    "pytest>=9.0.1",
    "pytest-cov>=4.0",
    "pytest-asyncio>=1.3.0",
    "radon>=6.0.1",
    "pydeps>=3.0.2",
    "pylint>=4.0.4",
    "pytest-mock>=3.15.1",
    "doorstop>=3.1",
]

[project.scripts]
beautyspot = "beautyspot.cli:main"

[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"

[tool.hatch.version]
source = "vcs"

[tool.hatch.build.hooks.vcs]
version-file = "src/beautyspot/_version.py"

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

[tool.uv]
default-groups = ["dev"]

[tool.pyright]
venvPath = "."
venv = ".venv"
pythonVersion = "3.12"
typeCheckingMode = "standard"

[tool.pytest.ini_options]
addopts = "--cov=src --cov-report=term-missing --cov-report=html"
testpaths = ["tests"]

[tool.coverage.run]
branch = true
source = ["src"]
omit = [
    "src/config.py",
    "src/**/*_generated.py",
]

[tool.coverage.report]
show_missing = true
