34 lines
1004 B
Python
34 lines
1004 B
Python
"""Single source of truth for the Honcho service version.
|
|
|
|
Reads pyproject.toml directly so the value never drifts from the authoritative
|
|
source. Falls back to installed package metadata for wheel-only deploys where
|
|
pyproject.toml may not be shipped.
|
|
|
|
Used by:
|
|
- src/main.py for the FastAPI app `version=...`
|
|
- src/telemetry/emitter.py and src/telemetry/events/base.py for event tagging
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from importlib.metadata import PackageNotFoundError
|
|
from importlib.metadata import version as _pkg_version
|
|
from pathlib import Path
|
|
|
|
import tomllib
|
|
|
|
|
|
def _read_version() -> str:
|
|
pyproject = Path(__file__).resolve().parent.parent / "pyproject.toml"
|
|
try:
|
|
with pyproject.open("rb") as f:
|
|
return tomllib.load(f)["project"]["version"]
|
|
except (OSError, KeyError, tomllib.TOMLDecodeError):
|
|
try:
|
|
return _pkg_version("honcho")
|
|
except PackageNotFoundError:
|
|
return "unknown"
|
|
|
|
|
|
HONCHO_VERSION: str = _read_version()
|