sd-dynamic-prompts icon indicating copy to clipboard operation
sd-dynamic-prompts copied to clipboard

Trying to pick randomly from all wildcards in wildcards folder. "__*__" works, but "{x$$__*__}" doesn't.

Open Gushousekai195 opened this issue 2 years ago • 9 comments

This is the error I get when trying

Error running process: C:\Users\mattb\stable-diffusion-webui\extensions\sd-dynamic-prompts\scripts\dynamic_prompting.py
Traceback (most recent call last):
  File "C:\Users\mattb\stable-diffusion-webui\modules\scripts.py", line 451, in process
    script.process(p, *script_args)
  File "C:\Users\mattb\stable-diffusion-webui\extensions\sd-dynamic-prompts\sd_dynamic_prompts\dynamic_prompting.py", line 482, in process
    all_prompts, all_negative_prompts = generate_prompts(
  File "C:\Users\mattb\stable-diffusion-webui\extensions\sd-dynamic-prompts\sd_dynamic_prompts\helpers.py", line 93, in generate_prompts
    all_prompts = prompt_generator.generate(prompt, num_prompts, seeds=seeds) or [""]
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\generators\randomprompt.py", line 71, in generate
    prompts.append(next(iter(gen)))
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\base.py", line 75, in _get_sequence
    yield rotate_and_join(sub_generators, separator=command.separator)
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\utils.py", line 43, in rotate_and_join
    return separator.join(rotate_all(generators))
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\utils.py", line 35, in rotate_all
    return [next(gen) for gen in generators]
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\utils.py", line 35, in <listcomp>
    return [next(gen) for gen in generators]
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\random.py", line 64, in _get_variant
    wildcard_variant = wildcard_to_variant(
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\utils.py", line 25, in wildcard_to_variant
    variant_options = [
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\utils.py", line 26, in <listcomp>
    VariantOption(parse(v, parser_config=context.parser_config)) for v in values
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\parser\parse.py", line 454, in parse
    tokens = get_cached_parser(parser_config).parse_string(
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\pyparsing\core.py", line 1190, in parse_string
    raise exc.with_traceback(None)
pyparsing.exceptions.ParseException: Expected end of text, found '_'  (at char 19), (line:1, col:20)

Gushousekai195 avatar Jul 26 '23 21:07 Gushousekai195

Thanks, looks like a parser bug

adieyal avatar Aug 02 '23 06:08 adieyal

This is the error I get when trying

Error running process: C:\Users\mattb\stable-diffusion-webui\extensions\sd-dynamic-prompts\scripts\dynamic_prompting.py
Traceback (most recent call last):
  File "C:\Users\mattb\stable-diffusion-webui\modules\scripts.py", line 451, in process
    script.process(p, *script_args)
  File "C:\Users\mattb\stable-diffusion-webui\extensions\sd-dynamic-prompts\sd_dynamic_prompts\dynamic_prompting.py", line 482, in process
    all_prompts, all_negative_prompts = generate_prompts(
  File "C:\Users\mattb\stable-diffusion-webui\extensions\sd-dynamic-prompts\sd_dynamic_prompts\helpers.py", line 93, in generate_prompts
    all_prompts = prompt_generator.generate(prompt, num_prompts, seeds=seeds) or [""]
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\generators\randomprompt.py", line 71, in generate
    prompts.append(next(iter(gen)))
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\base.py", line 75, in _get_sequence
    yield rotate_and_join(sub_generators, separator=command.separator)
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\utils.py", line 43, in rotate_and_join
    return separator.join(rotate_all(generators))
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\utils.py", line 35, in rotate_all
    return [next(gen) for gen in generators]
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\utils.py", line 35, in <listcomp>
    return [next(gen) for gen in generators]
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\random.py", line 64, in _get_variant
    wildcard_variant = wildcard_to_variant(
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\utils.py", line 25, in wildcard_to_variant
    variant_options = [
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\samplers\utils.py", line 26, in <listcomp>
    VariantOption(parse(v, parser_config=context.parser_config)) for v in values
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\dynamicprompts\parser\parse.py", line 454, in parse
    tokens = get_cached_parser(parser_config).parse_string(
  File "C:\Users\mattb\stable-diffusion-webui\venv\lib\site-packages\pyparsing\core.py", line 1190, in parse_string
    raise exc.with_traceback(None)
pyparsing.exceptions.ParseException: Expected end of text, found '_'  (at char 19), (line:1, col:20)

@akx

Gushousekai195 avatar Feb 28 '24 23:02 Gushousekai195

Please show your actual full prompt. Are you using any other extensions that could be modifying prompts (such as ADetailer)?

akx avatar Mar 05 '24 11:03 akx

Please show your actual full prompt. Are you using any other extensions that could be modifying prompts (such as ADetailer)?

The prompt is just "4$$__*__" and it still fails:

*** Error running process: D:\AI\webui_forge_cu121_torch21\webui\extensions\sd-dynamic-prompts\scripts\dynamic_prompting.py
    Traceback (most recent call last):
      File "D:\AI\webui_forge_cu121_torch21\webui\modules\scripts.py", line 803, in process
        script.process(p, *script_args)
      File "D:\AI\webui_forge_cu121_torch21\webui\extensions\sd-dynamic-prompts\sd_dynamic_prompts\dynamic_prompting.py", line 481, in process
        all_prompts, all_negative_prompts = generate_prompts(
                                            ^^^^^^^^^^^^^^^^^
      File "D:\AI\webui_forge_cu121_torch21\webui\extensions\sd-dynamic-prompts\sd_dynamic_prompts\helpers.py", line 93, in generate_prompts
        all_prompts = prompt_generator.generate(prompt, num_prompts, seeds=seeds) or [""]
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\AI\webui_forge_cu121_torch21\webui\venv\Lib\site-packages\dynamicprompts\generators\randomprompt.py", line 67, in generate
        gen = self._context.sample_prompts(template, num_images)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\AI\webui_forge_cu121_torch21\webui\venv\Lib\site-packages\dynamicprompts\sampling_context.py", line 119, in sample_prompts
        command = parse(prompt, parser_config=self.parser_config)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\AI\webui_forge_cu121_torch21\webui\venv\Lib\site-packages\dynamicprompts\parser\parse.py", line 454, in parse
        tokens = get_cached_parser(parser_config).parse_string(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\AI\webui_forge_cu121_torch21\webui\venv\Lib\site-packages\pyparsing\core.py", line 1197, in parse_string
        raise exc.with_traceback(None)
    pyparsing.exceptions.ParseException: Expected end of text, found '$'  (at char 1), (line:1, col:2)

This is even with only the dynamic prompts extension enabled.

See? image

Gushousekai195 avatar Mar 09 '24 20:03 Gushousekai195

adieyal also said this might be a parser bug, but never did anything to fix it

Gushousekai195 avatar Mar 09 '24 20:03 Gushousekai195

@akx

Gushousekai195 avatar Apr 10 '24 20:04 Gushousekai195

I tried a couple recent dynamicprompts versions (0.29.0, 0.30.0, 0.31.0) and 4$$__*__ is not a valid prompt in any of them. What should that prompt do in your opinion?

akx avatar Apr 11 '24 05:04 akx

I tried a couple recent dynamicprompts versions (0.29.0, 0.30.0, 0.31.0) and 4$$__*__ is not a valid prompt in any of them. What should that prompt do in your opinion?

I thought it would draw from all the wildcards in my folder.

Gushousekai195 avatar Apr 11 '24 05:04 Gushousekai195

If you want four random wildcards, try {4$$__*__} (wrapped in curly braces for variant syntax).

akx avatar Apr 11 '24 08:04 akx