Files
openrun/pyproject.toml
noisedestroyers dd2b8ef1bd P1: garminconnect auth backend — live sync working again
garth's SSO login is Cloudflare-rate-limited (429) and garth is now
deprecated upstream. New openrun.ingest.garminconnect_backend authenticates
via python-garminconnect 0.3.5 DI Bearer tokens and shims garth's client
surface (connectapi/download/username), so the existing sync pipeline runs
unchanged. openrun-sync gains --backend {auto,garth,garminconnect}; auto
prefers garminconnect when .secrets/garmin_tokens.json exists.

Login: uv run python -m openrun.ingest.garminconnect_backend

Synced: 7 activities (-> 2026-06-02) + splits + FITs, wellness through
2026-06-12, time-in-zone recomputed (364 activities).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 07:22:33 -04:00

45 lines
1.2 KiB
TOML

[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"