diff --git a/modules/civitai/metadata_civitai.py b/modules/civitai/metadata_civitai.py
index 0cb01ca51..626e22967 100644
--- a/modules/civitai/metadata_civitai.py
+++ b/modules/civitai/metadata_civitai.py
@@ -216,7 +216,7 @@ def civit_search_metadata(title: str | None = None, raw: bool = False):
scanned += 1
candidates.append(item)
log.debug(f'CivitAI search metadata: type={title if isinstance(title, str) else "all"} workers={max_workers} skip={len(re_skip)} items={len(candidates)}')
- import concurrent
+ import concurrent.futures
with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
future_items = {}
for candidate in candidates:
diff --git a/modules/lora/lora_load.py b/modules/lora/lora_load.py
index d2be416cb..fc2cca30c 100644
--- a/modules/lora/lora_load.py
+++ b/modules/lora/lora_load.py
@@ -1,6 +1,6 @@
import os
import time
-import concurrent
+import concurrent.futures
from modules import shared, errors, sd_models, sd_models_compile, files_cache
from modules.logger import log
from modules.lora import network, lora_overrides, lora_convert, lora_diffusers
diff --git a/modules/sdnq/file_loader.py b/modules/sdnq/file_loader.py
index 4390745b7..dc9317130 100644
--- a/modules/sdnq/file_loader.py
+++ b/modules/sdnq/file_loader.py
@@ -3,7 +3,7 @@ import concurrent.futures
import torch
-def map_keys(key: str, key_mapping: dict) -> str:
+def map_keys(key: str, key_mapping: dict | None) -> str:
new_key = key
if key_mapping:
for pattern, replacement in key_mapping.items():
@@ -13,7 +13,7 @@ def map_keys(key: str, key_mapping: dict) -> str:
return new_key
-def load_safetensors(files: list[str], state_dict: dict | None = None, key_mapping: dict | None = None, device: torch.device = "cpu") -> dict:
+def load_safetensors(files: list[str], state_dict: dict | None = None, key_mapping: dict | None = None, device: torch.device = "cpu") -> None:
from safetensors.torch import safe_open
if state_dict is None:
state_dict = {}
@@ -23,7 +23,7 @@ def load_safetensors(files: list[str], state_dict: dict | None = None, key_mappi
state_dict[map_keys(key, key_mapping)] = f.get_tensor(key)
-def load_threaded(files: list[str], state_dict: dict | None = None, key_mapping: dict | None = None, device: torch.device = "cpu") -> dict:
+def load_threaded(files: list[str], state_dict: dict | None = None, key_mapping: dict | None = None, device: torch.device = "cpu") -> None:
future_items = {}
if state_dict is None:
state_dict = {}
@@ -34,7 +34,7 @@ def load_threaded(files: list[str], state_dict: dict | None = None, key_mapping:
future.result()
-def load_streamer(files: list[str], state_dict: dict | None = None, key_mapping: dict | None = None, device: torch.device = "cpu") -> dict:
+def load_streamer(files: list[str], state_dict: dict | None = None, key_mapping: dict | None = None, device: torch.device = "cpu") -> None:
# requires pip install runai_model_streamer
from runai_model_streamer import SafetensorsStreamer
if state_dict is None:
diff --git a/modules/styles.py b/modules/styles.py
index 28c8246bb..d263598dd 100644
--- a/modules/styles.py
+++ b/modules/styles.py
@@ -336,7 +336,7 @@ class StyleDatabase:
self.styles.clear()
def list_folder(folder):
- import concurrent
+ import concurrent.futures
future_items = {}
style_files = list(files_cache.list_files(folder, ext_filter=['.json'], recursive=files_cache.not_hidden))
with concurrent.futures.ThreadPoolExecutor(max_workers=shared.max_workers) as executor:
diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py
index e599a99cd..6136c915a 100644
--- a/modules/ui_extra_networks.py
+++ b/modules/ui_extra_networks.py
@@ -764,7 +764,7 @@ def create_ui(container, button_parent: gr.Button, tabname: str, skip_indexing =
global refresh_time # pylint: disable=global-statement
refresh_time = time.time()
if not skip_indexing:
- import concurrent
+ import concurrent.futures
with concurrent.futures.ThreadPoolExecutor(max_workers=shared.max_workers) as executor:
for page in get_pages():
executor.submit(page.create_items, ui.tabname)
diff --git a/modules/ui_extra_networks_checkpoints.py b/modules/ui_extra_networks_checkpoints.py
index 32209fd54..de5b0c319 100644
--- a/modules/ui_extra_networks_checkpoints.py
+++ b/modules/ui_extra_networks_checkpoints.py
@@ -1,7 +1,7 @@
import os
import html
import json
-import concurrent
+import concurrent.futures
from datetime import datetime
from modules import shared, ui_extra_networks, sd_models, modelstats, paths, devices
from modules.logger import log
diff --git a/modules/ui_extra_networks_lora.py b/modules/ui_extra_networks_lora.py
index 0538f96d9..348ff9aac 100644
--- a/modules/ui_extra_networks_lora.py
+++ b/modules/ui_extra_networks_lora.py
@@ -1,6 +1,6 @@
import os
import json
-import concurrent
+import concurrent.futures
from modules import shared, ui_extra_networks, modelstats
from modules.logger import log
from modules.lora import lora_load
diff --git a/modules/ui_javascript.py b/modules/ui_javascript.py
index 392525078..738aed654 100644
--- a/modules/ui_javascript.py
+++ b/modules/ui_javascript.py
@@ -1,10 +1,10 @@
import os
+
import gradio.routes
-import gradio.utils
-from modules import shared, theme
-from modules.paths import script_path, data_path
-import modules.scripts_manager
+
+from modules import extensions, scripts_manager, shared, theme
from modules.logger import log
+from modules.paths import data_path, script_path
def webpath(fn):
@@ -13,8 +13,7 @@ def webpath(fn):
else:
uri = fn
uri = uri.replace('\\', '/')
- uri = f'file={uri}?{os.path.getmtime(fn)}'
- # uri = f'js?file={uri}&{os.path.getmtime(fn)}'
+ uri = f'file={uri}?{int(os.path.getmtime(fn))}'
return uri
@@ -29,7 +28,7 @@ def html_head():
else:
head += f'\n'
added = []
- for script in modules.scripts_manager.list_scripts("javascript", ".js"):
+ for script in scripts_manager.list_scripts("javascript", ".js"):
if script.filename in main or script.filename in skip:
continue
if '.esm' in script.filename or '.mjs' in script.filename:
@@ -37,7 +36,7 @@ def html_head():
else:
head += f'\n'
added.append(script.path)
- for script in modules.scripts_manager.list_scripts("javascript", ".mjs"):
+ for script in scripts_manager.list_scripts("javascript", ".mjs"):
head += f'\n'
added.append(script.path)
added = [a.replace(script_path, '').replace('\\', '/') for a in added]
@@ -67,27 +66,26 @@ def html_css(css: list[str]):
return f''
head = ''
- if css is not None:
- for cssfile in css:
- f = os.path.join(script_path, 'javascript', cssfile)
- if os.path.isfile(f):
- head += stylesheet(f)
- for cssfile in modules.scripts_manager.list_files_with_name("style.css"):
+ for cssfile in css:
+ f = os.path.join(script_path, 'javascript', cssfile)
+ if os.path.isfile(f):
+ head += stylesheet(f)
+ for cssfile in scripts_manager.list_files_with_name("style.css"):
if not os.path.isfile(cssfile):
continue
head += stylesheet(cssfile)
usercss = os.path.join(data_path, "user.css") if os.path.exists(os.path.join(data_path, "user.css")) else None
- if modules.shared.opts.theme_type == 'Standard':
- themecss = os.path.join(script_path, "javascript", f"{modules.shared.opts.gradio_theme}.css")
+ if shared.opts.theme_type == 'Standard':
+ themecss = os.path.join(script_path, "javascript", f"{shared.opts.gradio_theme}.css")
if os.path.exists(themecss):
head += stylesheet(themecss)
log.debug(f'UI theme: css="{themecss}" base="{css}" user="{usercss}"')
else:
log.error(f'UI theme: css="{themecss}" path="{os.getcwd()}" not found')
- elif modules.shared.opts.theme_type == 'Modern':
- theme_folder = next((e.path for e in modules.extensions.extensions if e.name == 'sdnext-modernui'), None)
- themecss = os.path.join(theme_folder or '', 'themes', f'{modules.shared.opts.gradio_theme}.css')
+ elif shared.opts.theme_type == 'Modern':
+ theme_folder = next((e.path for e in extensions.extensions if e.name == 'sdnext-modernui'), None)
+ themecss = os.path.join(theme_folder or '', 'themes', f'{shared.opts.gradio_theme}.css')
if os.path.exists(themecss):
head += stylesheet(themecss)
log.debug(f'UI theme: css="{themecss}" base="{css}" user="{usercss}"')
@@ -104,9 +102,12 @@ def reload_javascript():
login = html_login()
js = html_head()
- css_base = theme.reload_gradio_theme()
- css_timesheet = "timesheet.css"
- css = html_css([css_base, css_timesheet])
+ css_files: list[str] = []
+ if (css_base := theme.reload_gradio_theme()) is not None:
+ css_files.append(css_base)
+ css_files.append("timesheet.css")
+
+ css = html_css(css_files)
body = html_body()
def template_response(*args, **kwargs):