[project]
name = "openrun"
version = "0.1.0"
description = "Endurance-running analytics — local-first, open-source. Banister CTL/ATL/TSB, Pa:HR decoupling, FIT-aware HR zones, route clustering, race-plan projection."
readme = "README.md"
license = { text = "MIT" }
requires-python = ">=3.13"
dependencies = [
    "fitparse>=1.2.0",
    "garminconnect>=0.3.5",
    "garth>=0.8.0",
    "ipykernel>=7.2.0",
    "jinja2>=3.1.6",
    "matplotlib>=3.10.9",
    "pandas>=3.0.3",
    "streamlit>=1.40",
]

[project.scripts]
openrun-init          = "openrun.setup:main"
openrun-auth          = "openrun.ingest.auth:main"
openrun-sync          = "openrun.ingest.garmin_api:main"
openrun-ingest        = "openrun.ingest.garmin_export:main"
openrun-link-fit      = "openrun.ingest.fit_linker:main"
openrun-time-in-zone  = "openrun.ingest.time_in_zone:main"
openrun-import-manual = "openrun.ingest.manual:main"
openrun-web           = "openrun.web.launcher:main"

[dependency-groups]
dev = [
    "pytest>=8.0.0",
    "pytest-cov>=5.0.0",
]

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

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

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-ra --strict-markers"
