Upgrade Lora/TI model listers to use cache

This commit is contained in:
Midcoastal
2023-08-15 23:06:23 -04:00
parent 7e4aed7948
commit 05850c2344
2 changed files with 17 additions and 17 deletions
+15 -13
View File
@@ -13,6 +13,7 @@ import modules.textual_inversion.dataset
from modules.textual_inversion.learn_schedule import LearnRateScheduler
from modules.textual_inversion.image_embedding import embedding_to_b64, embedding_from_b64, insert_image_data_embed, extract_image_data_embed, caption_image_overlay
from modules.textual_inversion.logging import save_settings_to_file
from modules.modelloader import filter_paths, directory_files, extension_filter, directory_mtime
TextualInversionTemplate = namedtuple("TextualInversionTemplate", ["name", "path"])
textual_inversion_templates = {}
@@ -85,15 +86,13 @@ class DirWithTextualInversionEmbeddings:
if not os.path.isdir(self.path):
return False
mt = os.path.getmtime(self.path)
if self.mtime is None or mt > self.mtime:
return True
return directory_mtime(self.path) != self.mtime
def update(self):
if not os.path.isdir(self.path):
return
self.mtime = os.path.getmtime(self.path)
self.mtime = directory_mtime(self.path)
class EmbeddingDatabase:
@@ -216,16 +215,19 @@ class EmbeddingDatabase:
def load_from_dir(self, embdir):
if not os.path.isdir(embdir.path):
return
for root, _dirs, fns in os.walk(embdir.path, followlinks=True):
for fn in fns:
try:
fullfn = os.path.join(root, fn)
if os.stat(fullfn).st_size == 0:
continue
self.load_from_file(fullfn, fn)
except Exception as e:
errors.display(e, f'embedding load {fn}')
is_ext = extension_filter(['.PNG', '.WEBP', '.JXL', '.AVIF', '.BIN', '.PT', '.SAFETENSORS'])
is_not_preview = lambda fp: not next(iter(os.path.splitext(fp))).upper().endswith('.PREVIEW')
for file_path in filter_paths(directory_files(embdir.path), filter=lambda fp: is_ext(fp) and is_not_preview(fp)):
try:
if os.stat(file_path).st_size == 0:
continue
fn = os.path.basename(file_path)
self.load_from_file(file_path, fn)
except Exception as e:
errors.display(e, f'embedding load {fn}')
continue
def load_textual_inversion_embeddings(self, force_reload=False):
if not force_reload: