diff options
author | Leon Feng <523684+leon0707@users.noreply.github.com> | 2023-07-18 08:24:14 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-18 08:24:14 +0000 |
commit | a3730bd9becd2f1f5d209885b694b0dec178d110 (patch) | |
tree | 8ac9948d89606f7519df786f07f6ddb93c3d2720 /modules/extensions.py | |
parent | d6668347c8b85b11b696ac56777cc396e34ee1f9 (diff) | |
parent | 871b8687a82bb2ca907d8a49c87aed7635b8fc33 (diff) | |
download | stable-diffusion-webui-gfx803-a3730bd9becd2f1f5d209885b694b0dec178d110.tar.gz stable-diffusion-webui-gfx803-a3730bd9becd2f1f5d209885b694b0dec178d110.tar.bz2 stable-diffusion-webui-gfx803-a3730bd9becd2f1f5d209885b694b0dec178d110.zip |
Merge branch 'dev' into fix-11805
Diffstat (limited to 'modules/extensions.py')
-rw-r--r-- | modules/extensions.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/modules/extensions.py b/modules/extensions.py index abc6e2b1..c561159a 100644 --- a/modules/extensions.py +++ b/modules/extensions.py @@ -1,7 +1,7 @@ import os
import threading
-from modules import shared, errors
+from modules import shared, errors, cache
from modules.gitpython_hack import Repo
from modules.paths_internal import extensions_dir, extensions_builtin_dir, script_path # noqa: F401
@@ -21,6 +21,7 @@ def active(): class Extension:
lock = threading.Lock()
+ cached_fields = ['remote', 'commit_date', 'branch', 'commit_hash', 'version']
def __init__(self, name, path, enabled=True, is_builtin=False):
self.name = name
@@ -36,15 +37,29 @@ class Extension: self.remote = None
self.have_info_from_repo = False
+ def to_dict(self):
+ return {x: getattr(self, x) for x in self.cached_fields}
+
+ def from_dict(self, d):
+ for field in self.cached_fields:
+ setattr(self, field, d[field])
+
def read_info_from_repo(self):
if self.is_builtin or self.have_info_from_repo:
return
- with self.lock:
- if self.have_info_from_repo:
- return
+ def read_from_repo():
+ with self.lock:
+ if self.have_info_from_repo:
+ return
+
+ self.do_read_info_from_repo()
+
+ return self.to_dict()
- self.do_read_info_from_repo()
+ d = cache.cached_data_for_file('extensions-git', self.name, os.path.join(self.path, ".git"), read_from_repo)
+ self.from_dict(d)
+ self.status = 'unknown'
def do_read_info_from_repo(self):
repo = None
@@ -58,7 +73,6 @@ class Extension: self.remote = None
else:
try:
- self.status = 'unknown'
self.remote = next(repo.remote().urls, None)
commit = repo.head.commit
self.commit_date = commit.committed_date
|