aboutsummaryrefslogtreecommitdiff
path: root/app/backends/qwen.py
diff options
context:
space:
mode:
authorhistoria <historiavg@proton.me>2026-08-27 17:03:57 -0400
committerhistoria <historiavg@proton.me>2026-08-27 17:03:57 -0400
commitcef2352a5e81b272d067c2c02eb9588e54edfcfd (patch)
tree83af416a82d9e854f44b6f3207eb8ea648b0896d /app/backends/qwen.py
parent6527240aa69a08f06e36e796818721abeec9f592 (diff)
downloadtts-audiobook-generator-cef2352a5e81b272d067c2c02eb9588e54edfcfd.tar.gz
feat: automatic updates added to configure backend menu
Diffstat (limited to 'app/backends/qwen.py')
-rw-r--r--app/backends/qwen.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/backends/qwen.py b/app/backends/qwen.py
index b2a1df4..4f3afd9 100644
--- a/app/backends/qwen.py
+++ b/app/backends/qwen.py
@@ -457,6 +457,33 @@ def uninstall(*, emit=None, cancel=None) -> int:
return rc
+def update(*, emit=None, cancel=None) -> int:
+ """Update the qwen-tts backend: pip install -U qwen-tts in its venv.
+
+ A managed server that is running is stopped first (best-effort): it
+ imports ``qwen_tts`` from the very venv being upgraded, so an in-place
+ upgrade under a live process would leave it serving stale code.
+ CANCEL is a ``threading.Event`` honored between phases only (stop
+ server / pip) — a started phase always completes, so pip is never
+ killed mid-run. pip itself is the freshness check: it resolves the
+ latest version, upgrades when there is one, and reports "Requirement
+ already satisfied" otherwise. Returns the exit code (130 when
+ cancelled before a remaining phase).
+ """
+ if servers.pid_for("qwen") is not None:
+ servers.stop("qwen")
+ if common.cancel_requested(cancel):
+ return 130
+ rc = common.pip_install([QWEN_PIP_PKG], emit=emit, cancel=cancel,
+ env_dir=QWEN_ENV, upgrade=True)
+ if rc != 0:
+ print(f"[WARNING] pip install -U failed (exit {rc}); update "
+ f"{QWEN_PIP_PKG} manually")
+ else:
+ print(f"[OK] {QWEN_PIP_PKG} is up to date (or just upgraded).")
+ return rc
+
+
def models_screen(stdscr) -> int:
"""Per-model (un)install screen: the hub's Configure-qwen-tts leaf.