mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 09:14:35 +02:00
Upgrade Lora/TI model listers to use cache
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user