Initial commit: Quantum Terminal — Free & Open Source Trading Platform
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# version: v2 (Quantum Terminal)
|
||||
"""
|
||||
version_info.py — Quantum Terminal version endpoint.
|
||||
|
||||
Exposes:
|
||||
GET /api/version
|
||||
→ {
|
||||
current: "1.0.0",
|
||||
latest: "1.0.0",
|
||||
update_available: false,
|
||||
download_url: "https://github.com/YourUsername/QuantumTerminal/releases",
|
||||
released_at: "",
|
||||
banner_message: "",
|
||||
telegram_url: "",
|
||||
checked_at: "2026-05-21T00:00:00Z",
|
||||
}
|
||||
|
||||
Behavior:
|
||||
- current reads VERSION from bundled data (PyInstaller) or repo root (dev).
|
||||
- No remote update checking in open-source version.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import sys
|
||||
import time
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
log = logging.getLogger("qt.version")
|
||||
|
||||
DOWNLOAD_BASE = "https://github.com/YourUsername/QuantumTerminal/releases"
|
||||
CACHE_TTL_SEC = 600 # 10 min
|
||||
|
||||
|
||||
def _read_bundled_version() -> str:
|
||||
"""Load VERSION from PyInstaller bundle or dev repo root. Falls back to '1.0.0'."""
|
||||
candidates = []
|
||||
if getattr(sys, "frozen", False):
|
||||
candidates.append(Path(getattr(sys, "_MEIPASS", ".")) / "VERSION")
|
||||
candidates.append(Path(__file__).resolve().parents[2] / "VERSION") # repo root
|
||||
candidates.append(Path(__file__).resolve().parents[1] / "VERSION")
|
||||
candidates.append(Path.cwd() / "VERSION")
|
||||
|
||||
for p in candidates:
|
||||
try:
|
||||
if p.is_file():
|
||||
v = p.read_text(encoding="utf-8").strip()
|
||||
if v:
|
||||
return v
|
||||
except Exception:
|
||||
continue
|
||||
log.warning("VERSION file not found — using 1.0.0")
|
||||
return "1.0.0"
|
||||
|
||||
|
||||
CURRENT_VERSION = _read_bundled_version()
|
||||
log.info(f"Quantum Terminal version: {CURRENT_VERSION}")
|
||||
|
||||
|
||||
def create_version_router() -> APIRouter:
|
||||
router = APIRouter(tags=["version"])
|
||||
|
||||
@router.get("/api/version")
|
||||
async def api_version(refresh: bool = False):
|
||||
return {
|
||||
"current": CURRENT_VERSION,
|
||||
"latest": CURRENT_VERSION,
|
||||
"update_available": False,
|
||||
"download_url": DOWNLOAD_BASE,
|
||||
"released_at": "",
|
||||
"banner_message": "",
|
||||
"telegram_url": "",
|
||||
"checked_at": datetime.now(timezone.utc).isoformat(),
|
||||
}
|
||||
|
||||
return router
|
||||
Reference in New Issue
Block a user