From cdf972c8c44159f6c25021110e8423c08c4a9a42 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 8 Jan 2024 10:51:39 -0500 Subject: [PATCH] fix styles --- extensions-builtin/Lora/scripts/lora_script.py | 3 +-- extensions-builtin/sd-extension-system-info | 2 +- extensions-builtin/sd-webui-controlnet | 2 +- installer.py | 2 +- javascript/sdnext.css | 6 +++--- modules/loader.py | 3 +++ modules/ui_extensions.py | 5 ++--- modules/ui_interrogate.py | 14 ++++++++------ 8 files changed, 20 insertions(+), 17 deletions(-) diff --git a/extensions-builtin/Lora/scripts/lora_script.py b/extensions-builtin/Lora/scripts/lora_script.py index 37bf59fe5..8130d2b5f 100644 --- a/extensions-builtin/Lora/scripts/lora_script.py +++ b/extensions-builtin/Lora/scripts/lora_script.py @@ -1,5 +1,4 @@ import re -from fastapi import FastAPI import networks import lora # noqa:F401 # pylint: disable=unused-import from network import NetworkOnDisk @@ -26,7 +25,7 @@ def create_lora_json(obj: NetworkOnDisk): } -def api_networks(_, app: FastAPI): +def api_networks(_, app): @app.get("/sdapi/v1/loras") async def get_loras(): return [create_lora_json(obj) for obj in networks.available_networks.values()] diff --git a/extensions-builtin/sd-extension-system-info b/extensions-builtin/sd-extension-system-info index f93480869..f50598829 160000 --- a/extensions-builtin/sd-extension-system-info +++ b/extensions-builtin/sd-extension-system-info @@ -1 +1 @@ -Subproject commit f934808698523465e7abb2d1fb0d290065def776 +Subproject commit f505988294abcd529cba9ce48851938b7a9b6690 diff --git a/extensions-builtin/sd-webui-controlnet b/extensions-builtin/sd-webui-controlnet index a5b3fa931..bb9483d46 160000 --- a/extensions-builtin/sd-webui-controlnet +++ b/extensions-builtin/sd-webui-controlnet @@ -1 +1 @@ -Subproject commit a5b3fa931fe8d3f18ce372a7bb1a692905d3affc +Subproject commit bb9483d46f5a932fd35e8b4d04a3fdcc02dd9ff1 diff --git a/installer.py b/installer.py index d74b65568..29159a305 100644 --- a/installer.py +++ b/installer.py @@ -750,7 +750,7 @@ def set_environment(): os.environ.setdefault('KINETO_LOG_LEVEL', '3') os.environ.setdefault('DO_NOT_TRACK', '1') os.environ.setdefault('HF_HUB_CACHE', opts.get('hfcache_dir', os.path.join(os.path.expanduser('~'), '.cache', 'huggingface', 'hub'))) - log.debug(f'Cache folder: {os.environ.get("HF_HUB_CACHE")}') + log.debug(f'HF cache folder: {os.environ.get("HF_HUB_CACHE")}') if sys.platform == 'darwin': os.environ.setdefault('PYTORCH_ENABLE_MPS_FALLBACK', '1') diff --git a/javascript/sdnext.css b/javascript/sdnext.css index fd93c6729..f710f742a 100644 --- a/javascript/sdnext.css +++ b/javascript/sdnext.css @@ -1,4 +1,4 @@ -@font-face { font-family: 'Roboto'; font-display: swap; font-style: normal; font-weight: 100; src: local('Roboto'), url('roboto.ttf') } +@font-face { font-family: 'NotoSans'; font-display: swap; font-style: normal; font-weight: 100; src: local('NotoSans'), url('notosans-nerdfont-regular.ttf') } :root { --left-column: 500px; } a { font-weight: bold; cursor: pointer; } h2 { margin-top: 1em !important; font-size: var(--text-xxl) !important; } @@ -27,7 +27,7 @@ button { font-size: var(--text-lg) !important; } .gradio-button.secondary-down { background: var(--button-secondary-background-fill); color: var(--button-secondary-text-color); } .gradio-button.secondary-down, .gradio-button.secondary-down:hover { box-shadow: 1px 1px 1px rgba(0,0,0,0.25) inset, 0px 0px 3px rgba(0,0,0,0.15) inset; } .gradio-button.secondary-down:hover { background: var(--button-secondary-background-fill-hover); color: var(--button-secondary-text-color-hover); } -.gradio-button.tool { max-width: min-content; min-width: min-content !important; align-self: end; font-size: var(--text-xxl); color: var(--body-text-color) !important; margin-top: auto; margin-bottom: var(--spacing-md); align-self: center; } +.gradio-button.tool { max-width: min-content; min-width: min-content !important; align-self: end; font-size: 20px !important; color: var(--body-text-color) !important; margin-top: auto; margin-bottom: var(--spacing-md); align-self: center; } .gradio-checkbox { margin: 0.75em 1.5em 0 0; align-self: center; } .gradio-column { min-width: min(160px, 100%) !important; } .gradio-container { max-width: unset !important; padding: var(--block-label-padding) !important; } @@ -194,7 +194,7 @@ table.settings-value-table td { padding: 0.4em; border: 1px solid #ccc; max-widt .extra-networks .description { flex: 3; } .extra-networks .tab-nav>button { margin-right: 0; height: 24px; padding: 2px 4px 2px 4px; } .extra-networks .buttons { position: absolute; right: 0; margin: -4px; background: var(--background-color); } -.extra-networks .buttons>button { margin-left: -0.2em; height: 1.4em; color: var(--primary-300) !important; } +.extra-networks .buttons>button { margin-left: -0.2em; height: 1.4em; color: var(--primary-300) !important; font-size: 20px !important; } .extra-networks .custom-button { width: 120px; width: 100%; background: none; justify-content: left; text-align: left; padding: 3px 3px 3px 12px; text-indent: -6px; box-shadow: none; line-break: auto; } .extra-networks .custom-button:hover { background: var(--button-primary-background-fill) } .extra-networks-tab { padding: 0 !important; } diff --git a/modules/loader.py b/modules/loader.py index 31cadcd56..a3fdb04ea 100644 --- a/modules/loader.py +++ b/modules/loader.py @@ -41,6 +41,9 @@ import gradio # pylint: disable=W0611,C0411 timer.startup.record("gradio") errors.install([gradio]) +import pydantic # pylint: disable=W0611,C0411 +timer.startup.record("pydantic") + import diffusers # pylint: disable=W0611,C0411 timer.startup.record("diffusers") errors.log.info(f'Load packages: torch={getattr(torch, "__long_version__", torch.__version__)} diffusers={diffusers.__version__} gradio={gradio.__version__}') diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py index 8cf67bc67..10b9acd58 100644 --- a/modules/ui_extensions.py +++ b/modules/ui_extensions.py @@ -1,5 +1,5 @@ +import os import json -import os.path import shutil import errno import html @@ -7,7 +7,6 @@ from datetime import datetime, timedelta import git import gradio as gr from modules import extensions, shared, paths, errors -from modules.call_queue import wrap_gradio_gpu_call extensions_index = "https://vladmandic.github.io/sd-data/pages/extensions.json" @@ -438,7 +437,7 @@ def create_ui(): info = gr.HTML('') extensions_table = gr.HTML(create_html(search_text.value, sort_column.value)) check.click( - fn=wrap_gradio_gpu_call(check_updates, extra_outputs=[gr.update()]), + fn=modules.ui.wrap_gradio_call(check_updates, extra_outputs=[gr.update()]), _js="extensions_check", inputs=[info, extensions_disabled_list, search_text, sort_column], outputs=[extensions_table, info], diff --git a/modules/ui_interrogate.py b/modules/ui_interrogate.py index 98fbe9a2f..f6972d22b 100644 --- a/modules/ui_interrogate.py +++ b/modules/ui_interrogate.py @@ -2,15 +2,12 @@ import os import base64 from io import BytesIO import gradio as gr -import open_clip import torch from PIL import Image from pydantic import BaseModel, Field # pylint: disable=no-name-in-module -from fastapi import FastAPI from fastapi.exceptions import HTTPException -from clip_interrogator import Config, Interrogator import modules.generation_parameters_copypaste as parameters_copypaste -from modules import devices, lowvram, shared, paths +from modules import devices, lowvram, shared, paths, ui_common ci = None @@ -33,6 +30,7 @@ class BatchWriter: def load(clip_model_name): + from clip_interrogator import Config, Interrogator global ci # pylint: disable=global-statement if ci is None: config = Config(device=devices.get_optimal_device(), cache_path=os.path.join(paths.models_path, 'Interrogator'), clip_model_name=clip_model_name, quiet=True) @@ -109,6 +107,7 @@ def image_to_prompt(image, mode, clip_model_name): def get_models(): + import open_clip return ['/'.join(x) for x in open_clip.list_pretrained()] @@ -213,7 +212,9 @@ def create_ui(): batch_btn = gr.Button("Interrogate", variant='primary') with gr.Column(): with gr.Row(): - clip_model = gr.Dropdown(get_models(), value='ViT-L-14/openai', label='CLIP Model') + # clip_model = gr.Dropdown(get_models(), value='ViT-L-14/openai', label='CLIP Model') + clip_model = gr.Dropdown([], value='ViT-L-14/openai', label='CLIP Model') + ui_common.create_refresh_button(clip_model, get_models, lambda: {"choices": get_models()}, 'refresh_interrogate_models') with gr.Row(): mode = gr.Radio(['best', 'fast', 'classic', 'caption', 'negative'], label='Mode', value='best') interrogate_btn.click(image_to_prompt, inputs=[image, mode, clip_model], outputs=prompt) @@ -232,7 +233,7 @@ def decode_base64_to_image(encoding): raise HTTPException(status_code=500, detail="Invalid encoded image") from e -def mount_interrogator_api(_: gr.Blocks, app: FastAPI): # TODO redesign interrogator api +def mount_interrogator_api(_: gr.Blocks, app): # TODO redesign interrogator api class InterrogatorAnalyzeRequest(BaseModel): image: str = Field(default="", title="Image", description="Image to work on, must be a Base64 string containing the image's data.") @@ -243,6 +244,7 @@ def mount_interrogator_api(_: gr.Blocks, app: FastAPI): # TODO redesign interrog @app.get("/interrogator/models") async def api_get_models(): + import open_clip return ["/".join(x) for x in open_clip.list_pretrained()] @app.post("/interrogator/prompt")