honcho/src/_version.py

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()