mirror of
				https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
				synced 2025-11-03 19:44:27 +00:00 
			
		
		
		
	Merge pull request #12319 from catboxanon/fix/alternating-words-empty
Prompt parser: Account for empty field in alternating words syntax
This commit is contained in:
		
						commit
						31a9966b9d
					
				@ -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:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user