From c4d9338d2eabc0bf1b2dd32e159de157c8dbb4d8 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Thu, 3 Jul 2025 09:18:38 -0400 Subject: [PATCH] major refactoring of modules Signed-off-by: Vladimir Mandic --- .pylintrc | 56 +- .ruff.toml | 57 +- CHANGELOG.md | 18 +- TODO.md | 22 +- extensions-builtin/Lora/networks.py | 4 +- extensions-builtin/sdnext-modernui | 2 +- modules/api/generate.py | 14 +- modules/api/process.py | 4 +- modules/api/script.py | 10 +- modules/control/run.py | 6 +- modules/extensions.py | 4 +- modules/face/__init__.py | 4 +- modules/flash_attn_triton_amd/utils.py | 20 +- modules/gr_hijack.py | 26 +- modules/hidiffusion/utils.py | 5 +- modules/img2img.py | 13 +- modules/ldsr/sd_hijack_autoencoder.py | 2 +- modules/model_quant.py | 2 +- modules/model_te.py | 4 +- modules/postprocessing.py | 8 +- modules/processing.py | 24 +- modules/processing_class.py | 4 +- modules/prompt_parser_xhinker.py | 3 +- modules/scripts.py | 732 +----------------- modules/scripts_auto_postprocessing.py | 10 +- modules/scripts_manager.py | 730 +++++++++++++++++ modules/scripts_postprocessing.py | 4 +- modules/sd_models.py | 42 +- modules/sd_unet.py | 4 +- modules/sdnq/__init__.py | 2 +- modules/shared_items.py | 4 +- modules/txt2img.py | 8 +- modules/ui.py | 4 +- modules/ui_common.py | 8 +- modules/ui_control.py | 6 +- modules/ui_control_helpers.py | 6 +- modules/ui_img2img.py | 8 +- modules/ui_javascript.py | 8 +- modules/ui_postprocessing.py | 6 +- modules/ui_txt2img.py | 8 +- package.json | 2 +- {modules => pipelines}/flex2/__init__.py | 0 .../hidream/pipeline_hidream_image_editing.py | 0 .../meissonic}/__init__.py | 0 {modules => pipelines}/meissonic/pipeline.py | 0 .../meissonic/pipeline_img2img.py | 0 .../meissonic/pipeline_inpaint.py | 0 {modules => pipelines}/meissonic/scheduler.py | 0 {modules => pipelines}/meissonic/test.py | 0 .../meissonic/transformer.py | 0 {modules => pipelines}/model_auraflow.py | 0 {modules => pipelines}/model_chroma.py | 6 +- {modules => pipelines}/model_cogview.py | 2 +- {modules => pipelines}/model_cosmos.py | 0 {modules => pipelines}/model_flex.py | 5 +- {modules => pipelines}/model_flux.py | 6 +- {modules => pipelines}/model_flux_nf4.py | 0 {modules => pipelines}/model_hidream.py | 2 +- {modules => pipelines}/model_kolors.py | 0 {modules => pipelines}/model_lumina.py | 0 {modules => pipelines}/model_meissonic.py | 10 +- {modules => pipelines}/model_omnigen.py | 2 +- {modules => pipelines}/model_omnigen2.py | 2 +- {modules => pipelines}/model_pixart.py | 0 {modules => pipelines}/model_sana.py | 0 {modules => pipelines}/model_sd3.py | 0 {modules => pipelines}/model_stablecascade.py | 0 {modules => pipelines}/omnigen2/__init__.py | 0 .../omnigen2/image_processor.py | 0 .../omnigen2/models/attention_processor.py | 0 .../omnigen2/models/embeddings.py | 0 .../omnigen2/models/transformers/__init__.py | 0 .../models/transformers/block_lumina2.py | 0 .../omnigen2/models/transformers/repo.py | 0 .../transformers/transformer_omnigen2.py | 0 .../omnigen2/pipeline_omnigen2.py | 0 {modules => pipelines}/segmoe/segmoe_model.py | 0 scripts/allegrovideo.py | 4 +- scripts/animatediff.py | 8 +- scripts/apg.py | 5 +- scripts/automatic_color_inpaint.py | 4 +- scripts/blipdiffusion.py | 4 +- scripts/cogvideo.py | 4 +- {modules => scripts}/consistory/__init__.py | 0 .../consistory/attention_processor.py | 0 .../consistory/consistory_pipeline.py | 0 .../consistory/consistory_run.py | 0 .../consistory/consistory_unet_sdxl.py | 0 .../consistory/consistory_utils.py | 0 .../consistory/utils/general_utils.py | 0 .../consistory/utils/ptp_utils.py | 0 scripts/consistory_ext.py | 10 +- {modules => scripts}/ctrlx/__init__.py | 0 {modules => scripts}/ctrlx/features.py | 0 {modules => scripts}/ctrlx/media.py | 0 {modules => scripts}/ctrlx/sdxl.py | 0 {modules => scripts}/ctrlx/utils.py | 0 scripts/{ctrlx.py => ctrlx_ext.py} | 10 +- scripts/custom_code.py | 14 +- scripts/demofusion.py | 4 +- scripts/differential_diffusion.py | 4 +- scripts/example.py | 4 +- scripts/flux_enhance.py | 4 +- scripts/flux_tools.py | 7 +- {modules => scripts}/freescale/__init__.py | 0 .../freescale/free_lunch_utils.py | 0 .../freescale/freescale_pipeline.py | 0 .../freescale/freescale_pipeline_img2img.py | 0 .../freescale/scale_attention.py | 0 scripts/{freescale.py => freescale_ext.py} | 6 +- scripts/hdr.py | 7 +- scripts/hunyuanvideo.py | 4 +- scripts/image2video.py | 10 +- {modules => scripts}/infiniteyou/__init__.py | 0 .../infiniteyou/pipeline_flux_infusenet.py | 0 .../infiniteyou/pipeline_infu_flux.py | 0 {modules => scripts}/infiniteyou/resampler.py | 0 scripts/infiniteyou_ext.py | 6 +- scripts/init_latents.py | 6 +- {modules => scripts}/instantir/__init__.py | 0 {modules => scripts}/instantir/aggregator.py | 0 .../instantir/ip_adapter}/__init__.py | 0 .../ip_adapter/attention_processor.py | 0 .../instantir/ip_adapter/ip_adapter.py | 0 .../instantir/ip_adapter/resampler.py | 0 .../instantir/ip_adapter/utils.py | 0 .../instantir/lcm_single_step_scheduler.py | 0 .../instantir/sdxl_instantir.py | 0 scripts/{instantir.py => instantir_ext.py} | 6 +- scripts/ipadapter.py | 6 +- scripts/ipinstruct.py | 4 +- scripts/k_diff.py | 5 +- scripts/kohya_hires_fix.py | 4 +- {modules => scripts}/layerdiffuse/__init__.py | 4 +- .../layerdiffuse/layerdiffuse_loader.py | 2 +- .../layerdiffuse/layerdiffuse_model.py | 0 .../{layerdiffuse.py => layerdiffuse_ext.py} | 6 +- scripts/ledits.py | 4 +- scripts/legacy_allegrovideo.py | 4 +- scripts/loopback.py | 5 +- scripts/ltxvideo.py | 4 +- scripts/lut.py | 6 +- scripts/mixture_of_diffusers.py | 10 +- scripts/mixture_tiling.py | 12 +- scripts/mochivideo.py | 4 +- {modules => scripts}/mod/__init__.py | 0 scripts/mulan.py | 10 +- scripts/outpainting_mk_2.py | 5 +- {modules => scripts}/pixelsmith/__init__.py | 0 .../pixelsmith/autoencoder_kl.py | 0 .../pixelsmith/pixelsmith_pipeline.py | 0 {modules => scripts}/pixelsmith/vae.py | 0 scripts/{pixelsmith.py => pixelsmith_ext.py} | 6 +- scripts/poor_mans_outpainting.py | 5 +- scripts/prompt_enhance.py | 7 +- scripts/prompt_matrix.py | 7 +- scripts/prompts_from_file.py | 5 +- {modules => scripts}/pulid/__init__.py | 0 .../pulid/attention_processor.py | 0 .../pulid/encoders_transformer.py | 0 .../pulid/eva_clip/__init__.py | 0 .../eva_clip/bpe_simple_vocab_16e6.txt.gz | Bin .../pulid/eva_clip/constants.py | 0 .../pulid/eva_clip/eva_vit_model.py | 0 .../pulid/eva_clip/factory.py | 0 .../pulid/eva_clip/hf_configs.py | 0 .../pulid/eva_clip/hf_model.py | 0 {modules => scripts}/pulid/eva_clip/loss.py | 0 {modules => scripts}/pulid/eva_clip/model.py | 0 .../model_configs/EVA01-CLIP-B-16.json | 0 .../model_configs/EVA01-CLIP-g-14-plus.json | 0 .../model_configs/EVA01-CLIP-g-14.json | 0 .../model_configs/EVA02-CLIP-B-16.json | 0 .../model_configs/EVA02-CLIP-L-14-336.json | 0 .../model_configs/EVA02-CLIP-L-14.json | 0 .../EVA02-CLIP-bigE-14-plus.json | 0 .../model_configs/EVA02-CLIP-bigE-14.json | 0 .../pulid/eva_clip/modified_resnet.py | 0 {modules => scripts}/pulid/eva_clip/openai.py | 0 .../pulid/eva_clip/pretrained.py | 0 {modules => scripts}/pulid/eva_clip/rope.py | 0 .../pulid/eva_clip/timm_model.py | 0 .../pulid/eva_clip/tokenizer.py | 0 .../pulid/eva_clip/transform.py | 0 .../pulid/eva_clip/transformer.py | 0 {modules => scripts}/pulid/eva_clip/utils.py | 0 {modules => scripts}/pulid/pulid_sampling.py | 0 {modules => scripts}/pulid/pulid_sdxl.py | 2 +- {modules => scripts}/pulid/pulid_utils.py | 0 scripts/pulid_ext.py | 6 +- scripts/regional_prompting.py | 10 +- scripts/resadapter.py | 4 +- scripts/sd_upscale.py | 5 +- scripts/skip_layer_guidance.py | 4 +- scripts/softfill.py | 4 +- scripts/stablevideodiffusion.py | 6 +- .../style_aligned/inversion.py | 0 .../style_aligned/sa_handler.py | 0 ...{style_aligned.py => style_aligned_ext.py} | 11 +- scripts/t_gate.py | 4 +- scripts/text2video.py | 10 +- scripts/tiling.py | 6 +- {modules => scripts}/xadapter/adapter.py | 0 .../xadapter/pipeline_sd_xl_adapter.py | 0 .../pipeline_sd_xl_adapter_controlnet.py | 0 ...peline_sd_xl_adapter_controlnet_img2img.py | 0 {modules => scripts}/xadapter/unet_adapter.py | 0 {modules => scripts}/xadapter/utils.py | 0 .../xadapter/xadapter_hijacks.py | 0 scripts/{x_adapter.py => xadapter_ext.py} | 12 +- scripts/xyz_grid.py | 4 +- scripts/xyz_grid_classes.py | 2 +- scripts/xyz_grid_on.py | 8 +- webui.py | 14 +- 214 files changed, 1154 insertions(+), 1153 deletions(-) create mode 100644 modules/scripts_manager.py rename {modules => pipelines}/flex2/__init__.py (100%) rename {modules => pipelines}/hidream/pipeline_hidream_image_editing.py (100%) rename {modules/instantir/ip_adapter => pipelines/meissonic}/__init__.py (100%) rename {modules => pipelines}/meissonic/pipeline.py (100%) rename {modules => pipelines}/meissonic/pipeline_img2img.py (100%) rename {modules => pipelines}/meissonic/pipeline_inpaint.py (100%) rename {modules => pipelines}/meissonic/scheduler.py (100%) rename {modules => pipelines}/meissonic/test.py (100%) rename {modules => pipelines}/meissonic/transformer.py (100%) rename {modules => pipelines}/model_auraflow.py (100%) rename {modules => pipelines}/model_chroma.py (98%) rename {modules => pipelines}/model_cogview.py (96%) rename {modules => pipelines}/model_cosmos.py (100%) rename {modules => pipelines}/model_flex.py (94%) rename {modules => pipelines}/model_flux.py (99%) rename {modules => pipelines}/model_flux_nf4.py (100%) rename {modules => pipelines}/model_hidream.py (98%) rename {modules => pipelines}/model_kolors.py (100%) rename {modules => pipelines}/model_lumina.py (100%) rename {modules => pipelines}/model_meissonic.py (80%) rename {modules => pipelines}/model_omnigen.py (93%) rename {modules => pipelines}/model_omnigen2.py (93%) rename {modules => pipelines}/model_pixart.py (100%) rename {modules => pipelines}/model_sana.py (100%) rename {modules => pipelines}/model_sd3.py (100%) rename {modules => pipelines}/model_stablecascade.py (100%) rename {modules => pipelines}/omnigen2/__init__.py (100%) rename {modules => pipelines}/omnigen2/image_processor.py (100%) rename {modules => pipelines}/omnigen2/models/attention_processor.py (100%) rename {modules => pipelines}/omnigen2/models/embeddings.py (100%) rename {modules => pipelines}/omnigen2/models/transformers/__init__.py (100%) rename {modules => pipelines}/omnigen2/models/transformers/block_lumina2.py (100%) rename {modules => pipelines}/omnigen2/models/transformers/repo.py (100%) rename {modules => pipelines}/omnigen2/models/transformers/transformer_omnigen2.py (100%) rename {modules => pipelines}/omnigen2/pipeline_omnigen2.py (100%) rename {modules => pipelines}/segmoe/segmoe_model.py (100%) rename {modules => scripts}/consistory/__init__.py (100%) rename {modules => scripts}/consistory/attention_processor.py (100%) rename {modules => scripts}/consistory/consistory_pipeline.py (100%) rename {modules => scripts}/consistory/consistory_run.py (100%) rename {modules => scripts}/consistory/consistory_unet_sdxl.py (100%) rename {modules => scripts}/consistory/consistory_utils.py (100%) rename {modules => scripts}/consistory/utils/general_utils.py (100%) rename {modules => scripts}/consistory/utils/ptp_utils.py (100%) rename {modules => scripts}/ctrlx/__init__.py (100%) rename {modules => scripts}/ctrlx/features.py (100%) rename {modules => scripts}/ctrlx/media.py (100%) rename {modules => scripts}/ctrlx/sdxl.py (100%) rename {modules => scripts}/ctrlx/utils.py (100%) rename scripts/{ctrlx.py => ctrlx_ext.py} (93%) rename {modules => scripts}/freescale/__init__.py (100%) rename {modules => scripts}/freescale/free_lunch_utils.py (100%) rename {modules => scripts}/freescale/freescale_pipeline.py (100%) rename {modules => scripts}/freescale/freescale_pipeline_img2img.py (100%) rename {modules => scripts}/freescale/scale_attention.py (100%) rename scripts/{freescale.py => freescale_ext.py} (97%) rename {modules => scripts}/infiniteyou/__init__.py (100%) rename {modules => scripts}/infiniteyou/pipeline_flux_infusenet.py (100%) rename {modules => scripts}/infiniteyou/pipeline_infu_flux.py (100%) rename {modules => scripts}/infiniteyou/resampler.py (100%) rename {modules => scripts}/instantir/__init__.py (100%) rename {modules => scripts}/instantir/aggregator.py (100%) rename {modules/meissonic => scripts/instantir/ip_adapter}/__init__.py (100%) rename {modules => scripts}/instantir/ip_adapter/attention_processor.py (100%) rename {modules => scripts}/instantir/ip_adapter/ip_adapter.py (100%) rename {modules => scripts}/instantir/ip_adapter/resampler.py (100%) rename {modules => scripts}/instantir/ip_adapter/utils.py (100%) rename {modules => scripts}/instantir/lcm_single_step_scheduler.py (100%) rename {modules => scripts}/instantir/sdxl_instantir.py (100%) rename scripts/{instantir.py => instantir_ext.py} (96%) rename {modules => scripts}/layerdiffuse/__init__.py (94%) rename {modules => scripts}/layerdiffuse/layerdiffuse_loader.py (99%) rename {modules => scripts}/layerdiffuse/layerdiffuse_model.py (100%) rename scripts/{layerdiffuse.py => layerdiffuse_ext.py} (94%) rename {modules => scripts}/mod/__init__.py (100%) rename {modules => scripts}/pixelsmith/__init__.py (100%) rename {modules => scripts}/pixelsmith/autoencoder_kl.py (100%) rename {modules => scripts}/pixelsmith/pixelsmith_pipeline.py (100%) rename {modules => scripts}/pixelsmith/vae.py (100%) rename scripts/{pixelsmith.py => pixelsmith_ext.py} (95%) rename {modules => scripts}/pulid/__init__.py (100%) rename {modules => scripts}/pulid/attention_processor.py (100%) rename {modules => scripts}/pulid/encoders_transformer.py (100%) rename {modules => scripts}/pulid/eva_clip/__init__.py (100%) rename {modules => scripts}/pulid/eva_clip/bpe_simple_vocab_16e6.txt.gz (100%) rename {modules => scripts}/pulid/eva_clip/constants.py (100%) rename {modules => scripts}/pulid/eva_clip/eva_vit_model.py (100%) rename {modules => scripts}/pulid/eva_clip/factory.py (100%) rename {modules => scripts}/pulid/eva_clip/hf_configs.py (100%) rename {modules => scripts}/pulid/eva_clip/hf_model.py (100%) rename {modules => scripts}/pulid/eva_clip/loss.py (100%) rename {modules => scripts}/pulid/eva_clip/model.py (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA01-CLIP-B-16.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA01-CLIP-g-14-plus.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA01-CLIP-g-14.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA02-CLIP-B-16.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA02-CLIP-L-14-336.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA02-CLIP-L-14.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14-plus.json (100%) rename {modules => scripts}/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14.json (100%) rename {modules => scripts}/pulid/eva_clip/modified_resnet.py (100%) rename {modules => scripts}/pulid/eva_clip/openai.py (100%) rename {modules => scripts}/pulid/eva_clip/pretrained.py (100%) rename {modules => scripts}/pulid/eva_clip/rope.py (100%) rename {modules => scripts}/pulid/eva_clip/timm_model.py (100%) rename {modules => scripts}/pulid/eva_clip/tokenizer.py (100%) rename {modules => scripts}/pulid/eva_clip/transform.py (100%) rename {modules => scripts}/pulid/eva_clip/transformer.py (100%) rename {modules => scripts}/pulid/eva_clip/utils.py (100%) rename {modules => scripts}/pulid/pulid_sampling.py (100%) rename {modules => scripts}/pulid/pulid_sdxl.py (99%) rename {modules => scripts}/pulid/pulid_utils.py (100%) rename {modules => scripts}/style_aligned/inversion.py (100%) rename {modules => scripts}/style_aligned/sa_handler.py (100%) rename scripts/{style_aligned.py => style_aligned_ext.py} (96%) rename {modules => scripts}/xadapter/adapter.py (100%) rename {modules => scripts}/xadapter/pipeline_sd_xl_adapter.py (100%) rename {modules => scripts}/xadapter/pipeline_sd_xl_adapter_controlnet.py (100%) rename {modules => scripts}/xadapter/pipeline_sd_xl_adapter_controlnet_img2img.py (100%) rename {modules => scripts}/xadapter/unet_adapter.py (100%) rename {modules => scripts}/xadapter/utils.py (100%) rename {modules => scripts}/xadapter/xadapter_hijacks.py (100%) rename scripts/{x_adapter.py => xadapter_ext.py} (94%) diff --git a/.pylintrc b/.pylintrc index 5ecbbef48..68b004820 100644 --- a/.pylintrc +++ b/.pylintrc @@ -7,32 +7,27 @@ fail-on= fail-under=10 ignore=CVS ignore-paths=/usr/lib/.*$, + venv, + .git, + .ruff_cache, + .vscode, modules/apg, - modules/consistory, + modules/cfgzero, modules/control/proc, modules/control/units, - modules/ctrlx, modules/dml, - modules/freescale, + modules/flash_attn_triton_amd, modules/ggml, modules/hidiffusion, - modules/hijack, - modules/instantir, + modules/hijack/ddpm_edit.py, + modules/intel, modules/intel/ipex, - modules/intel/openvino, modules/k-diffusion, - modules/flex2, modules/ldsr, - modules/hidream, - modules/meissonic, - modules/mod, - modules/omnigen, - modules/omnigen2, modules/onnx_impl, modules/pag, - modules/pixelsmith, + modules/postprocess/aurasr_arch.py, modules/prompt_parser_xhinker.py, - modules/pulid/eva_clip, modules/ras, modules/rife, modules/schedulers, @@ -40,15 +35,26 @@ ignore-paths=/usr/lib/.*$, modules/teacache, modules/todo, modules/unipc, - modules/xadapter, - modules/cfgzero, - modules/infiniteyou, - modules/flash_attn_triton_amd, - scripts/softfill.py, + pipelines/flex2, + pipelines/hidream, + pipelines/meissonic, + pipelines/omnigen2, + pipelines/segmoe, + scripts/consistory, + scripts/ctrlx, + scripts/demofusion, + scripts/freescale, + scripts/infiniteyou, + scripts/instantir, + scripts/mod, + scripts/pixelsmith, + scripts/differential_diffusion.py, + scripts/pulid, + scripts/xadapter, repositories, extensions-builtin/Lora, - extensions-builtin/sd-webui-agent-scheduler, extensions-builtin/sd-extension-chainner/nodes, + extensions-builtin/sd-webui-agent-scheduler, extensions-builtin/sdnext-modernui/node_modules, ignore-patterns=.*test*.py$, .*_model.py$, @@ -158,8 +164,8 @@ disable=abstract-method, consider-using-generator, consider-using-get, consider-using-in, - consider-using-min-builtin, consider-using-max-builtin, + consider-using-min-builtin, consider-using-sys-exit, cyclic-import, dangerous-default-value, @@ -175,6 +181,7 @@ disable=abstract-method, missing-class-docstring, missing-function-docstring, missing-module-docstring, + no-else-raise, no-else-return, not-callable, pointless-string-statement, @@ -185,16 +192,17 @@ disable=abstract-method, too-many-instance-attributes, too-many-locals, too-many-nested-blocks, - too-many-statements, too-many-positional-arguments, + too-many-statements, unidiomatic-typecheck, + unknown-option-value, unnecessary-dict-index-lookup, unnecessary-dunder-call, - unnecessary-lambda, unnecessary-lambda-assigment, + unnecessary-lambda, + unused-wildcard-import, use-dict-literal, use-symbolic-message-instead, - unknown-option-value, useless-suppression, wrong-import-position, enable=c-extension-no-member diff --git a/.ruff.toml b/.ruff.toml index 023678c33..b21563996 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -3,44 +3,33 @@ exclude = [ ".git", ".ruff_cache", ".vscode", - "modules/apg", - "modules/consistory", + + "modules/cfgzero", + "modules/flash_attn_triton_amd", + "modules/hidiffusion", + "modules/intel/ipex", + "modules/k-diffusion", + "modules/pag", + "modules/schedulers", + "modules/teacache", + "modules/control/proc", "modules/control/units", - "modules/freescale", - "modules/flex2", - "modules/ggml", - "modules/hidiffusion", - "modules/hijack", - "modules/instantir", - "modules/intel/ipex", - "modules/intel/openvino", - "modules/k-diffusion", - "modules/ldsr", - "modules/meissonic", - "modules/mod", - "modules/omnigen", - "modules/omnigen2", - "modules/hidream", - "modules/pag", - "modules/pixelsmith", + "modules/control/units/xs_pipe.py", "modules/postprocess/aurasr_arch.py", - "modules/prompt_parser_xhinker.py", - "modules/pulid/eva_clip", - "modules/ras", - "modules/rife", - "modules/schedulers", - "modules/segmoe", - "modules/taesd", - "modules/teacache", - "modules/todo", - "modules/unipc", - "modules/cfgzero", - "modules/xadapter", - "modules/infiniteyou", - "modules/flash_attn_triton_amd", - "scripts/softfill.py", + + "pipelines/meissonic", + "pipelines/omnigen2", + "pipelines/segmoe", + + "scripts/xadapter", + "scripts/pulid", + "scripts/instantir", + "scripts/freescale", + "scripts/consistory", + "repositories", + "extensions-builtin/Lora", "extensions-builtin/sd-extension-chainner/nodes", "extensions-builtin/sd-webui-agent-scheduler", diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ba4c3462..eb140b412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log for SD.Next -## Update for 2025-07-02 +## Update for 2025-07-03 - **Models** - Add **FLUX.1-Kontext-Dev** inpaint workflow @@ -12,16 +12,20 @@ enable in *settings -> compute settings -> sdp options* *note*: SD.Next will use either SageAttention v1 or v2, depending which one is installed until authors provide pre-build wheels for v2, you need to install it manually or SD.Next will auto-install v1 -- **Core** - - override `gradio` installer - - major refactoring of requirements and dependencies to unblock `numpy>=2.1.0` - - patch `insightface` - - patch `k-diffusion` - - better handle startup import errors - **Fixes** - allow theme type `None` to be set in config - installer dont cache installed state - fix Cosmos-Predict2 retrying TAESD download + - better handle startup import errors +- **Refactoring** + - override `gradio` installer + - major refactoring of requirements and dependencies to unblock `numpy>=2.1.0` + - patch `insightface` + - patch `k-diffusion` + - cleanup `/modules`: move pipeline loaders to `/pipelines` root + - cleanup `/modules`: move code folders used by scripts to `/scripts/\n' added = [] - for script in modules.scripts.list_scripts("javascript", ".js"): + for script in modules.scripts_manager.list_scripts("javascript", ".js"): if script.filename in main or script.filename in skip: continue head += f'\n' added.append(script.path) - for script in modules.scripts.list_scripts("javascript", ".mjs"): + for script in modules.scripts_manager.list_scripts("javascript", ".mjs"): head += f'\n' added.append(script.path) added = [a.replace(script_path, '').replace('\\', '/') for a in added] @@ -59,7 +59,7 @@ def html_css(css: str): head = '' if css is not None: head += stylesheet(os.path.join(script_path, 'javascript', css)) - for cssfile in modules.scripts.list_files_with_name("style.css"): + for cssfile in modules.scripts_manager.list_files_with_name("style.css"): if not os.path.isfile(cssfile): continue head += stylesheet(cssfile) diff --git a/modules/ui_postprocessing.py b/modules/ui_postprocessing.py index 8ed530de7..a84b30276 100644 --- a/modules/ui_postprocessing.py +++ b/modules/ui_postprocessing.py @@ -1,6 +1,6 @@ import json import gradio as gr -from modules import scripts, shared, ui_common, postprocessing, call_queue, generation_parameters_copypaste +from modules import scripts_manager, shared, ui_common, postprocessing, call_queue, generation_parameters_copypaste def submit_info(image): @@ -32,7 +32,7 @@ def create_ui(): with gr.Row(): save_output = gr.Checkbox(label='Save output', value=True, elem_id="extras_save_output") - script_inputs = scripts.scripts_postproc.setup_ui() + script_inputs = scripts_manager.scripts_postproc.setup_ui() with gr.Column(): id_part = 'extras' with gr.Row(elem_id=f"{id_part}_generate_box", elem_classes="generate-box"): @@ -56,7 +56,7 @@ def create_ui(): tab_batch.select(fn=lambda: 1, inputs=[], outputs=[tab_index]) tab_batch_dir.select(fn=lambda: 2, inputs=[], outputs=[tab_index]) extras_image.change(fn=submit_info, inputs=[extras_image], outputs=[html_info_formatted, exif_info, gen_info]) - extras_image.change(fn=scripts.scripts_postproc.image_changed, inputs=[], outputs=[]) + extras_image.change(fn=scripts_manager.scripts_postproc.image_changed, inputs=[], outputs=[]) submit.click( _js="submit_postprocessing", fn=call_queue.wrap_gradio_gpu_call(submit_process, extra_outputs=[None, ''], name='Postprocess'), diff --git a/modules/ui_txt2img.py b/modules/ui_txt2img.py index 63d47920d..c74547e3c 100644 --- a/modules/ui_txt2img.py +++ b/modules/ui_txt2img.py @@ -17,8 +17,8 @@ def calc_resolution_hires(width, height, hr_scale, hr_resize_x, hr_resize_y, hr_ def create_ui(): shared.log.debug('UI initialize: txt2img') import modules.txt2img # pylint: disable=redefined-outer-name - modules.scripts.scripts_current = modules.scripts.scripts_txt2img - modules.scripts.scripts_txt2img.initialize_scripts(is_img2img=False, is_control=False) + modules.scripts_manager.scripts_current = modules.scripts_manager.scripts_txt2img + modules.scripts_manager.scripts_txt2img.initialize_scripts(is_img2img=False, is_control=False) with gr.Blocks(analytics_enabled=False) as _txt2img_interface: txt2img_prompt, txt2img_prompt_styles, txt2img_negative_prompt, txt2img_submit, txt2img_reprocess, txt2img_paste, txt2img_extra_networks_button, txt2img_token_counter, txt2img_token_button, txt2img_negative_token_counter, txt2img_negative_token_button = ui_sections.create_toprow(is_img2img=False, id_part="txt2img") @@ -52,7 +52,7 @@ def create_ui(): state = gr.Textbox(value='', visible=False) with gr.Group(elem_id="txt2img_script_container"): - txt2img_script_inputs = modules.scripts.scripts_txt2img.setup_ui(parent='txt2img', accordion=True) + txt2img_script_inputs = modules.scripts_manager.scripts_txt2img.setup_ui(parent='txt2img', accordion=True) txt2img_gallery, txt2img_generation_info, txt2img_html_info, _txt2img_html_info_formatted, txt2img_html_log = ui_common.create_output_panel("txt2img", preview=True, prompt=txt2img_prompt) ui_common.connect_reuse_seed(seed, reuse_seed, txt2img_generation_info, is_subseed=False) @@ -158,7 +158,7 @@ def create_ui(): # hidden (seed_resize_from_w, "Seed resize from-1"), (seed_resize_from_h, "Seed resize from-2"), - *modules.scripts.scripts_txt2img.infotext_fields + *modules.scripts_manager.scripts_txt2img.infotext_fields ] generation_parameters_copypaste.add_paste_fields("txt2img", None, txt2img_paste_fields, override_settings) txt2img_bindings = generation_parameters_copypaste.ParamBinding(paste_button=txt2img_paste, tabname="txt2img", source_text_component=txt2img_prompt, source_image_component=None) diff --git a/package.json b/package.json index 8e6126230..93b117e9a 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "localize": "node cli/localize.js", "ruff": ". venv/bin/activate && ruff check", "eslint": "eslint javascript/ extensions-builtin/sdnext-modernui/javascript/", - "pylint": ". venv/bin/activate && pylint *.py modules/ extensions-builtin/ | grep -v '^*'", + "pylint": ". venv/bin/activate && pylint *.py modules/ pipelines/ scripts/ extensions-builtin/ | grep -v '^*'", "lint": "npm run eslint && npm run ruff && npm run pylint", "test": "cli/test.sh" }, diff --git a/modules/flex2/__init__.py b/pipelines/flex2/__init__.py similarity index 100% rename from modules/flex2/__init__.py rename to pipelines/flex2/__init__.py diff --git a/modules/hidream/pipeline_hidream_image_editing.py b/pipelines/hidream/pipeline_hidream_image_editing.py similarity index 100% rename from modules/hidream/pipeline_hidream_image_editing.py rename to pipelines/hidream/pipeline_hidream_image_editing.py diff --git a/modules/instantir/ip_adapter/__init__.py b/pipelines/meissonic/__init__.py similarity index 100% rename from modules/instantir/ip_adapter/__init__.py rename to pipelines/meissonic/__init__.py diff --git a/modules/meissonic/pipeline.py b/pipelines/meissonic/pipeline.py similarity index 100% rename from modules/meissonic/pipeline.py rename to pipelines/meissonic/pipeline.py diff --git a/modules/meissonic/pipeline_img2img.py b/pipelines/meissonic/pipeline_img2img.py similarity index 100% rename from modules/meissonic/pipeline_img2img.py rename to pipelines/meissonic/pipeline_img2img.py diff --git a/modules/meissonic/pipeline_inpaint.py b/pipelines/meissonic/pipeline_inpaint.py similarity index 100% rename from modules/meissonic/pipeline_inpaint.py rename to pipelines/meissonic/pipeline_inpaint.py diff --git a/modules/meissonic/scheduler.py b/pipelines/meissonic/scheduler.py similarity index 100% rename from modules/meissonic/scheduler.py rename to pipelines/meissonic/scheduler.py diff --git a/modules/meissonic/test.py b/pipelines/meissonic/test.py similarity index 100% rename from modules/meissonic/test.py rename to pipelines/meissonic/test.py diff --git a/modules/meissonic/transformer.py b/pipelines/meissonic/transformer.py similarity index 100% rename from modules/meissonic/transformer.py rename to pipelines/meissonic/transformer.py diff --git a/modules/model_auraflow.py b/pipelines/model_auraflow.py similarity index 100% rename from modules/model_auraflow.py rename to pipelines/model_auraflow.py diff --git a/modules/model_chroma.py b/pipelines/model_chroma.py similarity index 98% rename from modules/model_chroma.py rename to pipelines/model_chroma.py index 9333ccc30..262b698e5 100644 --- a/modules/model_chroma.py +++ b/pipelines/model_chroma.py @@ -173,7 +173,7 @@ def load_transformer(file_path): # triggered by opts.sd_unet change if transformer is not None: return transformer shared.log.info(f'Load module: type=UNet/Transformer file="{file_path}" offload={shared.opts.diffusers_offload_mode} quant=none dtype={devices.dtype}') - # TODO chroma transformer from-single-file with quant + # TODO model load: chroma transformer from-single-file with quant # shared.log.warning('Load module: type=UNet/Transformer does not support load-time quantization') # transformer = diffusers.ChromaTransformer2DModel.from_single_file(file_path, **diffusers_load_config) if transformer is None: @@ -261,8 +261,8 @@ def load_chroma(checkpoint_info, diffusers_load_config): # triggered by opts.sd_ if vae is not None: kwargs['vae'] = vae - # TODO add ChromaFillPipeline, ChromaControlPipeline, ChromaImg2ImgPipeline etc when available - # TODO Chroma will support inpainting *after* its training has finished: https://huggingface.co/lodestones/Chroma/discussions/28#6826dd2ed86f53ff983add5c + # TODO model load: add ChromaFillPipeline, ChromaControlPipeline, ChromaImg2ImgPipeline etc when available + # Chroma will support inpainting *after* its training has finished: https://huggingface.co/lodestones/Chroma/discussions/28#6826dd2ed86f53ff983add5c cls = diffusers.ChromaPipeline shared.log.debug(f'Load model: type=Chroma cls={cls.__name__} preloaded={list(kwargs)} revision={diffusers_load_config.get("revision", None)}') for c in kwargs: diff --git a/modules/model_cogview.py b/pipelines/model_cogview.py similarity index 96% rename from modules/model_cogview.py rename to pipelines/model_cogview.py index eaba437ed..0f1f4a3f7 100644 --- a/modules/model_cogview.py +++ b/pipelines/model_cogview.py @@ -76,6 +76,6 @@ def load_cogview4(checkpoint_info, diffusers_load_config={}): if shared.opts.diffusers_eval: pipe.text_encoder.eval() pipe.transformer.eval() - pipe.enable_model_cpu_offload() # TODO cogview4: balanced offload does not work for GlmModel + pipe.enable_model_cpu_offload() # TODO model fix: cogview4: balanced offload does not work for GlmModel devices.torch_gc() return pipe diff --git a/modules/model_cosmos.py b/pipelines/model_cosmos.py similarity index 100% rename from modules/model_cosmos.py rename to pipelines/model_cosmos.py diff --git a/modules/model_flex.py b/pipelines/model_flex.py similarity index 94% rename from modules/model_flex.py rename to pipelines/model_flex.py index 1ce5d6145..169d704e6 100644 --- a/modules/model_flex.py +++ b/pipelines/model_flex.py @@ -24,9 +24,6 @@ def load_transformer(repo_id, diffusers_load_config={}): elif fn is not None and 'safetensors' in fn.lower(): shared.log.debug(f'Load model: type=FLEX transformer="{repo_id}" quant="{model_quant.get_quant(repo_id)}" args={load_args}') transformer = diffusers.FluxTransformer2DModel.from_single_file(fn, cache_dir=shared.opts.hfcache_dir, **load_args) - # elif model_quant.check_nunchaku('Model'): - # shared.log.error(f'Load model: type=HiDream transformer="{repo_id}" quant="Nunchaku" unsupported') - # transformer = None else: shared.log.debug(f'Load model: type=FLEX transformer="{repo_id}" quant="{model_quant.get_quant_type(quant_args)}" args={load_args}') transformer = diffusers.FluxTransformer2DModel.from_pretrained( @@ -71,7 +68,7 @@ def load_flex(checkpoint_info, diffusers_load_config={}): load_args, _quant_args = model_quant.get_dit_args(diffusers_load_config, module='Model') shared.log.debug(f'Load model: type=FLEX model="{checkpoint_info.name}" repo="{repo_id}" offload={shared.opts.diffusers_offload_mode} dtype={devices.dtype} args={load_args}') - from modules.flex2 import Flex2Pipeline + from pipelines.flex2 import Flex2Pipeline pipe = Flex2Pipeline.from_pretrained( repo_id, # custom_pipeline=repo_id, diff --git a/modules/model_flux.py b/pipelines/model_flux.py similarity index 99% rename from modules/model_flux.py rename to pipelines/model_flux.py index 6194cfbd1..574904f14 100644 --- a/modules/model_flux.py +++ b/pipelines/model_flux.py @@ -175,7 +175,7 @@ def load_transformer(file_path): # triggered by opts.sd_unet change if _transformer is not None: transformer = _transformer elif 'nf4' in quant: # TODO flux: loader for civitai nf4 models - from modules.model_flux_nf4 import load_flux_nf4 + from pipelines.model_flux_nf4 import load_flux_nf4 _transformer, _text_encoder_2 = load_flux_nf4(file_path, prequantized=True) if _transformer is not None: transformer = _transformer @@ -183,7 +183,7 @@ def load_transformer(file_path): # triggered by opts.sd_unet change quant_args = model_quant.create_bnb_config({}) if quant_args: shared.log.info(f'Load module: type=UNet/Transformer file="{file_path}" offload={shared.opts.diffusers_offload_mode} quant=bnb dtype={devices.dtype}') - from modules.model_flux_nf4 import load_flux_nf4 + from pipelines.model_flux_nf4 import load_flux_nf4 transformer, _text_encoder_2 = load_flux_nf4(file_path, prequantized=False) if transformer is not None: return transformer @@ -275,7 +275,7 @@ def load_flux(checkpoint_info, diffusers_load_config): # triggered by opts.sd_ch # load quantized components if any if prequantized == 'nf4': try: - from modules.model_flux_nf4 import load_flux_nf4 + from pipelines.model_flux_nf4 import load_flux_nf4 _transformer, _text_encoder = load_flux_nf4(checkpoint_info) if _transformer is not None: transformer = _transformer diff --git a/modules/model_flux_nf4.py b/pipelines/model_flux_nf4.py similarity index 100% rename from modules/model_flux_nf4.py rename to pipelines/model_flux_nf4.py diff --git a/modules/model_hidream.py b/pipelines/model_hidream.py similarity index 98% rename from modules/model_hidream.py rename to pipelines/model_hidream.py index ac7b335d1..9acd92e38 100644 --- a/modules/model_hidream.py +++ b/pipelines/model_hidream.py @@ -102,7 +102,7 @@ def load_hidream(checkpoint_info, diffusers_load_config={}): if 'I1' in repo_id: cls = diffusers.HiDreamImagePipeline elif 'E1' in repo_id: - from modules.hidream.pipeline_hidream_image_editing import HiDreamImageEditingPipeline + from pipelines.hidream.pipeline_hidream_image_editing import HiDreamImageEditingPipeline cls = HiDreamImageEditingPipeline diffusers.pipelines.auto_pipeline.AUTO_TEXT2IMAGE_PIPELINES_MAPPING["hidream-e1"] = diffusers.HiDreamImagePipeline diffusers.pipelines.auto_pipeline.AUTO_IMAGE2IMAGE_PIPELINES_MAPPING["hidream-e1"] = HiDreamImageEditingPipeline diff --git a/modules/model_kolors.py b/pipelines/model_kolors.py similarity index 100% rename from modules/model_kolors.py rename to pipelines/model_kolors.py diff --git a/modules/model_lumina.py b/pipelines/model_lumina.py similarity index 100% rename from modules/model_lumina.py rename to pipelines/model_lumina.py diff --git a/modules/model_meissonic.py b/pipelines/model_meissonic.py similarity index 80% rename from modules/model_meissonic.py rename to pipelines/model_meissonic.py index 2be5c3bbe..da7ea1429 100644 --- a/modules/model_meissonic.py +++ b/pipelines/model_meissonic.py @@ -4,11 +4,11 @@ import diffusers def load_meissonic(checkpoint_info, diffusers_load_config={}): from modules import shared, devices, modelloader, sd_models, shared_items - from modules.meissonic.transformer import Transformer2DModel as TransformerMeissonic - from modules.meissonic.scheduler import Scheduler as MeissonicScheduler - from modules.meissonic.pipeline import Pipeline as PipelineMeissonic - from modules.meissonic.pipeline_img2img import Img2ImgPipeline as PipelineMeissonicImg2Img - from modules.meissonic.pipeline_inpaint import InpaintPipeline as PipelineMeissonicInpaint + from pipelines.meissonic.transformer import Transformer2DModel as TransformerMeissonic + from pipelines.meissonic.scheduler import Scheduler as MeissonicScheduler + from pipelines.meissonic.pipeline import Pipeline as PipelineMeissonic + from pipelines.meissonic.pipeline_img2img import Img2ImgPipeline as PipelineMeissonicImg2Img + from pipelines.meissonic.pipeline_inpaint import InpaintPipeline as PipelineMeissonicInpaint shared_items.pipelines['Meissonic'] = PipelineMeissonic modelloader.hf_login() diff --git a/modules/model_omnigen.py b/pipelines/model_omnigen.py similarity index 93% rename from modules/model_omnigen.py rename to pipelines/model_omnigen.py index b2fb95830..ba60eb389 100644 --- a/modules/model_omnigen.py +++ b/pipelines/model_omnigen.py @@ -1,6 +1,6 @@ import os import diffusers -from modules import errors, shared, devices, sd_models, model_quant +from modules import shared, devices, sd_models, model_quant debug = shared.log.trace if os.environ.get('SD_LOAD_DEBUG', None) is not None else lambda *args, **kwargs: None diff --git a/modules/model_omnigen2.py b/pipelines/model_omnigen2.py similarity index 93% rename from modules/model_omnigen2.py rename to pipelines/model_omnigen2.py index 285e46f50..33c354931 100644 --- a/modules/model_omnigen2.py +++ b/pipelines/model_omnigen2.py @@ -7,7 +7,7 @@ debug = shared.log.trace if os.environ.get('SD_LOAD_DEBUG', None) is not None el def load_omnigen2(checkpoint_info, diffusers_load_config={}): # pylint: disable=unused-argument repo_id = sd_models.path_to_repo(checkpoint_info.name) - from modules.omnigen2 import OmniGen2Pipeline, OmniGen2Transformer2DModel, Qwen2_5_VLForConditionalGeneration + from pipelines.omnigen2 import OmniGen2Pipeline, OmniGen2Transformer2DModel, Qwen2_5_VLForConditionalGeneration import diffusers from diffusers import pipelines diffusers.OmniGen2Pipeline = OmniGen2Pipeline # monkey-pathch diff --git a/modules/model_pixart.py b/pipelines/model_pixart.py similarity index 100% rename from modules/model_pixart.py rename to pipelines/model_pixart.py diff --git a/modules/model_sana.py b/pipelines/model_sana.py similarity index 100% rename from modules/model_sana.py rename to pipelines/model_sana.py diff --git a/modules/model_sd3.py b/pipelines/model_sd3.py similarity index 100% rename from modules/model_sd3.py rename to pipelines/model_sd3.py diff --git a/modules/model_stablecascade.py b/pipelines/model_stablecascade.py similarity index 100% rename from modules/model_stablecascade.py rename to pipelines/model_stablecascade.py diff --git a/modules/omnigen2/__init__.py b/pipelines/omnigen2/__init__.py similarity index 100% rename from modules/omnigen2/__init__.py rename to pipelines/omnigen2/__init__.py diff --git a/modules/omnigen2/image_processor.py b/pipelines/omnigen2/image_processor.py similarity index 100% rename from modules/omnigen2/image_processor.py rename to pipelines/omnigen2/image_processor.py diff --git a/modules/omnigen2/models/attention_processor.py b/pipelines/omnigen2/models/attention_processor.py similarity index 100% rename from modules/omnigen2/models/attention_processor.py rename to pipelines/omnigen2/models/attention_processor.py diff --git a/modules/omnigen2/models/embeddings.py b/pipelines/omnigen2/models/embeddings.py similarity index 100% rename from modules/omnigen2/models/embeddings.py rename to pipelines/omnigen2/models/embeddings.py diff --git a/modules/omnigen2/models/transformers/__init__.py b/pipelines/omnigen2/models/transformers/__init__.py similarity index 100% rename from modules/omnigen2/models/transformers/__init__.py rename to pipelines/omnigen2/models/transformers/__init__.py diff --git a/modules/omnigen2/models/transformers/block_lumina2.py b/pipelines/omnigen2/models/transformers/block_lumina2.py similarity index 100% rename from modules/omnigen2/models/transformers/block_lumina2.py rename to pipelines/omnigen2/models/transformers/block_lumina2.py diff --git a/modules/omnigen2/models/transformers/repo.py b/pipelines/omnigen2/models/transformers/repo.py similarity index 100% rename from modules/omnigen2/models/transformers/repo.py rename to pipelines/omnigen2/models/transformers/repo.py diff --git a/modules/omnigen2/models/transformers/transformer_omnigen2.py b/pipelines/omnigen2/models/transformers/transformer_omnigen2.py similarity index 100% rename from modules/omnigen2/models/transformers/transformer_omnigen2.py rename to pipelines/omnigen2/models/transformers/transformer_omnigen2.py diff --git a/modules/omnigen2/pipeline_omnigen2.py b/pipelines/omnigen2/pipeline_omnigen2.py similarity index 100% rename from modules/omnigen2/pipeline_omnigen2.py rename to pipelines/omnigen2/pipeline_omnigen2.py diff --git a/modules/segmoe/segmoe_model.py b/pipelines/segmoe/segmoe_model.py similarity index 100% rename from modules/segmoe/segmoe_model.py rename to pipelines/segmoe/segmoe_model.py diff --git a/scripts/allegrovideo.py b/scripts/allegrovideo.py index 673627ddb..9fe0bc584 100644 --- a/scripts/allegrovideo.py +++ b/scripts/allegrovideo.py @@ -2,7 +2,7 @@ import time import gradio as gr import transformers import diffusers -from modules import scripts, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant, timer, sd_hijack_te +from modules import scripts_manager, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant, timer, sd_hijack_te repo_id = 'rhymes-ai/Allegro' @@ -19,7 +19,7 @@ def hijack_decode(*args, **kwargs): return res -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: Allegro (Legacy)' diff --git a/scripts/animatediff.py b/scripts/animatediff.py index 6fb77a45b..79fa4c740 100644 --- a/scripts/animatediff.py +++ b/scripts/animatediff.py @@ -2,7 +2,7 @@ import os import gradio as gr import diffusers from safetensors.torch import load_file -from modules import scripts, processing, shared, devices, sd_models +from modules import scripts_manager, processing, shared, devices, sd_models # config @@ -189,12 +189,12 @@ def set_free_noise(frames): shared.sd_model.enable_free_noise(context_length=context_length, context_stride=context_stride) -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: AnimateDiff' def show(self, is_img2img): - # return scripts.AlwaysVisible if shared.native else False + # return scripts_manager.AlwaysVisible if shared.native else False return not is_img2img @@ -231,7 +231,7 @@ class Script(scripts.Script): lora = LORAS[lora_index] set_adapter(adapter) if motion_adapter is None: - return + return None set_scheduler(p, adapter, override_scheduler) set_lora(p, lora, strength) set_free_init(fi_method, fi_iters, fi_order, fi_spatial, fi_temporal) diff --git a/scripts/apg.py b/scripts/apg.py index 6d0ec107e..5b8373a8d 100644 --- a/scripts/apg.py +++ b/scripts/apg.py @@ -1,11 +1,11 @@ import gradio as gr -from modules import scripts, processing, shared, sd_models +from modules import scripts_manager, processing, shared, sd_models registered = False -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None @@ -71,6 +71,7 @@ class Script(scripts.Script): shared.log.info(f'APG apply: guidance={p.cfg_scale} momentum={apg.momentum} eta={apg.eta} threshold={apg.threshold} class={shared.sd_model.__class__.__name__}') p.extra_generation_params["APG"] = f'ETA={apg.eta} Momentum={apg.momentum} Threshold={apg.threshold}' # processed = processing.process_images(p) + return None def after(self, p: processing.StableDiffusionProcessing, processed: processing.Processed, eta, momentum, threshold): # pylint: disable=arguments-differ, unused-argument from modules import apg diff --git a/scripts/automatic_color_inpaint.py b/scripts/automatic_color_inpaint.py index 227a445fa..afe020881 100644 --- a/scripts/automatic_color_inpaint.py +++ b/scripts/automatic_color_inpaint.py @@ -1,7 +1,7 @@ import gradio as gr from PIL import Image import numpy as np -from modules import shared, scripts, processing, masking +from modules import shared, scripts_manager, processing, masking """ Automatic Color Inpaint Script for SD.NEXT - SD & SDXL Support @@ -28,7 +28,7 @@ img2img = True ### Script definition -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return title diff --git a/scripts/blipdiffusion.py b/scripts/blipdiffusion.py index 0acc80929..14b4a6a1c 100644 --- a/scripts/blipdiffusion.py +++ b/scripts/blipdiffusion.py @@ -1,8 +1,8 @@ import gradio as gr -from modules import scripts, processing, shared, sd_models +from modules import scripts_manager, processing, shared, sd_models -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'BLIP Diffusion: Controllable Generation and Editing' diff --git a/scripts/cogvideo.py b/scripts/cogvideo.py index 67022da67..42b9111fc 100644 --- a/scripts/cogvideo.py +++ b/scripts/cogvideo.py @@ -13,14 +13,14 @@ import torch from torchvision import transforms import diffusers import numpy as np -from modules import scripts, shared, devices, errors, sd_models, processing +from modules import scripts_manager, shared, devices, errors, sd_models, processing from modules.processing_callbacks import diffusers_callback, set_callbacks_p debug = (os.environ.get('SD_LOAD_DEBUG', None) is not None) or (os.environ.get('SD_PROCESS_DEBUG', None) is not None) -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: CogVideoX (Legacy)' diff --git a/modules/consistory/__init__.py b/scripts/consistory/__init__.py similarity index 100% rename from modules/consistory/__init__.py rename to scripts/consistory/__init__.py diff --git a/modules/consistory/attention_processor.py b/scripts/consistory/attention_processor.py similarity index 100% rename from modules/consistory/attention_processor.py rename to scripts/consistory/attention_processor.py diff --git a/modules/consistory/consistory_pipeline.py b/scripts/consistory/consistory_pipeline.py similarity index 100% rename from modules/consistory/consistory_pipeline.py rename to scripts/consistory/consistory_pipeline.py diff --git a/modules/consistory/consistory_run.py b/scripts/consistory/consistory_run.py similarity index 100% rename from modules/consistory/consistory_run.py rename to scripts/consistory/consistory_run.py diff --git a/modules/consistory/consistory_unet_sdxl.py b/scripts/consistory/consistory_unet_sdxl.py similarity index 100% rename from modules/consistory/consistory_unet_sdxl.py rename to scripts/consistory/consistory_unet_sdxl.py diff --git a/modules/consistory/consistory_utils.py b/scripts/consistory/consistory_utils.py similarity index 100% rename from modules/consistory/consistory_utils.py rename to scripts/consistory/consistory_utils.py diff --git a/modules/consistory/utils/general_utils.py b/scripts/consistory/utils/general_utils.py similarity index 100% rename from modules/consistory/utils/general_utils.py rename to scripts/consistory/utils/general_utils.py diff --git a/modules/consistory/utils/ptp_utils.py b/scripts/consistory/utils/ptp_utils.py similarity index 100% rename from modules/consistory/utils/ptp_utils.py rename to scripts/consistory/utils/ptp_utils.py diff --git a/scripts/consistory_ext.py b/scripts/consistory_ext.py index c02ca1e50..ab0019fcc 100644 --- a/scripts/consistory_ext.py +++ b/scripts/consistory_ext.py @@ -12,10 +12,10 @@ ported to modules/consistory import time import gradio as gr import diffusers -from modules import scripts, devices, errors, processing, shared, sd_models, sd_samplers +from modules import scripts_manager, devices, errors, processing, shared, sd_models, sd_samplers -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.anchor_cache_first_stage = None @@ -66,7 +66,7 @@ class Script(scripts.Script): def create_model(self): diffusers.models.embeddings.PositionNet = diffusers.models.embeddings.GLIGENTextBoundingboxProjection # patch as renamed in https://github.com/huggingface/diffusers/pull/6244/files - import modules.consistory as cs + import scripts.consistory as cs if shared.sd_model.__class__.__name__ != 'ConsistoryExtendAttnSDXLPipeline': shared.log.debug('ConsiStory init') t0 = time.time() @@ -128,7 +128,7 @@ class Script(scripts.Script): return concepts, anchors, prompts, alpha, steps, seed def create_anchors(self, anchors, concepts, seed, steps, dropout, same, queries, sdsa, injection, alpha): - import modules.consistory as cs + import scripts.consistory as cs t0 = time.time() if len(anchors) == 0: shared.log.warning('ConsiStory: no anchors') @@ -159,7 +159,7 @@ class Script(scripts.Script): return images def create_extra(self, prompt, concepts, seed, steps, dropout, same, queries, sdsa, injection, alpha): - import modules.consistory as cs + import scripts.consistory as cs t0 = time.time() images = [] shared.log.debug(f'ConsiStory extra: concepts={concepts} prompt="{prompt}"') diff --git a/modules/ctrlx/__init__.py b/scripts/ctrlx/__init__.py similarity index 100% rename from modules/ctrlx/__init__.py rename to scripts/ctrlx/__init__.py diff --git a/modules/ctrlx/features.py b/scripts/ctrlx/features.py similarity index 100% rename from modules/ctrlx/features.py rename to scripts/ctrlx/features.py diff --git a/modules/ctrlx/media.py b/scripts/ctrlx/media.py similarity index 100% rename from modules/ctrlx/media.py rename to scripts/ctrlx/media.py diff --git a/modules/ctrlx/sdxl.py b/scripts/ctrlx/sdxl.py similarity index 100% rename from modules/ctrlx/sdxl.py rename to scripts/ctrlx/sdxl.py diff --git a/modules/ctrlx/utils.py b/scripts/ctrlx/utils.py similarity index 100% rename from modules/ctrlx/utils.py rename to scripts/ctrlx/utils.py diff --git a/scripts/ctrlx.py b/scripts/ctrlx_ext.py similarity index 93% rename from scripts/ctrlx.py rename to scripts/ctrlx_ext.py index 30b87c038..66c4881f8 100644 --- a/scripts/ctrlx.py +++ b/scripts/ctrlx_ext.py @@ -2,10 +2,10 @@ import gradio as gr from diffusers import StableDiffusionXLPipeline -from modules import shared, scripts, processing, processing_helpers, sd_models, devices +from modules import shared, scripts_manager, processing, processing_helpers, sd_models, devices -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Ctrl-X: Controlling Structure and Appearance' @@ -44,9 +44,9 @@ class Script(scripts.Script): return None import yaml - from modules.ctrlx import CtrlXStableDiffusionXLPipeline - from modules.ctrlx.sdxl import get_control_config, register_control - from modules.ctrlx.utils import get_self_recurrence_schedule + from scripts.ctrlx import CtrlXStableDiffusionXLPipeline + from scripts.ctrlx.sdxl import get_control_config, register_control + from scripts.ctrlx.utils import get_self_recurrence_schedule orig_prompt_attention = shared.opts.prompt_attention shared.opts.data['prompt_attention'] = 'fixed' diff --git a/scripts/custom_code.py b/scripts/custom_code.py index 56b0db222..4c79463db 100644 --- a/scripts/custom_code.py +++ b/scripts/custom_code.py @@ -1,8 +1,7 @@ import copy import ast import gradio as gr -import modules.scripts as scripts - +from modules import scripts_manager from modules.processing import Processed from modules.shared import opts, cmd_opts, state # pylint: disable=unused-import @@ -28,14 +27,15 @@ def exec_with_return(code, module): last_ast = copy.deepcopy(code_ast) last_ast.body = code_ast.body[-1:] - exec(compile(init_ast, "", "exec"), module.__dict__) + exec(compile(init_ast, "", "exec"), module.__dict__) # pylint: disable=exec-used if type(last_ast.body[0]) == ast.Expr: - return eval(compile(convertExpr2Expression(last_ast.body[0]), "", "eval"), module.__dict__) + return eval(compile(convertExpr2Expression(last_ast.body[0]), "", "eval"), module.__dict__) # pylint: disable=eval-used else: - exec(compile(last_ast, "", "exec"), module.__dict__) + exec(compile(last_ast, "", "exec"), module.__dict__) # pylint: disable=exec-used + return None -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "Custom code" @@ -60,7 +60,7 @@ return process_images(p) return [code, indent_level] - def run(self, p, code, indent_level): + def run(self, p, code, indent_level): # pylint: disable=arguments-differ assert cmd_opts.allow_code, '--allow-code option must be enabled' display_result_data = [[], -1, ""] diff --git a/scripts/demofusion.py b/scripts/demofusion.py index 6625c0c79..a81d3727e 100644 --- a/scripts/demofusion.py +++ b/scripts/demofusion.py @@ -14,7 +14,7 @@ from diffusers.schedulers import KarrasDiffusionSchedulers from diffusers.utils import is_accelerate_available, is_accelerate_version from diffusers.utils.torch_utils import randn_tensor from diffusers.pipelines.pipeline_utils import DiffusionPipeline, ImagePipelineOutput -from modules import scripts, processing, shared, sd_models, devices +from modules import scripts_manager, processing, shared, sd_models, devices ### Class definition @@ -1219,7 +1219,7 @@ class DemoFusionSDXLPipeline(DiffusionPipeline, FromSingleFileMixin, LoraLoaderM ### Script definition -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'DemoFusion: High-Resolution Image Generation' diff --git a/scripts/differential_diffusion.py b/scripts/differential_diffusion.py index 12bbe45e7..ce4e71d3e 100644 --- a/scripts/differential_diffusion.py +++ b/scripts/differential_diffusion.py @@ -1845,7 +1845,7 @@ import gradio as gr import diffusers from PIL import Image, ImageEnhance, ImageOps # pylint: disable=reimported from torchvision import transforms -from modules import errors, shared, devices, scripts, processing, sd_models, images +from modules import errors, shared, devices, scripts_manager, processing, sd_models, images detector = None @@ -1856,7 +1856,7 @@ MODELS = { } -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Differential diffusion: Individual Pixel Strength' diff --git a/scripts/example.py b/scripts/example.py index d62d65461..7d84ab184 100644 --- a/scripts/example.py +++ b/scripts/example.py @@ -1,6 +1,6 @@ import gradio as gr from diffusers.pipelines import StableDiffusionPipeline, StableDiffusionXLPipeline # pylint: disable=unused-import -from modules import shared, scripts, processing, sd_models, devices +from modules import shared, scripts_manager, processing, sd_models, devices """ This is a simpler template for script for SD.Next that implements a custom pipeline @@ -62,7 +62,7 @@ params = ['test1', 'test2', 'test3', 'test4'] ### Script definition -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return title diff --git a/scripts/flux_enhance.py b/scripts/flux_enhance.py index 72eb76d4e..75e6b7770 100644 --- a/scripts/flux_enhance.py +++ b/scripts/flux_enhance.py @@ -5,7 +5,7 @@ import random import threading from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import gradio as gr -from modules import shared, scripts, devices, processing +from modules import shared, scripts_manager, devices, processing repo_id = "gokaygokay/Flux-Prompt-Enhance" @@ -13,7 +13,7 @@ num_return_sequences = 5 load_lock = threading.Lock() -class Script(scripts.Script): +class Script(scripts_manager.Script): prompts = [['']] tokenizer: AutoTokenizer = None model: AutoModelForSeq2SeqLM = None diff --git a/scripts/flux_tools.py b/scripts/flux_tools.py index ff5367cd8..07b96f0aa 100644 --- a/scripts/flux_tools.py +++ b/scripts/flux_tools.py @@ -3,7 +3,7 @@ import time import gradio as gr import diffusers -from modules import scripts, processing, shared, devices, sd_models +from modules import scripts_manager, processing, shared, devices, sd_models from installer import install @@ -14,7 +14,7 @@ processor_depth = None title = 'Flux Tools' -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return f'{title}' @@ -44,7 +44,7 @@ class Script(scripts.Script): def run(self, p: processing.StableDiffusionProcessing, tool: str = 'None', prompt: float = 1.0, strength: bool = True, process: bool = True): # pylint: disable=arguments-differ global redux_pipe, processor_canny, processor_depth # pylint: disable=global-statement if tool is None or tool == 'None': - return + return None image = getattr(p, 'init_images', None) if image is None or len(image) == 0: shared.log.error(f'{title}: tool={tool} no init_images') @@ -147,3 +147,4 @@ class Script(scripts.Script): shared.log.debug(f'{title}: tool={tool} ready time={time.time() - t0:.2f}') devices.torch_gc() + return None diff --git a/modules/freescale/__init__.py b/scripts/freescale/__init__.py similarity index 100% rename from modules/freescale/__init__.py rename to scripts/freescale/__init__.py diff --git a/modules/freescale/free_lunch_utils.py b/scripts/freescale/free_lunch_utils.py similarity index 100% rename from modules/freescale/free_lunch_utils.py rename to scripts/freescale/free_lunch_utils.py diff --git a/modules/freescale/freescale_pipeline.py b/scripts/freescale/freescale_pipeline.py similarity index 100% rename from modules/freescale/freescale_pipeline.py rename to scripts/freescale/freescale_pipeline.py diff --git a/modules/freescale/freescale_pipeline_img2img.py b/scripts/freescale/freescale_pipeline_img2img.py similarity index 100% rename from modules/freescale/freescale_pipeline_img2img.py rename to scripts/freescale/freescale_pipeline_img2img.py diff --git a/modules/freescale/scale_attention.py b/scripts/freescale/scale_attention.py similarity index 100% rename from modules/freescale/scale_attention.py rename to scripts/freescale/scale_attention.py diff --git a/scripts/freescale.py b/scripts/freescale_ext.py similarity index 97% rename from scripts/freescale.py rename to scripts/freescale_ext.py index 31c5a3b1c..1f24123af 100644 --- a/scripts/freescale.py +++ b/scripts/freescale_ext.py @@ -1,11 +1,11 @@ import gradio as gr -from modules import scripts, processing, shared, sd_models +from modules import scripts_manager, processing, shared, sd_models registered = False -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None @@ -58,7 +58,7 @@ class Script(scripts.Script): shared.log.warning('FreeScale: missing input image') return None - from modules.freescale import StableDiffusionXLFreeScale, StableDiffusionXLFreeScaleImg2Img + from scripts.freescale import StableDiffusionXLFreeScale, StableDiffusionXLFreeScaleImg2Img self.orig_pipe = shared.sd_model self.orig_slice = shared.opts.diffusers_vae_slicing self.orig_tile = shared.opts.diffusers_vae_tiling diff --git a/scripts/hdr.py b/scripts/hdr.py index 9afc3673b..7daf3e3a0 100644 --- a/scripts/hdr.py +++ b/scripts/hdr.py @@ -3,13 +3,12 @@ import cv2 import numpy as np import gradio as gr from PIL import Image -import modules.scripts as scripts -from modules import images, processing, shared +from modules import images, processing, shared, scripts_manager from modules.processing import Processed from modules.shared import opts, state -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "HDR: High Dynamic Range" @@ -60,7 +59,7 @@ class Script(scripts.Script): def run(self, p, hdr_range, save_hdr, is_tonemap, gamma, scale, saturation): # pylint: disable=arguments-differ if shared.sd_model_type != 'sd' and shared.sd_model_type != 'sdxl': shared.log.error(f'HDR: incorrect base model: {shared.sd_model.__class__.__name__}') - return + return None p.extra_generation_params = { "HDR range": hdr_range, } diff --git a/scripts/hunyuanvideo.py b/scripts/hunyuanvideo.py index 0291c4124..93a2a157c 100644 --- a/scripts/hunyuanvideo.py +++ b/scripts/hunyuanvideo.py @@ -3,7 +3,7 @@ import torch import gradio as gr import transformers import diffusers -from modules import scripts, processing, shared, images, devices, sd_models, sd_checkpoint, sd_samplers, model_quant, timer, sd_hijack_te +from modules import scripts_manager, processing, shared, images, devices, sd_models, sd_checkpoint, sd_samplers, model_quant, timer, sd_hijack_te default_template = """Describe the video by detailing the following aspects: @@ -48,7 +48,7 @@ def hijack_decode(*args, **kwargs): return res -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: Hunyuan Video (Legacy)' diff --git a/scripts/image2video.py b/scripts/image2video.py index b39b793b5..3b59a84a3 100644 --- a/scripts/image2video.py +++ b/scripts/image2video.py @@ -1,7 +1,7 @@ import torch import gradio as gr import diffusers -from modules import scripts, processing, shared, images, sd_models, devices +from modules import scripts_manager, processing, shared, images, sd_models, devices MODELS = [ @@ -11,7 +11,7 @@ MODELS = [ ] -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: VGen Image-to-Video' @@ -53,9 +53,9 @@ class Script(scripts.Script): def run(self, p: processing.StableDiffusionProcessing, model_name, num_frames, video_type, duration, gif_loop, mp4_pad, mp4_interpolate, fi_method, fi_iters, fi_order, fi_spatial, fi_temporal, vg_chunks, vg_fps): # pylint: disable=arguments-differ, unused-argument if model_name == 'None': - return + return None if p.init_images is None or len(p.init_images) == 0: - return + return None model = [m for m in MODELS if m['name'] == model_name][0] repo_id = model['url'] shared.log.debug(f'Image2Video: model={model_name} frames={num_frames}, video={video_type} duration={duration} loop={gif_loop} pad={mp4_pad} interpolate={mp4_interpolate}') @@ -66,7 +66,7 @@ class Script(scripts.Script): if model_name == 'PIA': if shared.sd_model_type != 'sd': shared.log.error('Image2Video PIA: base model must be SD15') - return + return None shared.log.info(f'Image2Video PIA load: model={repo_id}') motion_adapter = diffusers.MotionAdapter.from_pretrained(repo_id) sd_models.move_model(motion_adapter, devices.device) diff --git a/modules/infiniteyou/__init__.py b/scripts/infiniteyou/__init__.py similarity index 100% rename from modules/infiniteyou/__init__.py rename to scripts/infiniteyou/__init__.py diff --git a/modules/infiniteyou/pipeline_flux_infusenet.py b/scripts/infiniteyou/pipeline_flux_infusenet.py similarity index 100% rename from modules/infiniteyou/pipeline_flux_infusenet.py rename to scripts/infiniteyou/pipeline_flux_infusenet.py diff --git a/modules/infiniteyou/pipeline_infu_flux.py b/scripts/infiniteyou/pipeline_infu_flux.py similarity index 100% rename from modules/infiniteyou/pipeline_infu_flux.py rename to scripts/infiniteyou/pipeline_infu_flux.py diff --git a/modules/infiniteyou/resampler.py b/scripts/infiniteyou/resampler.py similarity index 100% rename from modules/infiniteyou/resampler.py rename to scripts/infiniteyou/resampler.py diff --git a/scripts/infiniteyou_ext.py b/scripts/infiniteyou_ext.py index 7a702d858..9a280811b 100644 --- a/scripts/infiniteyou_ext.py +++ b/scripts/infiniteyou_ext.py @@ -4,7 +4,7 @@ import gradio as gr from PIL import Image -from modules import scripts, processing, shared, sd_models, devices +from modules import scripts_manager, processing, shared, sd_models, devices prefix = 'InfiniteYou' @@ -22,7 +22,7 @@ def verify_insightface(): def load_infiniteyou(model: str): - from modules.infiniteyou import InfUFluxPipeline + from scripts.infiniteyou import InfUFluxPipeline shared.sd_model = InfUFluxPipeline( pipe=shared.sd_model, model_version=model, @@ -31,7 +31,7 @@ def load_infiniteyou(model: str): sd_models.set_diffuser_options(shared.sd_model) -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return f'{prefix}: Flexible Photo Recrafting' diff --git a/scripts/init_latents.py b/scripts/init_latents.py index 77a73c80b..5b3d9b406 100644 --- a/scripts/init_latents.py +++ b/scripts/init_latents.py @@ -1,14 +1,14 @@ -from modules import scripts, processing, shared, devices +from modules import scripts_manager, processing, shared, devices -class Script(scripts.Script): +class Script(scripts_manager.Script): standalone = False def title(self): return 'Init Latents' def show(self, is_img2img): - return scripts.AlwaysVisible if shared.native else False + return scripts_manager.AlwaysVisible if shared.native else False @staticmethod def get_latents(p): diff --git a/modules/instantir/__init__.py b/scripts/instantir/__init__.py similarity index 100% rename from modules/instantir/__init__.py rename to scripts/instantir/__init__.py diff --git a/modules/instantir/aggregator.py b/scripts/instantir/aggregator.py similarity index 100% rename from modules/instantir/aggregator.py rename to scripts/instantir/aggregator.py diff --git a/modules/meissonic/__init__.py b/scripts/instantir/ip_adapter/__init__.py similarity index 100% rename from modules/meissonic/__init__.py rename to scripts/instantir/ip_adapter/__init__.py diff --git a/modules/instantir/ip_adapter/attention_processor.py b/scripts/instantir/ip_adapter/attention_processor.py similarity index 100% rename from modules/instantir/ip_adapter/attention_processor.py rename to scripts/instantir/ip_adapter/attention_processor.py diff --git a/modules/instantir/ip_adapter/ip_adapter.py b/scripts/instantir/ip_adapter/ip_adapter.py similarity index 100% rename from modules/instantir/ip_adapter/ip_adapter.py rename to scripts/instantir/ip_adapter/ip_adapter.py diff --git a/modules/instantir/ip_adapter/resampler.py b/scripts/instantir/ip_adapter/resampler.py similarity index 100% rename from modules/instantir/ip_adapter/resampler.py rename to scripts/instantir/ip_adapter/resampler.py diff --git a/modules/instantir/ip_adapter/utils.py b/scripts/instantir/ip_adapter/utils.py similarity index 100% rename from modules/instantir/ip_adapter/utils.py rename to scripts/instantir/ip_adapter/utils.py diff --git a/modules/instantir/lcm_single_step_scheduler.py b/scripts/instantir/lcm_single_step_scheduler.py similarity index 100% rename from modules/instantir/lcm_single_step_scheduler.py rename to scripts/instantir/lcm_single_step_scheduler.py diff --git a/modules/instantir/sdxl_instantir.py b/scripts/instantir/sdxl_instantir.py similarity index 100% rename from modules/instantir/sdxl_instantir.py rename to scripts/instantir/sdxl_instantir.py diff --git a/scripts/instantir.py b/scripts/instantir_ext.py similarity index 96% rename from scripts/instantir.py rename to scripts/instantir_ext.py index 6ab7733fe..0fb39b0bb 100644 --- a/scripts/instantir.py +++ b/scripts/instantir_ext.py @@ -2,10 +2,10 @@ import gradio as gr import torch import diffusers from huggingface_hub import hf_hub_download -from modules import scripts, processing, shared, sd_models, devices, ipadapter +from modules import scripts_manager, processing, shared, sd_models, devices, ipadapter -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None @@ -40,7 +40,7 @@ class Script(scripts.Script): shared.log.warning(f'InstantIR: class={shared.sd_model.__class__.__name__} model={shared.sd_model_type} required={supported_model_list}') return None start, end, hq, multistep, adastep, image = args - from modules import instantir as ir + from scripts import instantir as ir if shared.sd_model_type == "sdxl": if shared.sd_model.__class__.__name__ != "InstantIRPipeline": self.orig_pipe = shared.sd_model diff --git a/scripts/ipadapter.py b/scripts/ipadapter.py index 98b2a683f..ca1cdcfbc 100644 --- a/scripts/ipadapter.py +++ b/scripts/ipadapter.py @@ -1,20 +1,20 @@ import json from PIL import Image import gradio as gr -from modules import scripts, processing, shared, ipadapter, ui_common +from modules import scripts_manager, processing, shared, ipadapter, ui_common MAX_ADAPTERS = 4 -class Script(scripts.Script): +class Script(scripts_manager.Script): standalone = True def title(self): return 'IP Adapters' def show(self, is_img2img): - return scripts.AlwaysVisible if shared.native else False + return scripts_manager.AlwaysVisible if shared.native else False def load_images(self, files): init_images = [] diff --git a/scripts/ipinstruct.py b/scripts/ipinstruct.py index 9add5c41d..57e20de86 100644 --- a/scripts/ipinstruct.py +++ b/scripts/ipinstruct.py @@ -7,7 +7,7 @@ encoder: `laion/CLIP-ViT-H-14-laion2B-s32B-b79K`=3.94GB import os import importlib import gradio as gr -from modules import scripts, processing, shared, sd_models, devices +from modules import scripts_manager, processing, shared, sd_models, devices repo = 'https://github.com/vladmandic/IP-Instruct' @@ -16,7 +16,7 @@ encoder = "laion/CLIP-ViT-H-14-laion2B-s32B-b79K" folder = os.path.join('repositories', 'ip_instruct') -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None diff --git a/scripts/k_diff.py b/scripts/k_diff.py index f5f7caab6..d2f50ff3c 100644 --- a/scripts/k_diff.py +++ b/scripts/k_diff.py @@ -1,9 +1,9 @@ import inspect import gradio as gr -from modules import scripts, processing, shared, sd_models, ui_common +from modules import scripts_manager, processing, shared, sd_models, ui_common -class Script(scripts.Script): +class Script(scripts_manager.Script): supported_models = ['sd', 'sdxl'] orig_pipe = None @@ -65,6 +65,7 @@ class Script(scripts.Script): # params['disable'] = False shared.log.info(f'K-diffusion apply: class={shared.sd_model.__class__.__name__} sampler={sampler} params={params}') p.extra_generation_params["Sampler"] = sampler + return None def after(self, p: processing.StableDiffusionProcessing, processed: processing.Processed, sampler): # pylint: disable=arguments-differ, unused-argument if self.orig_pipe is None: diff --git a/scripts/kohya_hires_fix.py b/scripts/kohya_hires_fix.py index 090edcaf9..3d7b16c61 100644 --- a/scripts/kohya_hires_fix.py +++ b/scripts/kohya_hires_fix.py @@ -1,9 +1,9 @@ import gradio as gr import diffusers -from modules import scripts, processing, shared, sd_models, devices +from modules import scripts_manager, processing, shared, sd_models, devices -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Kohya HiRes Fix' diff --git a/modules/layerdiffuse/__init__.py b/scripts/layerdiffuse/__init__.py similarity index 94% rename from modules/layerdiffuse/__init__.py rename to scripts/layerdiffuse/__init__.py index 368790c19..c980196c4 100644 --- a/modules/layerdiffuse/__init__.py +++ b/scripts/layerdiffuse/__init__.py @@ -2,9 +2,9 @@ from huggingface_hub import hf_hub_download from safetensors.torch import load_file -from modules.layerdiffuse.layerdiffuse_model import TransparentVAEDecoder -from modules.layerdiffuse.layerdiffuse_loader import load_lora_to_unet, merge_delta_weights_into_unet from modules import shared, errors, devices +from .layerdiffuse_model import TransparentVAEDecoder +from .layerdiffuse_loader import load_lora_to_unet, merge_delta_weights_into_unet def apply_layerdiffuse_sd15(pipeline): diff --git a/modules/layerdiffuse/layerdiffuse_loader.py b/scripts/layerdiffuse/layerdiffuse_loader.py similarity index 99% rename from modules/layerdiffuse/layerdiffuse_loader.py rename to scripts/layerdiffuse/layerdiffuse_loader.py index 577b006fe..4c029f4d5 100644 --- a/modules/layerdiffuse/layerdiffuse_loader.py +++ b/scripts/layerdiffuse/layerdiffuse_loader.py @@ -1,5 +1,5 @@ from safetensors.torch import load_file -from modules.layerdiffuse.layerdiffuse_model import LoraLoader, AttentionSharingProcessor +from scripts.layerdiffuse.layerdiffuse_model import LoraLoader, AttentionSharingProcessor def merge_delta_weights_into_unet(pipe, delta_weights): diff --git a/modules/layerdiffuse/layerdiffuse_model.py b/scripts/layerdiffuse/layerdiffuse_model.py similarity index 100% rename from modules/layerdiffuse/layerdiffuse_model.py rename to scripts/layerdiffuse/layerdiffuse_model.py diff --git a/scripts/layerdiffuse.py b/scripts/layerdiffuse_ext.py similarity index 94% rename from scripts/layerdiffuse.py rename to scripts/layerdiffuse_ext.py index ecf7da1d3..611af5a77 100644 --- a/scripts/layerdiffuse.py +++ b/scripts/layerdiffuse_ext.py @@ -1,8 +1,8 @@ import gradio as gr -from modules import shared, scripts, sd_models +from modules import shared, scripts_manager, sd_models -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'LayerDiffuse: Transparent Image' @@ -11,7 +11,7 @@ class Script(scripts.Script): return True if shared.native else False def apply(self): - from modules import layerdiffuse + from scripts import layerdiffuse if not shared.sd_loaded: shared.log.error('LayerDiffuse: model not loaded') return self.is_active() diff --git a/scripts/ledits.py b/scripts/ledits.py index b75c6ff6f..712840e7c 100644 --- a/scripts/ledits.py +++ b/scripts/ledits.py @@ -1,9 +1,9 @@ import diffusers import gradio as gr -from modules import scripts, processing, shared, devices, sd_models +from modules import scripts_manager, processing, shared, devices, sd_models -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'LEdits: Limitless Image Editing' diff --git a/scripts/legacy_allegrovideo.py b/scripts/legacy_allegrovideo.py index 1403e0765..ac6ee7f2b 100644 --- a/scripts/legacy_allegrovideo.py +++ b/scripts/legacy_allegrovideo.py @@ -2,7 +2,7 @@ import time import gradio as gr import transformers import diffusers -from modules import scripts, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant, timer, sd_hijack_te +from modules import scripts_manager, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant, timer, sd_hijack_te repo_id = 'rhymes-ai/Allegro' @@ -19,7 +19,7 @@ def hijack_decode(*args, **kwargs): return res -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: Allegro (Legacy)' diff --git a/scripts/loopback.py b/scripts/loopback.py index 99111d486..98b4f1e00 100644 --- a/scripts/loopback.py +++ b/scripts/loopback.py @@ -1,13 +1,12 @@ import math import gradio as gr -import modules.scripts as scripts -from modules import images, processing +from modules import images, processing, scripts_manager from modules.processing import Processed from modules.shared import opts, state -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "Loopback" diff --git a/scripts/ltxvideo.py b/scripts/ltxvideo.py index 43ea75595..51a823f3b 100644 --- a/scripts/ltxvideo.py +++ b/scripts/ltxvideo.py @@ -4,7 +4,7 @@ import torch import gradio as gr import diffusers import transformers -from modules import scripts, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant, timer, sd_hijack_te +from modules import scripts_manager, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant, timer, sd_hijack_te repos = { @@ -39,7 +39,7 @@ def hijack_decode(*args, **kwargs): return res -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: LTX Video (Legacy)' diff --git a/scripts/lut.py b/scripts/lut.py index 265abb2de..c32986fe5 100644 --- a/scripts/lut.py +++ b/scripts/lut.py @@ -5,14 +5,14 @@ lib: https://github.com/homm/pillow-lut-tools import os import gradio as gr from installer import install -from modules import scripts, shared, processing +from modules import scripts_manager, shared, processing -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'LUT Color grading' - def show(self, is_img2img): + def show(self, is_img2img): # pylint: disable=unused-argument return shared.native def ui(self, _is_img2img): diff --git a/scripts/mixture_of_diffusers.py b/scripts/mixture_of_diffusers.py index 58598ec66..0cbc60d4e 100644 --- a/scripts/mixture_of_diffusers.py +++ b/scripts/mixture_of_diffusers.py @@ -1,5 +1,5 @@ import gradio as gr -from modules import scripts, processing, shared, sd_models +from modules import scripts_manager, processing, shared, sd_models supported_models = ['sdxl'] @@ -7,7 +7,7 @@ max_xtiles = 4 max_ytiles = 4 -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None @@ -16,7 +16,7 @@ class Script(scripts.Script): def title(self): return 'Mixture-of-Diffusers: Tile Control' - def show(self, is_img2img): + def show(self, is_img2img): # pylint: disable=unused-argument return shared.native def update_ui(self, x_tiles, y_tiles): @@ -85,7 +85,7 @@ class Script(scripts.Script): [x_tiles, y_tiles, x_overlap, y_overlap], prompts = args[:4], args[4:] if max(x_tiles, y_tiles) <= 1: return None - from modules.mod import StableDiffusionXLTilingPipeline + from scripts.mod import StableDiffusionXLTilingPipeline self.orig_pipe = shared.sd_model self.orig_attn = shared.opts.prompt_attention @@ -113,7 +113,7 @@ class Script(scripts.Script): shared.sd_model = sd_models.switch_pipe(StableDiffusionXLTilingPipeline, shared.sd_model) sd_models.set_diffuser_options(shared.sd_model) sd_models.apply_balanced_offload(shared.sd_model) - + return None def after(self, p: processing.StableDiffusionProcessing, processed: processing.Processed, *args): # pylint: disable=arguments-differ, unused-argument if self.orig_pipe is None: diff --git a/scripts/mixture_tiling.py b/scripts/mixture_tiling.py index 5b5aab9db..5a78c8203 100644 --- a/scripts/mixture_tiling.py +++ b/scripts/mixture_tiling.py @@ -1,6 +1,6 @@ import gradio as gr import torch -from modules import shared, devices, scripts, processing, sd_models +from modules import shared, devices, scripts_manager, processing, sd_models checked_ok = False @@ -24,7 +24,7 @@ def check_dependencies(): return False -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Mixture Tiling: Scene Composition' @@ -47,11 +47,11 @@ class Script(scripts.Script): def run(self, p: processing.StableDiffusionProcessing, x_size, y_size, x_overlap, y_overlap): # pylint: disable=arguments-differ if not checked_ok: if not check_dependencies(): - return + return None prompts = p.prompt.splitlines() if len(prompts) != x_size * y_size: shared.log.error(f'Mixture tiling prompt count mismatch: prompts={len(prompts)} required={x_size * y_size}') - return + return None # backup pipeline and params orig_pipeline = shared.sd_model orig_dtype = devices.dtype @@ -59,12 +59,12 @@ class Script(scripts.Script): # create pipeline if shared.sd_model_type != 'sd': shared.log.error(f'Mixture tiling: incorrect base model: {shared.sd_model.__class__.__name__}') - return + return None shared.sd_model = sd_models.switch_pipe('mixture_tiling', shared.sd_model) if shared.sd_model.__class__.__name__ != 'StableDiffusionTilingPipeline': # switch failed shared.log.error(f'Mixture tiling: not a tiling pipeline: {shared.sd_model.__class__.__name__}') shared.sd_model = orig_pipeline - return + return None sd_models.set_diffuser_options(shared.sd_model) shared.opts.data['prompt_attention'] = 'fixed' # this pipeline is not compatible with embeds shared.sd_model.to(torch.float32) # this pipeline unet is not compatible with fp16 diff --git a/scripts/mochivideo.py b/scripts/mochivideo.py index 1e7ba5541..d5c743ad6 100644 --- a/scripts/mochivideo.py +++ b/scripts/mochivideo.py @@ -2,13 +2,13 @@ import time import torch import gradio as gr import diffusers -from modules import scripts, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant +from modules import scripts_manager, processing, shared, images, devices, sd_models, sd_checkpoint, model_quant repo_id = 'genmo/mochi-1-preview' -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: Mochi.1 Video (Legacy)' diff --git a/modules/mod/__init__.py b/scripts/mod/__init__.py similarity index 100% rename from modules/mod/__init__.py rename to scripts/mod/__init__.py diff --git a/scripts/mulan.py b/scripts/mulan.py index 829ce1463..f177d5d14 100644 --- a/scripts/mulan.py +++ b/scripts/mulan.py @@ -24,7 +24,7 @@ Examples: """ import gradio as gr -from modules import shared, scripts, processing, devices +from modules import shared, scripts_manager, processing, devices ENCODERS =[ @@ -44,7 +44,7 @@ tokenizer = None text_encoder_path = None -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'MuLan: Multi Language Prompts' @@ -61,11 +61,11 @@ class Script(scripts.Script): def run(self, p: processing.StableDiffusionProcessing, selected_encoder): # pylint: disable=arguments-differ global pipe_type, adapter, text_encoder, tokenizer, text_encoder_path # pylint: disable=global-statement if not selected_encoder or selected_encoder == 'None': - return + return None # create pipeline if shared.sd_model_type != 'sd' and shared.sd_model_type != 'sdxl': shared.log.error(f'MuLan: incorrect base model: {shared.sd_model.__class__.__name__}') - return + return None adapter_path = None if shared.sd_model_type == 'sd': @@ -73,7 +73,7 @@ class Script(scripts.Script): if shared.sd_model_type == 'sdxl': adapter_path = 'mulanai/mulan-lang-adapter::sdxl_aesthetic.pth' if adapter_path is None: - return + return None # install-on-demand import installer diff --git a/scripts/outpainting_mk_2.py b/scripts/outpainting_mk_2.py index 7fd56e353..adbdbdb83 100644 --- a/scripts/outpainting_mk_2.py +++ b/scripts/outpainting_mk_2.py @@ -2,8 +2,7 @@ import math import numpy as np import gradio as gr from PIL import Image, ImageDraw -import modules.scripts as scripts -from modules import images +from modules import images, scripts_manager from modules.processing import Processed, process_images from modules.shared import opts, state @@ -100,7 +99,7 @@ def get_matched_noise(_np_src_image, np_mask_rgb, noise_q=1, color_variation=0.0 return np.clip(matched_noise, 0., 1.) -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "Outpainting" diff --git a/modules/pixelsmith/__init__.py b/scripts/pixelsmith/__init__.py similarity index 100% rename from modules/pixelsmith/__init__.py rename to scripts/pixelsmith/__init__.py diff --git a/modules/pixelsmith/autoencoder_kl.py b/scripts/pixelsmith/autoencoder_kl.py similarity index 100% rename from modules/pixelsmith/autoencoder_kl.py rename to scripts/pixelsmith/autoencoder_kl.py diff --git a/modules/pixelsmith/pixelsmith_pipeline.py b/scripts/pixelsmith/pixelsmith_pipeline.py similarity index 100% rename from modules/pixelsmith/pixelsmith_pipeline.py rename to scripts/pixelsmith/pixelsmith_pipeline.py diff --git a/modules/pixelsmith/vae.py b/scripts/pixelsmith/vae.py similarity index 100% rename from modules/pixelsmith/vae.py rename to scripts/pixelsmith/vae.py diff --git a/scripts/pixelsmith.py b/scripts/pixelsmith_ext.py similarity index 95% rename from scripts/pixelsmith.py rename to scripts/pixelsmith_ext.py index a9509081c..b2cd06bdd 100644 --- a/scripts/pixelsmith.py +++ b/scripts/pixelsmith_ext.py @@ -1,9 +1,9 @@ import gradio as gr from PIL import Image -from modules import scripts, processing, shared, sd_models, devices, images +from modules import scripts_manager, processing, shared, sd_models, devices, images -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None @@ -49,7 +49,7 @@ class Script(scripts.Script): supported_model_list = ['sdxl'] if shared.sd_model_type not in supported_model_list: shared.log.warning(f'PixelSmith: class={shared.sd_model.__class__.__name__} model={shared.sd_model_type} required={supported_model_list}') - from modules.pixelsmith import PixelSmithXLPipeline, PixelSmithVAE + from scripts.pixelsmith import PixelSmithXLPipeline, PixelSmithVAE self.orig_pipe = shared.sd_model self.orig_vae = shared.sd_model.vae if self.vae is None: diff --git a/scripts/poor_mans_outpainting.py b/scripts/poor_mans_outpainting.py index 690dd1911..667ec6853 100644 --- a/scripts/poor_mans_outpainting.py +++ b/scripts/poor_mans_outpainting.py @@ -1,13 +1,12 @@ import math import gradio as gr from PIL import Image, ImageDraw -import modules.scripts as scripts -from modules import images, devices +from modules import images, devices, scripts_manager from modules.processing import Processed, process_images from modules.shared import opts, state, log -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "Outpainting alternative" diff --git a/scripts/prompt_enhance.py b/scripts/prompt_enhance.py index 26981f812..077d8959c 100644 --- a/scripts/prompt_enhance.py +++ b/scripts/prompt_enhance.py @@ -8,7 +8,7 @@ import torch import transformers import gradio as gr from PIL import Image -from modules import scripts, shared, devices, errors, processing, sd_models, sd_modules +from modules import scripts_manager, shared, devices, errors, processing, sd_models, sd_modules debug_enabled = os.environ.get('SD_LLM_DEBUG', None) is not None @@ -83,7 +83,7 @@ class Options: thinking_mode: bool = False -class Script(scripts.Script): +class Script(scripts_manager.Script): prompt: gr.Textbox = None image: gr.Image = None model: str = None @@ -96,7 +96,7 @@ class Script(scripts.Script): return 'Prompt enhance' def show(self, _is_img2img): - return scripts.AlwaysVisible + return scripts_manager.AlwaysVisible def load(self, name:str=None, model_repo:str=None, model_gguf:str=None, model_type:str=None, model_file:str=None): name = name or self.options.default @@ -515,4 +515,3 @@ class Script(scripts.Script): ) p.extra_generation_params['LLM'] = llm_model shared.state.end() - diff --git a/scripts/prompt_matrix.py b/scripts/prompt_matrix.py index 37cc2795c..05f007ba0 100644 --- a/scripts/prompt_matrix.py +++ b/scripts/prompt_matrix.py @@ -1,7 +1,6 @@ import math import gradio as gr -import modules.scripts as scripts -from modules import images +from modules import images, scripts_manager from modules.processing import process_images from modules.shared import opts, state, log import modules.sd_samplers @@ -21,7 +20,7 @@ def draw_xy_grid(xs, ys, x_label, y_label, cell): for ix, x in enumerate(xs): state.job = f"{ix + iy * len(xs) + 1} out of {len(xs) * len(ys)}" - processed, t = cell(x, y) + processed, _t = cell(x, y) if first_processed is None: first_processed = processed @@ -37,7 +36,7 @@ def draw_xy_grid(xs, ys, x_label, y_label, cell): return first_processed -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "Prompt matrix" diff --git a/scripts/prompts_from_file.py b/scripts/prompts_from_file.py index eac66b418..6e55a8ebb 100644 --- a/scripts/prompts_from_file.py +++ b/scripts/prompts_from_file.py @@ -2,8 +2,7 @@ import copy import random import shlex import gradio as gr -import modules.scripts as scripts -from modules import sd_samplers, errors +from modules import sd_samplers, errors, scripts_manager from modules.processing import Processed, process_images from modules.shared import state, log @@ -94,7 +93,7 @@ def load_prompt_file(file): return None, "\n".join(lines), gr.update(lines=7) -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "Prompts from file" diff --git a/modules/pulid/__init__.py b/scripts/pulid/__init__.py similarity index 100% rename from modules/pulid/__init__.py rename to scripts/pulid/__init__.py diff --git a/modules/pulid/attention_processor.py b/scripts/pulid/attention_processor.py similarity index 100% rename from modules/pulid/attention_processor.py rename to scripts/pulid/attention_processor.py diff --git a/modules/pulid/encoders_transformer.py b/scripts/pulid/encoders_transformer.py similarity index 100% rename from modules/pulid/encoders_transformer.py rename to scripts/pulid/encoders_transformer.py diff --git a/modules/pulid/eva_clip/__init__.py b/scripts/pulid/eva_clip/__init__.py similarity index 100% rename from modules/pulid/eva_clip/__init__.py rename to scripts/pulid/eva_clip/__init__.py diff --git a/modules/pulid/eva_clip/bpe_simple_vocab_16e6.txt.gz b/scripts/pulid/eva_clip/bpe_simple_vocab_16e6.txt.gz similarity index 100% rename from modules/pulid/eva_clip/bpe_simple_vocab_16e6.txt.gz rename to scripts/pulid/eva_clip/bpe_simple_vocab_16e6.txt.gz diff --git a/modules/pulid/eva_clip/constants.py b/scripts/pulid/eva_clip/constants.py similarity index 100% rename from modules/pulid/eva_clip/constants.py rename to scripts/pulid/eva_clip/constants.py diff --git a/modules/pulid/eva_clip/eva_vit_model.py b/scripts/pulid/eva_clip/eva_vit_model.py similarity index 100% rename from modules/pulid/eva_clip/eva_vit_model.py rename to scripts/pulid/eva_clip/eva_vit_model.py diff --git a/modules/pulid/eva_clip/factory.py b/scripts/pulid/eva_clip/factory.py similarity index 100% rename from modules/pulid/eva_clip/factory.py rename to scripts/pulid/eva_clip/factory.py diff --git a/modules/pulid/eva_clip/hf_configs.py b/scripts/pulid/eva_clip/hf_configs.py similarity index 100% rename from modules/pulid/eva_clip/hf_configs.py rename to scripts/pulid/eva_clip/hf_configs.py diff --git a/modules/pulid/eva_clip/hf_model.py b/scripts/pulid/eva_clip/hf_model.py similarity index 100% rename from modules/pulid/eva_clip/hf_model.py rename to scripts/pulid/eva_clip/hf_model.py diff --git a/modules/pulid/eva_clip/loss.py b/scripts/pulid/eva_clip/loss.py similarity index 100% rename from modules/pulid/eva_clip/loss.py rename to scripts/pulid/eva_clip/loss.py diff --git a/modules/pulid/eva_clip/model.py b/scripts/pulid/eva_clip/model.py similarity index 100% rename from modules/pulid/eva_clip/model.py rename to scripts/pulid/eva_clip/model.py diff --git a/modules/pulid/eva_clip/model_configs/EVA01-CLIP-B-16.json b/scripts/pulid/eva_clip/model_configs/EVA01-CLIP-B-16.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA01-CLIP-B-16.json rename to scripts/pulid/eva_clip/model_configs/EVA01-CLIP-B-16.json diff --git a/modules/pulid/eva_clip/model_configs/EVA01-CLIP-g-14-plus.json b/scripts/pulid/eva_clip/model_configs/EVA01-CLIP-g-14-plus.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA01-CLIP-g-14-plus.json rename to scripts/pulid/eva_clip/model_configs/EVA01-CLIP-g-14-plus.json diff --git a/modules/pulid/eva_clip/model_configs/EVA01-CLIP-g-14.json b/scripts/pulid/eva_clip/model_configs/EVA01-CLIP-g-14.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA01-CLIP-g-14.json rename to scripts/pulid/eva_clip/model_configs/EVA01-CLIP-g-14.json diff --git a/modules/pulid/eva_clip/model_configs/EVA02-CLIP-B-16.json b/scripts/pulid/eva_clip/model_configs/EVA02-CLIP-B-16.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA02-CLIP-B-16.json rename to scripts/pulid/eva_clip/model_configs/EVA02-CLIP-B-16.json diff --git a/modules/pulid/eva_clip/model_configs/EVA02-CLIP-L-14-336.json b/scripts/pulid/eva_clip/model_configs/EVA02-CLIP-L-14-336.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA02-CLIP-L-14-336.json rename to scripts/pulid/eva_clip/model_configs/EVA02-CLIP-L-14-336.json diff --git a/modules/pulid/eva_clip/model_configs/EVA02-CLIP-L-14.json b/scripts/pulid/eva_clip/model_configs/EVA02-CLIP-L-14.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA02-CLIP-L-14.json rename to scripts/pulid/eva_clip/model_configs/EVA02-CLIP-L-14.json diff --git a/modules/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14-plus.json b/scripts/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14-plus.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14-plus.json rename to scripts/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14-plus.json diff --git a/modules/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14.json b/scripts/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14.json similarity index 100% rename from modules/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14.json rename to scripts/pulid/eva_clip/model_configs/EVA02-CLIP-bigE-14.json diff --git a/modules/pulid/eva_clip/modified_resnet.py b/scripts/pulid/eva_clip/modified_resnet.py similarity index 100% rename from modules/pulid/eva_clip/modified_resnet.py rename to scripts/pulid/eva_clip/modified_resnet.py diff --git a/modules/pulid/eva_clip/openai.py b/scripts/pulid/eva_clip/openai.py similarity index 100% rename from modules/pulid/eva_clip/openai.py rename to scripts/pulid/eva_clip/openai.py diff --git a/modules/pulid/eva_clip/pretrained.py b/scripts/pulid/eva_clip/pretrained.py similarity index 100% rename from modules/pulid/eva_clip/pretrained.py rename to scripts/pulid/eva_clip/pretrained.py diff --git a/modules/pulid/eva_clip/rope.py b/scripts/pulid/eva_clip/rope.py similarity index 100% rename from modules/pulid/eva_clip/rope.py rename to scripts/pulid/eva_clip/rope.py diff --git a/modules/pulid/eva_clip/timm_model.py b/scripts/pulid/eva_clip/timm_model.py similarity index 100% rename from modules/pulid/eva_clip/timm_model.py rename to scripts/pulid/eva_clip/timm_model.py diff --git a/modules/pulid/eva_clip/tokenizer.py b/scripts/pulid/eva_clip/tokenizer.py similarity index 100% rename from modules/pulid/eva_clip/tokenizer.py rename to scripts/pulid/eva_clip/tokenizer.py diff --git a/modules/pulid/eva_clip/transform.py b/scripts/pulid/eva_clip/transform.py similarity index 100% rename from modules/pulid/eva_clip/transform.py rename to scripts/pulid/eva_clip/transform.py diff --git a/modules/pulid/eva_clip/transformer.py b/scripts/pulid/eva_clip/transformer.py similarity index 100% rename from modules/pulid/eva_clip/transformer.py rename to scripts/pulid/eva_clip/transformer.py diff --git a/modules/pulid/eva_clip/utils.py b/scripts/pulid/eva_clip/utils.py similarity index 100% rename from modules/pulid/eva_clip/utils.py rename to scripts/pulid/eva_clip/utils.py diff --git a/modules/pulid/pulid_sampling.py b/scripts/pulid/pulid_sampling.py similarity index 100% rename from modules/pulid/pulid_sampling.py rename to scripts/pulid/pulid_sampling.py diff --git a/modules/pulid/pulid_sdxl.py b/scripts/pulid/pulid_sdxl.py similarity index 99% rename from modules/pulid/pulid_sdxl.py rename to scripts/pulid/pulid_sdxl.py index 18bf0eb1c..e964e58fe 100644 --- a/modules/pulid/pulid_sdxl.py +++ b/scripts/pulid/pulid_sdxl.py @@ -123,7 +123,7 @@ class StableDiffusionXLPuLIDPipeline: if sampler is not None: self.sampler = sampler else: - from modules.pulid import sampling + from scripts.pulid import sampling self.sampler = sampling.sample_dpmpp_sde @property diff --git a/modules/pulid/pulid_utils.py b/scripts/pulid/pulid_utils.py similarity index 100% rename from modules/pulid/pulid_utils.py rename to scripts/pulid/pulid_utils.py diff --git a/scripts/pulid_ext.py b/scripts/pulid_ext.py index f000bc43a..5fc186c57 100644 --- a/scripts/pulid_ext.py +++ b/scripts/pulid_ext.py @@ -4,7 +4,7 @@ import time import contextlib import gradio as gr from PIL import Image -from modules import shared, devices, errors, scripts, processing, processing_helpers, sd_models +from modules import shared, devices, errors, scripts_manager, processing, processing_helpers, sd_models debug = os.environ.get('SD_PULID_DEBUG', None) is not None @@ -13,7 +13,7 @@ registered = False uploaded_images = [] -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): self.pulid = None self.cache = None @@ -144,7 +144,7 @@ class Script(scripts.Script): if self.pulid is None: self.dependencies() try: - from modules import pulid # pylint: disable=redefined-outer-name + from scripts import pulid # pylint: disable=redefined-outer-name self.pulid = pulid from diffusers import pipelines pipelines.auto_pipeline.AUTO_TEXT2IMAGE_PIPELINES_MAPPING["pulid"] = pulid.StableDiffusionXLPuLIDPipeline diff --git a/scripts/regional_prompting.py b/scripts/regional_prompting.py index 5016d6e2f..ba92364ec 100644 --- a/scripts/regional_prompting.py +++ b/scripts/regional_prompting.py @@ -3,7 +3,7 @@ import gradio as gr from diffusers.pipelines import pipeline_utils -from modules import shared, devices, scripts, processing, sd_models, prompt_parser_diffusers +from modules import shared, devices, scripts_manager, processing, sd_models, prompt_parser_diffusers def hijack_register_modules(self, **kwargs): @@ -21,7 +21,7 @@ def hijack_register_modules(self, **kwargs): setattr(self, name, module) -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Regional prompting' @@ -45,7 +45,7 @@ class Script(scripts.Script): def run(self, p: processing.StableDiffusionProcessing, mode, grid, power, threshold): # pylint: disable=arguments-differ if mode is None or mode == 'None': - return + return None # backup pipeline and params orig_pipeline = shared.sd_model orig_dtype = devices.dtype @@ -53,7 +53,7 @@ class Script(scripts.Script): # create pipeline if shared.sd_model_type != 'sd': shared.log.error(f'Regional prompting: incorrect base model: {shared.sd_model.__class__.__name__}') - return + return None pipeline_utils.DiffusionPipeline.register_modules = hijack_register_modules prompt_parser_diffusers.EmbeddingsProvider._encode_token_ids_to_embeddings = prompt_parser_diffusers.orig_encode_token_ids_to_embeddings # pylint: disable=protected-access @@ -62,7 +62,7 @@ class Script(scripts.Script): if shared.sd_model.__class__.__name__ != 'RegionalPromptingStableDiffusionPipeline': # switch failed shared.log.error(f'Regional prompting: not a tiling pipeline: {shared.sd_model.__class__.__name__}') shared.sd_model = orig_pipeline - return + return None sd_models.set_diffuser_options(shared.sd_model) shared.opts.data['prompt_attention'] = 'fixed' # this pipeline is not compatible with embeds processing.fix_seed(p) diff --git a/scripts/resadapter.py b/scripts/resadapter.py index 58162f9ab..45e2900b0 100644 --- a/scripts/resadapter.py +++ b/scripts/resadapter.py @@ -1,7 +1,7 @@ from safetensors.torch import load_file from huggingface_hub import hf_hub_download import gradio as gr -from modules import scripts, processing, shared, sd_models, devices +from modules import scripts_manager, processing, shared, sd_models, devices repo = 'jiaxiangc/res-adapter' @@ -17,7 +17,7 @@ models = { 'SDXL v1 interpolation': 'resadapter_v1_sdxl_interpolation', } -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'ResAdapter: Domain Consistent Resolution' diff --git a/scripts/sd_upscale.py b/scripts/sd_upscale.py index 7ac31b603..3665bcfc5 100644 --- a/scripts/sd_upscale.py +++ b/scripts/sd_upscale.py @@ -1,13 +1,12 @@ import math import gradio as gr from PIL import Image -import modules.scripts as scripts -from modules import processing, shared, images, devices +from modules import processing, shared, images, devices, scripts_manager from modules.processing import Processed from modules.shared import opts, state, log -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return "SD Upscale" diff --git a/scripts/skip_layer_guidance.py b/scripts/skip_layer_guidance.py index 4196db037..e1b2add37 100644 --- a/scripts/skip_layer_guidance.py +++ b/scripts/skip_layer_guidance.py @@ -1,12 +1,12 @@ import sys import gradio as gr -from modules import scripts, processing, shared +from modules import scripts_manager, processing, shared registered = False -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.register() diff --git a/scripts/softfill.py b/scripts/softfill.py index 7b90a845d..821b4386b 100644 --- a/scripts/softfill.py +++ b/scripts/softfill.py @@ -1604,10 +1604,10 @@ class StableDiffusionXLSoftFillPipeline( import gradio as gr from installer import install -from modules import shared, scripts, processing, sd_models +from modules import shared, scripts_manager, processing, sd_models -class Script(scripts.Script): +class Script(scripts_manager.Script): orig_pipeline = None def title(self): diff --git a/scripts/stablevideodiffusion.py b/scripts/stablevideodiffusion.py index 20b302ff6..1d581eba7 100644 --- a/scripts/stablevideodiffusion.py +++ b/scripts/stablevideodiffusion.py @@ -5,7 +5,7 @@ Additional params for StableVideoDiffusion import os import torch import gradio as gr -from modules import scripts, processing, shared, sd_models, images, modelloader +from modules import scripts_manager, processing, shared, sd_models, images, modelloader models = { @@ -14,7 +14,7 @@ models = { "SVD XT 1.1": "stabilityai/stable-video-diffusion-img2vid-xt-1-1", } -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: Stable Video Diffusion' @@ -62,7 +62,7 @@ class Script(scripts.Script): if model_name != model_loaded or c != 'StableVideoDiffusionPipeline': shared.opts.sd_model_checkpoint = model_path sd_models.reload_model_weights() - shared.sd_model = shared.sd_model.to(torch.float32) # TODO svd: runs in fp32 due to dtype mismatch + shared.sd_model = shared.sd_model.to(torch.float32) # must run in fp32 due to dtype mismatch # set params if override_resolution: diff --git a/modules/style_aligned/inversion.py b/scripts/style_aligned/inversion.py similarity index 100% rename from modules/style_aligned/inversion.py rename to scripts/style_aligned/inversion.py diff --git a/modules/style_aligned/sa_handler.py b/scripts/style_aligned/sa_handler.py similarity index 100% rename from modules/style_aligned/sa_handler.py rename to scripts/style_aligned/sa_handler.py diff --git a/scripts/style_aligned.py b/scripts/style_aligned_ext.py similarity index 96% rename from scripts/style_aligned.py rename to scripts/style_aligned_ext.py index 7e236972c..75e586971 100644 --- a/scripts/style_aligned.py +++ b/scripts/style_aligned_ext.py @@ -2,7 +2,7 @@ import gradio as gr import torch import numpy as np import diffusers -from modules import scripts, processing, shared, devices +from modules import scripts_manager, processing, shared, devices handler = None @@ -11,7 +11,7 @@ supported_model_list = ['sdxl'] orig_prompt_attention = None -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Style Aligned Image Generation' @@ -27,9 +27,9 @@ class Script(scripts.Script): def preset(self, preset): if preset == 'text': return [['attention', 'adain_queries', 'adain_keys'], 1.0, 0, 0.0] - if preset == 'image': + elif preset == 'image': return [['group_norm', 'layer_norm', 'attention', 'adain_queries', 'adain_keys'], 1.0, 2, 0.0] - if preset == 'all': + else: return [['group_norm', 'layer_norm', 'attention', 'adain_queries', 'adain_keys', 'adain_values', 'full_attention_share'], 1.0, 1, 0.5] def ui(self, _is_img2img): # ui elements @@ -64,7 +64,7 @@ class Script(scripts.Script): shared.log.warning(f'SA: class={shared.sd_model.__class__.__name__} model={shared.sd_model_type} required={supported_model_list}') return None - from modules.style_aligned import sa_handler, inversion + from scripts.style_aligned import sa_handler, inversion handler = sa_handler.Handler(shared.sd_model) sa_args = sa_handler.StyleAlignedArgs( @@ -108,6 +108,7 @@ class Script(scripts.Script): p.task_args['callback_on_step_end'] = inversion_callback shared.log.info(f'SA: batch={p.batch_size} type={"image" if zts is not None else "text"} config={sa_args.__dict__}') + return None def after(self, p: processing.StableDiffusionProcessing, *args): # pylint: disable=unused-argument global handler # pylint: disable=global-statement diff --git a/scripts/t_gate.py b/scripts/t_gate.py index 3808a796d..7bce40c59 100644 --- a/scripts/t_gate.py +++ b/scripts/t_gate.py @@ -1,9 +1,9 @@ import gradio as gr -from modules import scripts, processing, shared, sd_models, devices +from modules import scripts_manager, processing, shared, sd_models, devices from installer import install -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'T-Gate: Accelerate via Gating Attention' diff --git a/scripts/text2video.py b/scripts/text2video.py index 4a5f71f2e..3a6146280 100644 --- a/scripts/text2video.py +++ b/scripts/text2video.py @@ -7,7 +7,7 @@ TODO text2video items: """ import gradio as gr -from modules import scripts, processing, shared, images, sd_models, modelloader +from modules import scripts_manager, processing, shared, images, sd_models, modelloader MODELS = [ @@ -21,7 +21,7 @@ MODELS = [ ] -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'Video: ModelScope' @@ -55,7 +55,7 @@ class Script(scripts.Script): def run(self, p: processing.StableDiffusionProcessing, model_name, use_default, num_frames, video_type, duration, gif_loop, mp4_pad, mp4_interpolate): # pylint: disable=arguments-differ, unused-argument if model_name == 'None': - return + return None model = [m for m in MODELS if m['name'] == model_name][0] shared.log.debug(f'Text2Video: model={model} defaults={use_default} frames={num_frames}, video={video_type} duration={duration} loop={gif_loop} pad={mp4_pad} interpolate={mp4_interpolate}') @@ -69,7 +69,7 @@ class Script(scripts.Script): sd_models.list_models() if checkpoint is None: shared.log.error(f'Text2Video: failed to find model={model["path"]}') - return + return None shared.log.debug(f'Text2Video loading: model={checkpoint}') shared.opts.sd_model_checkpoint = checkpoint.name sd_models.reload_model_weights(op='model') @@ -84,7 +84,7 @@ class Script(scripts.Script): p.task_args['num_frames'] = num_frames else: shared.log.error('Text2Video: invalid number of frames') - return + return None shared.sd_model = sd_models.set_diffuser_pipe(shared.sd_model, sd_models.DiffusersTaskType.TEXT_2_IMAGE) shared.log.debug(f'Text2Video: args={p.task_args}') diff --git a/scripts/tiling.py b/scripts/tiling.py index 60c234dcf..8c76119d4 100644 --- a/scripts/tiling.py +++ b/scripts/tiling.py @@ -6,7 +6,7 @@ from diffusers.models.lora import LoRACompatibleConv from torch import Tensor from torch.nn import functional as F from torch.nn.modules.utils import _pair -from modules import scripts, processing, shared +from modules import scripts_manager, processing, shared modex = 'constant' @@ -21,7 +21,7 @@ def asymmetricConv2DConvForward(self, input: Tensor, weight: Tensor, bias: Optio return F.conv2d(working, weight, bias, self.stride, _pair(0), self.dilation, self.groups) -class Script(scripts.Script): +class Script(scripts_manager.Script): def __init__(self): super().__init__() self.orig_pipe = None @@ -71,7 +71,7 @@ class Script(scripts.Script): cl._orig_conv_forward = cl._conv_forward # pylint: disable=protected-access cl._conv_forward = asymmetricConv2DConvForward.__get__(cl, torch.nn.Conv2d) # pylint: disable=protected-access, no-value-for-parameter shared.log.info(f'Tiling: x={tilex}:{numx} y={tiley}:{numy}') - + return None def after(self, p: processing.StableDiffusionProcessing, processed: processing.Processed, tilex:bool=False, numx:int=1, tiley:bool=False, numy:int=1): # pylint: disable=arguments-differ, unused-argument if len(self.conv_layers) == 0: diff --git a/modules/xadapter/adapter.py b/scripts/xadapter/adapter.py similarity index 100% rename from modules/xadapter/adapter.py rename to scripts/xadapter/adapter.py diff --git a/modules/xadapter/pipeline_sd_xl_adapter.py b/scripts/xadapter/pipeline_sd_xl_adapter.py similarity index 100% rename from modules/xadapter/pipeline_sd_xl_adapter.py rename to scripts/xadapter/pipeline_sd_xl_adapter.py diff --git a/modules/xadapter/pipeline_sd_xl_adapter_controlnet.py b/scripts/xadapter/pipeline_sd_xl_adapter_controlnet.py similarity index 100% rename from modules/xadapter/pipeline_sd_xl_adapter_controlnet.py rename to scripts/xadapter/pipeline_sd_xl_adapter_controlnet.py diff --git a/modules/xadapter/pipeline_sd_xl_adapter_controlnet_img2img.py b/scripts/xadapter/pipeline_sd_xl_adapter_controlnet_img2img.py similarity index 100% rename from modules/xadapter/pipeline_sd_xl_adapter_controlnet_img2img.py rename to scripts/xadapter/pipeline_sd_xl_adapter_controlnet_img2img.py diff --git a/modules/xadapter/unet_adapter.py b/scripts/xadapter/unet_adapter.py similarity index 100% rename from modules/xadapter/unet_adapter.py rename to scripts/xadapter/unet_adapter.py diff --git a/modules/xadapter/utils.py b/scripts/xadapter/utils.py similarity index 100% rename from modules/xadapter/utils.py rename to scripts/xadapter/utils.py diff --git a/modules/xadapter/xadapter_hijacks.py b/scripts/xadapter/xadapter_hijacks.py similarity index 100% rename from modules/xadapter/xadapter_hijacks.py rename to scripts/xadapter/xadapter_hijacks.py diff --git a/scripts/x_adapter.py b/scripts/xadapter_ext.py similarity index 94% rename from scripts/x_adapter.py rename to scripts/xadapter_ext.py index 08874aac9..fdd5dc470 100644 --- a/scripts/x_adapter.py +++ b/scripts/xadapter_ext.py @@ -4,13 +4,13 @@ import torch import diffusers import gradio as gr import huggingface_hub as hf -from modules import errors, shared, devices, scripts, processing, sd_models, sd_samplers +from modules import errors, shared, devices, scripts_manager, processing, sd_models, sd_samplers adapter = None -class Script(scripts.Script): +class Script(scripts_manager.Script): def title(self): return 'X-Adapter' @@ -35,11 +35,11 @@ class Script(scripts.Script): return model, sampler, width, height, start, scale, lora def run(self, p: processing.StableDiffusionProcessing, model, sampler, width, height, start, scale, lora): # pylint: disable=arguments-differ, unused-argument - from modules.xadapter.xadapter_hijacks import PositionNet + from scripts.xadapter.xadapter_hijacks import PositionNet diffusers.models.embeddings.PositionNet = PositionNet # patch diffusers==0.26 from diffusers==0.20 - from modules.xadapter.adapter import Adapter_XL - from modules.xadapter.pipeline_sd_xl_adapter import StableDiffusionXLAdapterPipeline - from modules.xadapter.unet_adapter import UNet2DConditionModel as UNet2DConditionModelAdapter + from scripts.xadapter.adapter import Adapter_XL + from scripts.xadapter.pipeline_sd_xl_adapter import StableDiffusionXLAdapterPipeline + from scripts.xadapter.unet_adapter import UNet2DConditionModel as UNet2DConditionModelAdapter global adapter # pylint: disable=global-statement if model == 'None': diff --git a/scripts/xyz_grid.py b/scripts/xyz_grid.py index c79ce6909..22938e3d8 100644 --- a/scripts/xyz_grid.py +++ b/scripts/xyz_grid.py @@ -14,7 +14,7 @@ from scripts.xyz_grid_shared import str_permutations, list_to_csv_string, re_ran from scripts.xyz_grid_classes import axis_options, AxisOption, SharedSettingsStackHelper # pylint: disable=no-name-in-module from scripts.xyz_grid_draw import draw_xyz_grid # pylint: disable=no-name-in-module from scripts.xyz_grid_shared import apply_field, apply_task_args, apply_setting, apply_prompt, apply_order, apply_sampler, apply_hr_sampler_name, confirm_samplers, apply_checkpoint, apply_refiner, apply_unet, apply_dict, apply_clip_skip, apply_vae, list_lora, apply_lora, apply_lora_strength, apply_te, apply_styles, apply_upscaler, apply_context, apply_detailer, apply_override, apply_processing, apply_options, apply_seed, format_value_add_label, format_value, format_value_join_list, do_nothing, format_nothing # pylint: disable=no-name-in-module, unused-import -from modules import shared, errors, scripts, images, processing +from modules import shared, errors, scripts_manager, images, processing from modules.ui_components import ToolButton from modules.ui_sections import create_video_inputs import modules.ui_symbols as symbols @@ -23,7 +23,7 @@ import modules.ui_symbols as symbols debug = shared.log.trace if os.environ.get('SD_XYZ_DEBUG', None) is not None else lambda *args, **kwargs: None -class Script(scripts.Script): +class Script(scripts_manager.Script): current_axis_options = [] def title(self): diff --git a/scripts/xyz_grid_classes.py b/scripts/xyz_grid_classes.py index 289059afb..7f7209605 100644 --- a/scripts/xyz_grid_classes.py +++ b/scripts/xyz_grid_classes.py @@ -24,7 +24,7 @@ class AxisOptionTxt2Img(AxisOption): self.is_img2img = False -class SharedSettingsStackHelper(object): +class SharedSettingsStackHelper(): sd_model_checkpoint = None sd_model_refiner = None sd_model_dict = None diff --git a/scripts/xyz_grid_on.py b/scripts/xyz_grid_on.py index 5e070ce8b..c9e2755e2 100644 --- a/scripts/xyz_grid_on.py +++ b/scripts/xyz_grid_on.py @@ -13,7 +13,7 @@ import gradio as gr from scripts.xyz_grid_shared import str_permutations, list_to_csv_string, re_range # pylint: disable=no-name-in-module from scripts.xyz_grid_classes import axis_options, AxisOption, SharedSettingsStackHelper # pylint: disable=no-name-in-module from scripts.xyz_grid_draw import draw_xyz_grid # pylint: disable=no-name-in-module -from modules import shared, errors, scripts, images, processing +from modules import shared, errors, scripts_manager, images, processing from modules.ui_components import ToolButton from modules.ui_sections import create_video_inputs import modules.ui_symbols as symbols @@ -24,11 +24,11 @@ xyz_results_cache = None debug = shared.log.trace if os.environ.get('SD_XYZ_DEBUG', None) is not None else lambda *args, **kwargs: None -class Script(scripts.Script): +class Script(scripts_manager.Script): current_axis_options = [] def show(self, is_img2img): - return scripts.AlwaysVisible + return scripts_manager.AlwaysVisible def title(self): return "XYZ Grid" @@ -178,7 +178,7 @@ class Script(scripts.Script): global active, xyz_results_cache # pylint: disable=W0603 xyz_results_cache = None if not enabled or active: - return + return None active = True if not no_fixed_seeds: processing.fix_seed(p) diff --git a/webui.py b/webui.py index 6dd8e1c40..69f9a1ade 100644 --- a/webui.py +++ b/webui.py @@ -19,7 +19,7 @@ import modules.devices import modules.sd_checkpoint import modules.sd_samplers import modules.lowvram -import modules.scripts +import modules.scripts_manager import modules.sd_models import modules.sd_vae import modules.sd_unet @@ -109,7 +109,7 @@ def initialize(): timer.startup.record("extensions") log.info('Load extensions') - t_timer, t_total = modules.scripts.load_scripts() + t_timer, t_total = modules.scripts_manager.load_scripts() timer.startup.record("extensions") timer.startup.records["extensions"] = t_total # scripts can reset the time log.debug(f'Extensions init time: {t_timer.summary()}') @@ -352,11 +352,11 @@ def start_ui(): modules.script_callbacks.app_started_callback(shared.demo, app) timer.startup.record("app-started") - time_sorted = sorted(modules.scripts.time_setup.items(), key=lambda x: x[1], reverse=True) + time_sorted = sorted(modules.scripts_manager.time_setup.items(), key=lambda x: x[1], reverse=True) time_script = [f'{k}:{round(v,3)}' for (k,v) in time_sorted if v > 0.03] - time_total = sum(modules.scripts.time_setup.values()) + time_total = sum(modules.scripts_manager.time_setup.values()) shared.log.debug(f'Scripts setup: time={time_total:.3f} {time_script}') - time_component = [f'{k}:{round(v,3)}' for (k,v) in modules.scripts.time_component.items() if v > 0.005] + time_component = [f'{k}:{round(v,3)}' for (k,v) in modules.scripts_manager.time_component.items() if v > 0.005] if len(time_component) > 0: shared.log.debug(f'Scripts components: {time_component}') return app @@ -381,10 +381,10 @@ def webui(restart=False): shared.log.debug(f'Registered callbacks: {k}={len(v)} {[c.script for c in v]}') debug = log.trace if os.environ.get('SD_SCRIPT_DEBUG', None) is not None else lambda *args, **kwargs: None debug('Trace: SCRIPTS') - for m in modules.scripts.scripts_data: + for m in modules.scripts_manager.scripts_data: debug(f' {m}') debug('Loaded postprocessing scripts:') - for m in modules.scripts.postprocessing_scripts_data: + for m in modules.scripts_manager.postprocessing_scripts_data: debug(f' {m}') modules.script_callbacks.print_timers()