fix(installer): read installed git commit from package metadata

check_transformers and check_diffusers compared the target commit against a marker stored in server options, which is only persisted after full webui startup. An upgrade restart fires before that point, so the marker stayed stale and the next launch reinstalled the same pin again. Read the installed commit from the package dist-info direct_url.json instead; the options values remain as informational display.
This commit is contained in:
CalamitousFelicitousness
2026-07-05 14:26:43 +01:00
parent b7322637a4
commit 573f99dc87
+10 -2
View File
@@ -151,6 +151,14 @@ def package_spec(package):
return None
def package_commit(spec):
try:
direct_url = json.loads(spec.read_text('direct_url.json'))
return direct_url.get('vcs_info', {}).get('commit_id', '')
except Exception:
return ''
# check if package is installed
def installed(package, friendly: str | None = None, quiet = False): # pylint: disable=redefined-outer-name
t_start = time.time()
@@ -544,7 +552,7 @@ def check_diffusers():
pkg = package_spec('diffusers')
parts = pkg.version.split('.') if pkg is not None else []
minor = int(parts[1]) if len(parts) > 1 else -1
current = opts.get('diffusers_version', '') if minor > -1 else ''
current = package_commit(pkg) if minor > -1 else ''
if (minor == -1) or ((current != target_commit) and (not args.experimental)):
if minor == -1:
log.info(f'Install: package="diffusers" commit={target_commit}')
@@ -588,7 +596,7 @@ def check_transformers():
pip(f'install --upgrade transformers=={target_transformers}', ignore=False, quiet=True)
else:
# Git commit-pinned version
current = opts.get('transformers_version', '')
current = package_commit(pkg_transformers)
if args.reinstall or (pkg_transformers is None) or (pkg_transformers.version.startswith('4')) or (current != target_commit):
if pkg_transformers is None:
log.info(f'Install: package="transformers" commit={target_commit}')