2026-05-18 12:53:24 -04:00
|
|
|
[project]
|
2026-05-19 08:34:22 -04:00
|
|
|
name = "openrun"
|
2026-05-18 12:53:24 -04:00
|
|
|
version = "0.1.0"
|
2026-05-19 08:34:22 -04:00
|
|
|
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" }
|
2026-05-18 12:53:24 -04:00
|
|
|
requires-python = ">=3.13"
|
|
|
|
|
dependencies = [
|
|
|
|
|
"fitparse>=1.2.0",
|
|
|
|
|
"garth>=0.8.0",
|
|
|
|
|
"ipykernel>=7.2.0",
|
|
|
|
|
"jinja2>=3.1.6",
|
|
|
|
|
"matplotlib>=3.10.9",
|
|
|
|
|
"pandas>=3.0.3",
|
|
|
|
|
]
|
2026-05-19 08:34:22 -04:00
|
|
|
|
|
|
|
|
[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"
|
|
|
|
|
|
|
|
|
|
[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"
|