Spaces:
Sleeping
Sleeping
| """Live inference API for the datacenter verification demo.""" | |
| from __future__ import annotations | |
| import os | |
| import subprocess | |
| from functools import cache | |
| from pathlib import Path | |
| from typing import NamedTuple | |
| __all__ = ["__version__", "BuildInfo", "build_info"] | |
| __version__ = "0.1.0" | |
| class BuildInfo(NamedTuple): | |
| sha: str | None | |
| source: str | None | |
| def _clean_sha(value: str | None) -> str | None: | |
| if not value: | |
| return None | |
| cleaned = value.strip() | |
| if not cleaned or cleaned.lower() in {"unknown", "none", "null"}: | |
| return None | |
| return cleaned | |
| def _sha_from_env() -> BuildInfo | None: | |
| for name in ( | |
| "DCV_BUILD_SHA", | |
| "SPACE_COMMIT_SHA", | |
| "HF_SPACE_COMMIT_SHA", | |
| "GITHUB_SHA", | |
| "RENDER_GIT_COMMIT", | |
| "COMMIT_SHA", | |
| "SOURCE_COMMIT", | |
| ): | |
| sha = _clean_sha(os.getenv(name)) | |
| if sha: | |
| return BuildInfo(sha=sha, source=f"env:{name}") | |
| return None | |
| def _sha_from_file() -> BuildInfo | None: | |
| for path in (Path("/app/.dcv-build-sha"), Path.cwd() / ".dcv-build-sha"): | |
| try: | |
| sha = _clean_sha(path.read_text(encoding="utf-8")) | |
| except OSError: | |
| continue | |
| if sha: | |
| return BuildInfo(sha=sha, source=str(path)) | |
| return None | |
| def _sha_from_git() -> BuildInfo | None: | |
| try: | |
| result = subprocess.run( | |
| ["git", "rev-parse", "--short=12", "HEAD"], | |
| check=True, | |
| capture_output=True, | |
| text=True, | |
| timeout=1, | |
| ) | |
| except (OSError, subprocess.SubprocessError): | |
| return None | |
| sha = _clean_sha(result.stdout) | |
| if sha: | |
| return BuildInfo(sha=sha, source="git") | |
| return None | |
| def build_info() -> BuildInfo: | |
| return _sha_from_env() or _sha_from_file() or _sha_from_git() or BuildInfo(sha=None, source=None) | |