Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create_infotext allow index and callable, re-work Hires prompt infotext #15460

Merged
merged 5 commits into from
Apr 9, 2024

Conversation

w-e-w
Copy link
Collaborator

@w-e-w w-e-w commented Apr 8, 2024

Description

this PR allows for generation parameters be a list string or callable, this enables much more flexibility and extensibility on how future infotax can be written

with this PR will be easier to add new parameters without directly adding extra bulk to this function


further work in future PR after this is merged
with this PR is possible to clean up some of the non-shared parameters from within the function
fore example Token merging ratio hr only applicablefor txt2img when hires fix is enabled, it seems appropriate to move the definition out of this shared function

other changes

  • when use_main_prompt is true index is set to 0`
    I believe this makes sense
  • Processed.js > json.dumps will output None when encountering non-zerizable objects such as functions
  • add docstring for create_infotext

note
I initially was planning for this to be done before before 1.9-RC, as this includes the removal of the two new arguments all_hr_prompts and all_hr_negative_prompts that I added in #15269, reason being if there are pushed to master then back was completely would ideally need to be kept
if possible I would like this to be pushed to 1.9-RC

Checklist:

@AUTOMATIC1111 AUTOMATIC1111 merged commit a976f4d into dev Apr 9, 2024
6 checks passed
AUTOMATIC1111 added a commit that referenced this pull request Apr 9, 2024
…d-callable

create_infotext allow index and callable, re-work Hires prompt infotext
IllusiveMan196 added a commit to IllusiveMan196/stable-diffusion-webui-directml that referenced this pull request May 10, 2024
commit 88c1224
Author: Seunghoon Lee <[email protected]>
Date:   Thu May 9 01:49:45 2024 +0900

    [DirectML] Fix samplers.

commit e2cbdab
Author: Seunghoon Lee <[email protected]>
Date:   Mon May 6 10:27:49 2024 +0900

    Fix bug.

commit 9514d91
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 23:29:44 2024 +0900

    Fix ONNX/Olive.

commit 7fd77f2
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 22:45:46 2024 +0900

    Fix ONNX/Olive generation.

commit 216340d
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 20:10:54 2024 +0900

    Fix bug.

commit a92b859
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 19:56:08 2024 +0900

    Support olive-ai 0.5.x.

commit 674c5ca
Author: Seunghoon Lee <[email protected]>
Date:   Tue Apr 30 16:12:53 2024 +0900

    Fix.

commit 89e60b8
Author: Seunghoon Lee <[email protected]>
Date:   Tue Apr 30 13:38:44 2024 +0900

    Rewrite ZLUDA installer.

commit 65588fc
Author: Seunghoon Lee <[email protected]>
Date:   Mon Apr 29 23:02:11 2024 +0900

    Fix.

commit 5d11e9c
Author: Seunghoon Lee <[email protected]>
Date:   Mon Apr 29 22:55:17 2024 +0900

    Bump ZLUDA.

commit 620b78c
Author: Seunghoon Lee <[email protected]>
Date:   Mon Apr 29 22:50:42 2024 +0900

    Improve ZLUDA installation.

commit 6130ef9
Merge: b7c5e60 1c0a0c4
Author: Seunghoon Lee <[email protected]>
Date:   Tue Apr 23 19:48:08 2024 +0900

    Merge remote-tracking branch 'upstream/master'

commit 1c0a0c4
Merge: e2b177c 7dfe959
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 18:00:36 2024 +0300

    Merge branch 'dev'

commit 7dfe959
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 18:00:23 2024 +0300

    update changelog

commit 8f64dad
Merge: e2b177c 821adc3
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 17:57:39 2024 +0300

    Merge pull request AUTOMATIC1111#15594 from AUTOMATIC1111/fix-get_crop_region_v2

    fix get_crop_region_v2

commit 821adc3
Author: w-e-w <[email protected]>
Date:   Mon Apr 22 23:03:27 2024 +0900

    fix get_crop_region_v2

    Co-Authored-By: Dowon <[email protected]>

commit e2b177c
Merge: e84703b e837124
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:26:24 2024 +0300

    Merge branch 'dev'

commit e837124
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:26:05 2024 +0300

    changelog

commit 3fdc3cf
Merge: 61f6479 e9809de
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:24:06 2024 +0300

    Merge pull request AUTOMATIC1111#15591 from AUTOMATIC1111/restore-1.8.0-style-naming-of-scripts

    Restore 1.8.0 style naming of scripts

commit e9809de
Author: w-e-w <[email protected]>
Date:   Mon Apr 22 18:21:48 2024 +0900

    restore 1.8.0-style naming of scripts

commit 61f6479
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:19:30 2024 +0300

    restore 1.8.0-style naming of scripts

commit e84703b
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 11:59:54 2024 +0300

    update changelog

commit e4aa0c3
Merge: a183ea4 6c7c176
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 11:50:34 2024 +0300

    Merge pull request AUTOMATIC1111#15587 from AUTOMATIC1111/fix-mistake-in-#15583

    fix mistake in AUTOMATIC1111#15583

commit a183ea4
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 11:49:55 2024 +0300

    undo adding scripts to sys.modules

commit 6c7c176
Author: w-e-w <[email protected]>
Date:   Mon Apr 22 00:10:49 2024 +0900

    fix mistake in AUTOMATIC1111#15583

commit e6a8d0b
Merge: d1998d7 db263df
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 18:06:40 2024 +0300

    Merge pull request AUTOMATIC1111#15583 from AUTOMATIC1111/get_crop_region_v2

    get_crop_region_v2

commit db263df
Author: w-e-w <[email protected]>
Date:   Sun Apr 21 19:34:11 2024 +0900

    get_crop_region_v2

commit d1998d7
Merge: c0eaeb1 8e1c356
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:43:19 2024 +0300

    Merge pull request AUTOMATIC1111#15531 from thatfuckingbird/fix-mistyped-function-name

    fix typo in function call (eror -> error)

commit c0eaeb1
Merge: 9bcfb92 a95326b
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:42:57 2024 +0300

    Merge pull request AUTOMATIC1111#15532 from huchenlei/fix_module

    Fix cls.__module__ value in extension script

commit 9bcfb92
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:41:28 2024 +0300

    rename logging from textual inversion to not confuse it with global logging module

commit d74fc56
Merge: a44ed23 63fd38a
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:23:38 2024 +0300

    Merge pull request AUTOMATIC1111#15547 from AUTOMATIC1111/numpy-DeprecationWarning-product---prod

    numpy DeprecationWarning product -> prod

commit a44ed23
Merge: daae178 9d4fdc4
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:22:58 2024 +0300

    Merge pull request AUTOMATIC1111#15555 from light-and-ray/fix_x1_upscalers

    fix x1 upscalers

commit daae178
Merge: ce19a7b 909c3df
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:22:30 2024 +0300

    Merge pull request AUTOMATIC1111#15560 from AUTOMATIC1111/api-downscale

    Remove API upscaling factor limits

commit ce19a7b
Merge: 8d6e72d 50190ca
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:22:04 2024 +0300

    Merge pull request AUTOMATIC1111#15544 from cabelo/master

    Compatibility with Debian 11, Fedora 34+ and openSUSE 15.4+

commit 8d6e72d
Merge: 6f4f6bf ba2a737
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:21:21 2024 +0300

    Merge pull request AUTOMATIC1111#15561 from speculativemoonstone/fix-launch-git-directories

    Allow webui.sh to be runnable from arbitrary directories containing a .git file

commit 6f4f6bf
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:18:58 2024 +0300

    add more info to the error message for AUTOMATIC1111#15567

commit 367b823
Merge: c8ac42a d212fb5
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:09:27 2024 +0300

    Merge pull request AUTOMATIC1111#15567 from AUTOMATIC1111/no-image-data-blocks-debug

    Hide 'No Image data blocks found.' message

commit c8ac42a
Merge: 449bc7b bba306d
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:07:58 2024 +0300

    Merge pull request AUTOMATIC1111#15533 from travisg/callback-fix

    fix: remove_callbacks_for_function should also remove from the ordered map

commit 449bc7b
Merge: 3810413 71314e4
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:06:45 2024 +0300

    Merge pull request AUTOMATIC1111#15534 from storyicon/fix-masking

    Fix images do not match / Coordinate 'right' is less than 'left'

commit 3810413
Merge: f8f5d6c b5b1487
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:00:28 2024 +0300

    Merge pull request AUTOMATIC1111#15581 from AUTOMATIC1111/FilenameGenerator-sampler-scheduler

    FilenameGenerator Sampler Scheduler

commit f8f5d6c
Merge: cde35be 5cb567c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 06:59:56 2024 +0300

    Merge pull request AUTOMATIC1111#15577 from AUTOMATIC1111/api-get-schedulers

    Add schedulers API endpoint

commit cde35be
Merge: ff6f468 49fee7c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 06:59:38 2024 +0300

    Merge pull request AUTOMATIC1111#15582 from kaanyalova/avif-support

    Add avif support

commit 49fee7c
Author: kaanyalova <[email protected]>
Date:   Sat Apr 20 23:18:54 2024 +0300

    Add avif support

commit b5b1487
Author: w-e-w <[email protected]>
Date:   Sun Apr 21 02:26:50 2024 +0900

    FilenameGenerator Sampler Scheduler

commit 5cb567c
Author: missionfloyd <[email protected]>
Date:   Fri Apr 19 20:29:22 2024 -0600

    Add schedulers API endpoint

commit d212fb5
Author: missionfloyd <[email protected]>
Date:   Thu Apr 18 20:56:51 2024 -0600

    Hide 'No Image data blocks found.' message

commit b7c5e60
Author: Seunghoon Lee <[email protected]>
Date:   Fri Apr 19 10:09:47 2024 +0900

    Fix lshqqytiger#449.

commit 71314e4
Author: storyicon <[email protected]>
Date:   Thu Apr 18 11:59:25 2024 +0000

    feat:compatible with inconsistent/empty mask

    Signed-off-by: storyicon <[email protected]>

commit ba2a737
Author: Speculative Moonstone <[email protected]>
Date:   Thu Apr 18 04:25:32 2024 +0000

    Allow webui.sh to be runnable from directories containing a .git file

commit 909c3df
Author: missionfloyd <[email protected]>
Date:   Wed Apr 17 21:20:03 2024 -0600

    Remove API upscaling factor limits

commit 9d4fdc4
Author: Andray <[email protected]>
Date:   Thu Apr 18 01:53:23 2024 +0400

    fix x1 upscalers

commit 63fd38a
Author: w-e-w <[email protected]>
Date:   Wed Apr 17 15:44:49 2024 +0900

    numpy DeprecationWarning product -> prod

commit 50190ca
Author: Alessandro de Oliveira Faria (A.K.A. CABELO) <[email protected]>
Date:   Wed Apr 17 00:01:56 2024 -0300

    Compatibility with Debian 11, Fedora 34+ and openSUSE 15.4+

commit 0980fdf
Author: storyicon <[email protected]>
Date:   Tue Apr 16 07:35:33 2024 +0000

    fix: images do not match

    Signed-off-by: storyicon <[email protected]>

commit bba306d
Author: Travis Geiselbrecht <[email protected]>
Date:   Mon Apr 15 21:10:11 2024 -0700

    fix: remove callbacks properly in remove_callbacks_for_function()

    Like remove_current_script_callback just before, also remove from the
    ordered_callbacks_map to keep the callback map and ordered callback map
    in sync.

commit a95326b
Author: huchenlei <[email protected]>
Date:   Mon Apr 15 22:34:01 2024 -0400

    nit

commit 0f82948
Author: huchenlei <[email protected]>
Date:   Mon Apr 15 22:14:19 2024 -0400

    Fix cls.__module__

commit 8e1c356
Author: thatfuckingbird <[email protected]>
Date:   Mon Apr 15 21:17:24 2024 +0200

    fix typo in function call (eror -> error)

commit ff6f468
Merge: 3fadb4f adadb4e
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Apr 13 06:38:58 2024 +0300

    Merge branch 'master' into dev

commit 3fadb4f
Merge: ac8ffb3 592e40e
Author: AUTOMATIC1111 <[email protected]>
Date:   Thu Apr 11 19:33:55 2024 +0300

    Merge pull request AUTOMATIC1111#15492 from w-e-w/update-restricted_opts

    update restricted_opts

commit 592e40e
Author: w-e-w <[email protected]>
Date:   Thu Apr 11 22:51:29 2024 +0900

    update restricted_opts

commit 4068429
Author: storyicon <[email protected]>
Date:   Wed Apr 10 10:53:25 2024 +0000

    fix: Coordinate 'right' is less than 'left'

    Signed-off-by: storyicon <[email protected]>

commit ac8ffb3
Merge: a976f4d ef83f68
Author: AUTOMATIC1111 <[email protected]>
Date:   Tue Apr 9 16:00:56 2024 +0300

    Merge pull request AUTOMATIC1111#15470 from AUTOMATIC1111/read-infotext-Script-not-found

    error handling paste_field callables

commit ef83f68
Author: w-e-w <[email protected]>
Date:   Tue Apr 9 21:28:44 2024 +0900

    catch exception for all paste_fields callable

commit 600f339
Author: w-e-w <[email protected]>
Date:   Tue Apr 9 20:59:04 2024 +0900

    Warning when Script is not found

commit a976f4d
Merge: c48b6bf e3aabe6
Author: AUTOMATIC1111 <[email protected]>
Date:   Tue Apr 9 12:05:02 2024 +0300

    Merge pull request AUTOMATIC1111#15460 from AUTOMATIC1111/create_infotext-index-and-callable

    create_infotext allow index and callable, re-work Hires prompt infotext

commit c48b6bf
Merge: d9708c9 2580235
Author: AUTOMATIC1111 <[email protected]>
Date:   Tue Apr 9 11:00:30 2024 +0300

    Merge pull request AUTOMATIC1111#15465 from jordenyt/fix-extras-api-upscale-enabled

    Fix extra-single-image API not doing upscale failed

commit 2580235
Author: Jorden Tse <[email protected]>
Date:   Tue Apr 9 11:13:47 2024 +0800

    Fix extra-single-image API not doing upscale failed

commit d9708c9
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 8 16:15:25 2024 +0300

    fix limited file write (thanks, Sylwia)

commit e3aabe6
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 19:48:38 2024 +0900

    add documentation for create_infotext

commit 1e1176b
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 18:18:33 2024 +0900

    non-serializable as None

commit 219e644
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 01:41:52 2024 +0900

    re-work extra_generation_params for Hires prompt

commit 47ed9b2
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 01:39:31 2024 +0900

    allow list or callables in generation_params

commit 6efdfe3
Author: w-e-w <[email protected]>
Date:   Sun Apr 7 22:58:12 2024 +0900

    if use use_main_prompt index = 0
@bluelovers
Copy link
Contributor

this pr make other extensions can't save list in pnginfo

bluelovers added a commit to bluelovers/stable-diffusion-webui that referenced this pull request Jun 27, 2024
fix for this pr AUTOMATIC1111#15460

Only apply the index to the specified field to avoid causing other plugins to fail to save list values.
@w-e-w
Copy link
Collaborator Author

w-e-w commented Jun 28, 2024

this pr make other extensions can't save list in pnginfo

no this does not
a python list was never supported by the infotext syntax

a demo of why this is the case

when your infotext contains a list

import json

def quote(text):
    if ',' not in str(text) and '\n' not in str(text) and ':' not in str(text):
        return text
    return json.dumps(text, ensure_ascii=False)
infotext_dict = {
    'test': 'my test',
    'test list': ['a', 'b', 'c'],
}

infotext = ", ".join([k if k == v else f'{k}: {quote(v)}' for k, v in infotext_dict.items() if v is not None])

even though the generating infotext DOSE contain a list like so

test: my test, test list: ["a", "b", "c"]

this is NOT a valid valid infotext

when the infotext if paresd by modules.infotext_utils.py.parse_generation_parameters()

the anything after the first , comma in the list will be lost during parseing


if you wish to make it dictionary or list work in infotext it, it needs to be first encoded into some data structure like json before it's past the info text
I have a PR proposal on system for this and a way to add structal data to infotext but it was not approved

there's also a way for extension to add structured data without the built-in from the PR system
I have written a demo
https://github.com/w-e-w/sd-webui-infotext-example/blob/main/scripts/infotext_example_advance.py

essentially a list or dict will have to be encode in some kinde some sort of structure string for example json

infotext_dict = {
    'test': 'my test',
    'test list': json.dumps(['a', 'b', 'c']),
}

output

test: my test, test list: "[\"a\", \"b\", \"c\"]"

since the excessive use of \ in my implementation it also employees quote_swap = str.maketrans('\'"', '"\'')

quote_swap = str.maketrans('\'"', '"\'')

infotext_dict = {
    'test': 'my test',
    'test list': json.dumps(['a', 'b', 'c']).translate(quote_swap),
}

the result in final output is

test: my test, test list: "['a', 'b', 'c']"

later on during parseing of info text, extra logic is added to parse out the json


you can use any other structure if you like as long as it is a string
for example CSV


summary
list or dict is not supporting nativity by infotext
ONLY string are allowed to be stored in the values
if you wish to encode other data types then it needs to be encoded as a string using some data format
later on string should be decoded using script_callbacks.on_infotext_pasted

@w-e-w w-e-w deleted the create_infotext-index-and-callable branch June 28, 2024 03:02
bluelovers added a commit to bluelovers/stable-diffusion-webui that referenced this pull request Jul 7, 2024
fix for this pr AUTOMATIC1111#15460

Only apply the index to the specified field to avoid causing other plugins to fail to save list values.
bluelovers added a commit to bluelovers/stable-diffusion-webui that referenced this pull request Jul 9, 2024
fix for this pr AUTOMATIC1111#15460

Only apply the index to the specified field to avoid causing other plugins to fail to save list values.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants