diff options
author | catboxanon <122327233+catboxanon@users.noreply.github.com> | 2023-08-04 17:26:37 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 17:26:37 +0000 |
commit | b6596cdb19414cdb31a762e4c4ffbdce17d2d6e9 (patch) | |
tree | 50c00121221d752d9fdfd1f33187a79b8961cf0b /modules | |
parent | 682ff8936df018330e0d2a259794a262dc3251b2 (diff) | |
download | stable-diffusion-webui-gfx803-b6596cdb19414cdb31a762e4c4ffbdce17d2d6e9.tar.gz stable-diffusion-webui-gfx803-b6596cdb19414cdb31a762e4c4ffbdce17d2d6e9.tar.bz2 stable-diffusion-webui-gfx803-b6596cdb19414cdb31a762e4c4ffbdce17d2d6e9.zip |
Prompt parser: account for empty field in alternating words syntax
Diffstat (limited to 'modules')
-rw-r--r-- | modules/prompt_parser.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/modules/prompt_parser.py b/modules/prompt_parser.py index 8169a459..32d214e3 100644 --- a/modules/prompt_parser.py +++ b/modules/prompt_parser.py @@ -20,7 +20,7 @@ prompt: (emphasized | scheduled | alternate | plain | WHITESPACE)* | "(" prompt ":" prompt ")"
| "[" prompt "]"
scheduled: "[" [prompt ":"] prompt ":" [WHITESPACE] NUMBER [WHITESPACE] "]"
-alternate: "[" prompt ("|" prompt)+ "]"
+alternate: "[" prompt ("|" [prompt])+ "]"
WHITESPACE: /\s+/
plain: /([^\\\[\]():|]|\\.)+/
%import common.SIGNED_NUMBER -> NUMBER
@@ -53,6 +53,10 @@ def get_learned_conditioning_prompt_schedules(prompts, steps): [[3, '((a][:b:c '], [10, '((a][:b:c d']]
>>> g("[a|(b:1.1)]")
[[1, 'a'], [2, '(b:1.1)'], [3, 'a'], [4, '(b:1.1)'], [5, 'a'], [6, '(b:1.1)'], [7, 'a'], [8, '(b:1.1)'], [9, 'a'], [10, '(b:1.1)']]
+ >>> g("[fe|]male")
+ [[1, 'female'], [2, 'male'], [3, 'female'], [4, 'male'], [5, 'female'], [6, 'male'], [7, 'female'], [8, 'male'], [9, 'female'], [10, 'male']]
+ >>> g("[fe|||]male")
+ [[1, 'female'], [2, 'male'], [3, 'male'], [4, 'male'], [5, 'female'], [6, 'male'], [7, 'male'], [8, 'male'], [9, 'female'], [10, 'male']]
"""
def collect_steps(steps, tree):
@@ -78,7 +82,8 @@ def get_learned_conditioning_prompt_schedules(prompts, steps): before, after, _, when, _ = args
yield before or () if step <= when else after
def alternate(self, args):
- yield next(args[(step - 1)%len(args)])
+ args = ["" if not arg else arg for arg in args]
+ yield args[(step - 1) % len(args)]
def start(self, args):
def flatten(x):
if type(x) == str:
|