diff options
author | Greendayle <81877451+Greendayle@users.noreply.github.com> | 2022-10-08 16:28:22 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-08 16:28:22 +0000 |
commit | 0ec80f0125a14c03ac860279f40c0c062dbde0cf (patch) | |
tree | f51f04feecca9006a6a40e622bae3d6ae997e5eb /modules/prompt_parser.py | |
parent | 01f8cb44474e454903c11718e6a4f33dbde34bb8 (diff) | |
parent | 3061cdb7b610d4ba7f1ea695d9d6364b591e5bc7 (diff) | |
download | stable-diffusion-webui-gfx803-0ec80f0125a14c03ac860279f40c0c062dbde0cf.tar.gz stable-diffusion-webui-gfx803-0ec80f0125a14c03ac860279f40c0c062dbde0cf.tar.bz2 stable-diffusion-webui-gfx803-0ec80f0125a14c03ac860279f40c0c062dbde0cf.zip |
Merge branch 'master' into dev/deepdanbooru
Diffstat (limited to 'modules/prompt_parser.py')
-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 15666073..919d5d31 100644 --- a/modules/prompt_parser.py +++ b/modules/prompt_parser.py @@ -13,13 +13,14 @@ import lark schedule_parser = lark.Lark(r"""
!start: (prompt | /[][():]/+)*
-prompt: (emphasized | scheduled | plain | WHITESPACE)*
+prompt: (emphasized | scheduled | alternate | plain | WHITESPACE)*
!emphasized: "(" prompt ")"
| "(" prompt ":" prompt ")"
| "[" prompt "]"
scheduled: "[" [prompt ":"] prompt ":" [WHITESPACE] NUMBER "]"
+alternate: "[" prompt ("|" prompt)+ "]"
WHITESPACE: /\s+/
-plain: /([^\\\[\]():]|\\.)+/
+plain: /([^\\\[\]():|]|\\.)+/
%import common.SIGNED_NUMBER -> NUMBER
""")
@@ -59,6 +60,8 @@ def get_learned_conditioning_prompt_schedules(prompts, steps): tree.children[-1] *= steps
tree.children[-1] = min(steps, int(tree.children[-1]))
l.append(tree.children[-1])
+ def alternate(self, tree):
+ l.extend(range(1, steps+1))
CollectSteps().visit(tree)
return sorted(set(l))
@@ -67,6 +70,8 @@ def get_learned_conditioning_prompt_schedules(prompts, steps): def scheduled(self, args):
before, after, _, when = args
yield before or () if step <= when else after
+ def alternate(self, args):
+ yield next(args[(step - 1)%len(args)])
def start(self, args):
def flatten(x):
if type(x) == str:
|