Skip to content

Commit b6596cd

Browse files
authored
Prompt parser: account for empty field in alternating words syntax
1 parent 682ff89 commit b6596cd

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

‎modules/prompt_parser.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
| "(" prompt ":" prompt ")"
2121
| "[" prompt "]"
2222
scheduled: "[" [prompt ":"] prompt ":" [WHITESPACE] NUMBER [WHITESPACE] "]"
23-
alternate: "[" prompt ("|" prompt)+ "]"
23+
alternate: "[" prompt ("|" [prompt])+ "]"
2424
WHITESPACE: /\s+/
2525
plain: /([^\\\[\]():|]|\\.)+/
2626
%import common.SIGNED_NUMBER -> NUMBER
@@ -53,6 +53,10 @@ def get_learned_conditioning_prompt_schedules(prompts, steps):
5353
[[3, '((a][:b:c '], [10, '((a][:b:c d']]
5454
>>> g("[a|(b:1.1)]")
5555
[[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)']]
56+
>>> g("[fe|]male")
57+
[[1, 'female'], [2, 'male'], [3, 'female'], [4, 'male'], [5, 'female'], [6, 'male'], [7, 'female'], [8, 'male'], [9, 'female'], [10, 'male']]
58+
>>> g("[fe|||]male")
59+
[[1, 'female'], [2, 'male'], [3, 'male'], [4, 'male'], [5, 'female'], [6, 'male'], [7, 'male'], [8, 'male'], [9, 'female'], [10, 'male']]
5660
"""
5761

5862
def collect_steps(steps, tree):
@@ -78,7 +82,8 @@ def scheduled(self, args):
7882
before, after, _, when, _ = args
7983
yield before or () if step <= when else after
8084
def alternate(self, args):
81-
yield next(args[(step - 1)%len(args)])
85+
args = ["" if not arg else arg for arg in args]
86+
yield args[(step - 1) % len(args)]
8287
def start(self, args):
8388
def flatten(x):
8489
if type(x) == str:

0 commit comments

Comments
 (0)