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()