Sync backend/frontend versions to Docker/VERSION and read version from it

This commit is contained in:
2026-03-19 19:13:38 +01:00
parent 133ab2e82c
commit 80a6bac33e
5 changed files with 51 additions and 13 deletions

View File

@@ -30,21 +30,39 @@ def _read_pyproject_version() -> str:
return str(data["project"]["version"])
def _read_docker_version() -> str:
"""Read the project version from ``Docker/VERSION``.
This file is the single source of truth for release scripts and must not be
out of sync with the frontend and backend versions.
"""
repo_root = Path(__file__).resolve().parents[2]
version_path = repo_root / "Docker" / "VERSION"
if not version_path.exists():
raise FileNotFoundError(f"Docker/VERSION not found at {version_path}")
version = version_path.read_text(encoding="utf-8").strip()
return version.lstrip("v")
def _read_version() -> str:
"""Return the current package version.
Prefer the project metadata in ``pyproject.toml`` when available, since this
is the single source of truth for local development and is kept in sync with
the frontend and Docker release version.
Prefer the release artifact in ``Docker/VERSION`` when available so the
backend version always matches what the release tooling publishes.
When running from an installed distribution where the ``pyproject.toml``
is not available, fall back to installed package metadata.
If that file is missing (e.g. in a production wheel or a local checkout),
fall back to ``pyproject.toml`` and finally installed package metadata.
"""
try:
return _read_pyproject_version()
return _read_docker_version()
except FileNotFoundError:
return importlib.metadata.version(PACKAGE_NAME)
try:
return _read_pyproject_version()
except FileNotFoundError:
return importlib.metadata.version(PACKAGE_NAME)
__version__ = _read_version()