diff --git a/extensions-builtin/sd-webui-controlnet b/extensions-builtin/sd-webui-controlnet index 1c994ff4f..ce2278d5b 160000 --- a/extensions-builtin/sd-webui-controlnet +++ b/extensions-builtin/sd-webui-controlnet @@ -1 +1 @@ -Subproject commit 1c994ff4f757d3d40e24d0ca367c1dfb9c717107 +Subproject commit ce2278d5bcf1801c6a2e6c3cb7bcb345c05275fe diff --git a/modules/prompt_parser.py b/modules/prompt_parser.py index bfcf314db..59647d852 100644 --- a/modules/prompt_parser.py +++ b/modules/prompt_parser.py @@ -34,7 +34,7 @@ plain: /([^\\\[\]():|]|\\.)+/ """) re_clean = re.compile(r"^\W+", re.S) re_whitespace = re.compile(r"\s+", re.S) -re_break = re.compile(r"\s*\bBREAK\b\s*", re.S) +re_break = re.compile(r"\s*\bBREAK\b|##\s*", re.S) re_attention_v2 = re.compile(r""" \(|\[|\\\(|\\\[|\\|\\\\| :([+-]?[.\d]+)| @@ -336,13 +336,13 @@ def parse_prompt_attention(text): else: parts = re.split(re_break, text) for i, part in enumerate(parts): + if i > 0: + res.append(["BREAK", -1]) if opts.prompt_attention == 'Full parser': part = re_clean.sub("", part) part = re_whitespace.sub(" ", part).strip() if len(part) == 0: continue - if i > 0: - res.append(["BREAK", -1]) res.append([part, 1.0]) for pos in round_brackets: multiply_range(pos, round_bracket_multiplier) @@ -366,7 +366,7 @@ if __name__ == "__main__": # import sys # sys.path.append(os.path.join(os.path.dirname(__file__), '..')) # input_text = "(upzero) (upone:1.1), ((uptwo:1.2)), [downzero], [downone:0.9], [[downtwo:0.8]], this is a test" - input_text = 'a (white (lion:1.4)), cat [mouse] [tiger:0.8], (high) in a jungle' + input_text = 'a (white (lion:1.4)), cat [mouse] [tiger:0.8], ##, (high) in a jungle' output_list = parse_prompt_attention(input_text) print('INPUT', input_text) print('OUTPUT', output_list) diff --git a/modules/sd_samplers_compvis.py b/modules/sd_samplers_compvis.py index 8de719323..98b0a3614 100644 --- a/modules/sd_samplers_compvis.py +++ b/modules/sd_samplers_compvis.py @@ -162,7 +162,7 @@ class VanillaStableDiffusionSampler: num_steps = shared.opts.uni_pc_order valid_step = 999 / (1000 // num_steps) if valid_step == math.floor(valid_step): - return int(valid_step) + 1 + return min(int(valid_step) + 1, num_steps) return num_steps diff --git a/modules/shared.py b/modules/shared.py index 5febe410f..ae2fe4e10 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -7,7 +7,7 @@ import urllib.request import gradio as gr import tqdm import requests -from ldm.models.diffusion.ddpm import LatentDiffusion +# from ldm.models.diffusion.ddpm import LatentDiffusion from modules import errors, ui_components, shared_items, cmd_args from modules.paths_internal import models_path, script_path, data_path, sd_configs_path, sd_default_config, sd_model_file, default_sd_model_file, extensions_dir, extensions_builtin_dir # pylint: disable=W0611 import modules.interrogate @@ -769,5 +769,6 @@ class Shared(sys.modules[__name__].__class__): import modules.sd_models # pylint: disable=W0621 modules.sd_models.model_data.set_sd_model(value) -sd_model: LatentDiffusion = None # this var is here just for IDE's type checking; it cannot be accessed because the class field above will be accessed instead +# sd_model: LatentDiffusion = None # this var is here just for IDE's type checking; it cannot be accessed because the class field above will be accessed instead +sd_model = None sys.modules[__name__].__class__ = Shared