Spaces:
Runtime error
Runtime error
import os | |
import gradio as gr | |
from modules import errors, shared | |
from modules.paths_internal import script_path | |
# https://huggingface.co/datasets/freddyaboulton/gradio-theme-subdomains/resolve/main/subdomains.json | |
gradio_hf_hub_themes = [ | |
"gradio/base", | |
"gradio/glass", | |
"gradio/monochrome", | |
"gradio/seafoam", | |
"gradio/soft", | |
"gradio/dracula_test", | |
"abidlabs/dracula_test", | |
"abidlabs/Lime", | |
"abidlabs/pakistan", | |
"Ama434/neutral-barlow", | |
"dawood/microsoft_windows", | |
"finlaymacklon/smooth_slate", | |
"Franklisi/darkmode", | |
"freddyaboulton/dracula_revamped", | |
"freddyaboulton/test-blue", | |
"gstaff/xkcd", | |
"Insuz/Mocha", | |
"Insuz/SimpleIndigo", | |
"JohnSmith9982/small_and_pretty", | |
"nota-ai/theme", | |
"nuttea/Softblue", | |
"ParityError/Anime", | |
"reilnuud/polite", | |
"remilia/Ghostly", | |
"rottenlittlecreature/Moon_Goblin", | |
"step-3-profit/Midnight-Deep", | |
"Taithrah/Minimal", | |
"ysharma/huggingface", | |
"ysharma/steampunk", | |
"NoCrypt/miku" | |
] | |
def reload_gradio_theme(theme_name=None): | |
if not theme_name: | |
theme_name = shared.opts.gradio_theme | |
default_theme_args = dict( | |
font=["Source Sans Pro", 'ui-sans-serif', 'system-ui', 'sans-serif'], | |
font_mono=['IBM Plex Mono', 'ui-monospace', 'Consolas', 'monospace'], | |
) | |
if theme_name == "Default": | |
shared.gradio_theme = gr.themes.Default(**default_theme_args) | |
else: | |
try: | |
theme_cache_dir = os.path.join(script_path, 'tmp', 'gradio_themes') | |
theme_cache_path = os.path.join(theme_cache_dir, f'{theme_name.replace("/", "_")}.json') | |
if shared.opts.gradio_themes_cache and os.path.exists(theme_cache_path): | |
shared.gradio_theme = gr.themes.ThemeClass.load(theme_cache_path) | |
else: | |
os.makedirs(theme_cache_dir, exist_ok=True) | |
shared.gradio_theme = gr.themes.ThemeClass.from_hub(theme_name) | |
shared.gradio_theme.dump(theme_cache_path) | |
except Exception as e: | |
errors.display(e, "changing gradio theme") | |
shared.gradio_theme = gr.themes.Default(**default_theme_args) | |
# append additional values gradio_theme | |
shared.gradio_theme.sd_webui_modal_lightbox_toolbar_opacity = shared.opts.sd_webui_modal_lightbox_toolbar_opacity | |
shared.gradio_theme.sd_webui_modal_lightbox_icon_opacity = shared.opts.sd_webui_modal_lightbox_icon_opacity | |
def resolve_var(name: str, gradio_theme=None, history=None): | |
""" | |
Attempt to resolve a theme variable name to its value | |
Parameters: | |
name (str): The name of the theme variable | |
ie "background_fill_primary", "background_fill_primary_dark" | |
spaces and asterisk (*) prefix is removed from name before lookup | |
gradio_theme (gradio.themes.ThemeClass): The theme object to resolve the variable from | |
blank to use the webui default shared.gradio_theme | |
history (list): A list of previously resolved variables to prevent circular references | |
for regular use leave blank | |
Returns: | |
str: The resolved value | |
Error handling: | |
return either #000000 or #ffffff depending on initial name ending with "_dark" | |
""" | |
try: | |
if history is None: | |
history = [] | |
if gradio_theme is None: | |
gradio_theme = shared.gradio_theme | |
name = name.strip() | |
name = name[1:] if name.startswith("*") else name | |
if name in history: | |
raise ValueError(f'Circular references: name "{name}" in {history}') | |
if value := getattr(gradio_theme, name, None): | |
return resolve_var(value, gradio_theme, history + [name]) | |
else: | |
return name | |
except Exception: | |
name = history[0] if history else name | |
errors.report(f'resolve_color({name})', exc_info=True) | |
return '#000000' if name.endswith("_dark") else '#ffffff' | |