Skip to content

Conversation

Haoming02
Copy link
Contributor

@Haoming02 Haoming02 commented Dec 12, 2024

Simple Description

  • Currently, this script only checks if the number of opening and closing brackets are the same. So if you have mistyped something like )...( in the prompts, the checker would not detect it as error.

  • The current regular expression is frankly... difficult to read

    • Also, regexr gave a warning that "negative lookbehind" ((?<!) may not be supported on all browsers; though when I looked it up, it seems to be supported on all modern browsers.

List of Changes

  • Manually loop through the text to check for the order of brackets
  • Now also checks for pairing of escaped brackets
  • Use the built-in onEdit function to detect user inputs
  • Converted to use the IIFE pattern
    • To revert this, also move the const pairs = [ ... ] inside checkBrackets() { ... }

  • Edited the credits - The only mention of "Hingashi no Florin" I can ever find online is this line, which is probably the original author of this script, Bwin4L's nickname? Do we keep it?

Checklist


Performance: Checking a textbox filled to ~150 tokens took 0.2 ms

Copy link
Collaborator

@w-e-w w-e-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Now also checks for pairing of escaped brackets (ie. ( ... ), etc)

literal brackets should not be checked as it is not a part of the prompt syntax
it is valid to have mismatch literal brackets

@Haoming02
Copy link
Contributor Author

literal brackets should not be checked as it is not a part of the prompt syntax

Maybe make it a setting then? since:

it is valid to have missed matched literal brackets

Who would have a non-closed brackets anyway? I can't think of a reason to only use either opening or closing bracket alone.

Take Booru Tags for example, literal brackets are used to denote franchise or medium, and they are always in pairs.

@w-e-w
Copy link
Collaborator

w-e-w commented Dec 13, 2024

to be honest I don't know if anyone would ever find that useful but out of curiosity I did a strange test
and I'm not sure what to think about the results
20241213-180417-043390 2955369934 8683
no escape, all literal, only matching, on parentheses, blank

prompt

((((( ( ⊃・ω・)⊃☂

xyz s/r

((((( ( ⊃・ω・)⊃☂, \(\(\(\(\( \( ⊃・ω・\)⊃☂, \( ⊃・ω・\)⊃☂, ⊃・ω・⊃☂,

@w-e-w
Copy link
Collaborator

w-e-w commented Dec 13, 2024

this result is kind of interesting
20241213-181759-915867 530718384 c44e
20241213-181812-598092 151051099 f7ab
20241213-181824-698849 2589342750 e5f1
20241213-181857-673344 4110295215 7c84

\(\(\(girl
\(\(\(girl,\(\(girl,\(girl,girl,girl\),girl\)\),girl\)\)\)

@Haoming02
Copy link
Contributor Author

I don't know if anyone would ever find that useful

If you meant checking the pairings, it's for when you forgot to escape both brackets (eg. amiya \(arknights) would now show as error)

@w-e-w
Copy link
Collaborator

w-e-w commented Dec 13, 2024

I don't know if anyone would ever find that useful

no actually is the reverse
I agree with you most people would have matched literal brackets
I'm not sure how useful Not matching mismatched literal brackets is useful

maybe I'm thinking too much
my issue is more on what the "error" message is conveying

I feel like using the same "error message" is misleading
for one it is never an error missmatch brackets are handled internally using the fallback behaviorit, likely not what the user intended, but it is not an error

when ther is a mismatch bracket a "RED error" appear let the user know something worng and would trigger the fallback behavior
but when mismatched literal bracket trigger use the same "RED error" it implies that something is wrong and would trigger fallback behavior, but this is not the case,

I won't have an issue if it instead is highlighted like yellow when it is caused by mismatch literal brackets
more like a warning as opposed to a error

@Haoming02 Haoming02 marked this pull request as draft December 13, 2024 10:10
@Haoming02
Copy link
Contributor Author

Now that I think about it, in case of amiya \(arknights), the current script would've shown as error anyway, as there is now a lone closing bracket.

And in case of amiya \(arknights, it frankly does not matter too much. And as you mentioned, it does not actually cause any error.


  • TL;DR: Reverted checking the pairings of escaped brackets

@Haoming02 Haoming02 marked this pull request as ready for review December 16, 2024 01:56
counts[bracket[1]] = (counts[bracket[1]] || 0) + 1;
});
const errors = [];
(function() {
Copy link
Collaborator

@w-e-w w-e-w Dec 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

functionally wise looks good to me
just one more question / issue

is there a particular reason that you decided to wrap this entire thing inside a function?

(function() {
    /*...*/
})();

if you did this because to avoid namespace collisions
considering that all these functions already existed for a long time in global space
there shouldn't be any collision issues
apart from only new variable added pairs
I would suggest you rename pairs to something more like promptBracketCheckerPairs
and leave the structure other as is

or is there some other considerations that makes you move this entire thing into a function?
I feel like it's advantageous to allow other scripts to have access to pairs / promptBracketChecker
this way for some reason an extension wishes to add some additional syntax they could

@Haoming02
Copy link
Contributor Author

Yeah, it's mainly to avoid namespace pollution afaik

I first learnt about this pattern (called IIFE) from the Forge ControlNet

@w-e-w
Copy link
Collaborator

w-e-w commented Dec 17, 2024

LGTM


oh there's a name for this pattern
I know what this does but I never knew that it was a name for it


another issue with using IIFE in this case while this is a built-in "extention" (so can be disabled)
but beeing "built-in" they could be an extension adds a custom input of somekind that also uses checkBrackets()
so if checkBrackets() is is move into a IIFE, things may not work even when thay should

@w-e-w w-e-w merged commit e8c3b1f into AUTOMATIC1111:dev Dec 17, 2024
3 checks passed
@Haoming02 Haoming02 deleted the bracket-checker-order branch December 18, 2024 01:41
THClements added a commit to THClements/stable-diffusion-webui that referenced this pull request Feb 1, 2025
commit dc34c00
Author: w-e-w <[email protected]>
Date:   Fri Dec 27 22:10:13 2024 +0900

    fix shadows name 'k' from outer scope

    while syntactically correct this triggers a false Unresolved reference 'k' error in PyCharms

commit fc54833
Author: w-e-w <[email protected]>
Date:   Fri Dec 27 08:58:44 2024 +0900

    Authenticated Sysinfo

commit 078d04e
Author: w-e-w <[email protected]>
Date:   Fri Dec 27 10:40:15 2024 +0900

    ruff <path> is deprecated. Use ruff check <path> (AUTOMATIC1111#16753)

commit 1a773bf
Merge: f25c3fc f113474
Author: w-e-w <[email protected]>
Date:   Thu Dec 26 06:33:04 2024 +0900

    Merge pull request AUTOMATIC1111#16751 from Neokmi/master

    Fix  Codeformer and gfpgan extension , Inconsistent overlay layer types when visibility value is less than 1

commit f113474
Author: w-e-w <[email protected]>
Date:   Thu Dec 26 06:26:47 2024 +0900

    lint

commit 6577e06
Author: klx <[email protected]>
Date:   Thu Dec 26 02:16:05 2024 +0800

    Update postprocessing_gfpgan.py

    Fix  gfpgan extension , Inconsistent overlay layer types when visibility value is less than 1

commit 7953c57
Author: klx <[email protected]>
Date:   Thu Dec 26 02:14:49 2024 +0800

    Update postprocessing_codeformer.py

    Fix  Codeformer extension , Inconsistent overlay layer types when visibility value is less than 1

commit f25c3fc
Author: w-e-w <[email protected]>
Date:   Wed Dec 25 05:43:55 2024 +0900

    fix sd_vae_explanation (AUTOMATIC1111#16748)

commit fc0952a
Merge: 04903af b414c62
Author: w-e-w <[email protected]>
Date:   Tue Dec 24 22:58:43 2024 +0900

    Merge pull request AUTOMATIC1111#16745 from Sanchows/removed-unused-import-modules-errors

    removed unnecessary import 'modules.errors'

commit b414c62
Author: Alexander Sachenko <[email protected]>
Date:   Tue Dec 24 15:45:10 2024 +0300

    removed unnecessary import modules.errors

commit 04903af
Merge: e8c3b1f 9568622
Author: w-e-w <[email protected]>
Date:   Wed Dec 18 03:21:48 2024 +0900

    Merge pull request AUTOMATIC1111#16604 from Haoming02/ext-updt-parallel

    Check for Extension Updates in Parallel

commit e8c3b1f
Merge: 0120768 8bf30e3
Author: w-e-w <[email protected]>
Date:   Wed Dec 18 02:37:30 2024 +0900

    Merge pull request AUTOMATIC1111#16718 from Haoming02/bracket-checker-order

    [Bracket Checker] Also check for the order of brackets

commit 8bf30e3
Author: Haoming <[email protected]>
Date:   Wed Dec 18 01:02:40 2024 +0800

    revert IIFE

commit fbc51fa
Author: Haoming <[email protected]>
Date:   Mon Dec 16 09:47:38 2024 +0800

    skip escaped

commit 7025a2c
Author: Haoming <[email protected]>
Date:   Thu Dec 12 16:08:15 2024 +0800

    check-for-order

commit 0120768
Merge: 023454b b425b97
Author: w-e-w <[email protected]>
Date:   Thu Nov 28 17:39:12 2024 +0900

    Merge pull request AUTOMATIC1111#16687 from Haoming02/dropdown4format

    Use gr.Dropdown for Image Formats

commit b425b97
Author: w-e-w <[email protected]>
Date:   Thu Nov 28 16:56:10 2024 +0900

    improve img fromat description

commit 539ea39
Author: w-e-w <[email protected]>
Date:   Thu Nov 28 14:02:33 2024 +0900

    use DropdownEditable

    use DropdownEditable so user can input other formats if they require it
    make the default png the first on the list

commit 65bd61e
Author: Haoming <[email protected]>
Date:   Wed Nov 27 10:42:50 2024 +0800

    format-dropdown

commit 023454b
Author: w-e-w <[email protected]>
Date:   Thu Nov 21 11:33:59 2024 +0900

    fix passing of literal backslash (AUTOMATIC1111#16671)

commit cd869bb
Author: w-e-w <[email protected]>
Date:   Thu Nov 21 02:29:41 2024 +0900

    fix prompt-bracket-checker miscounting of literal tokens (AUTOMATIC1111#16669)

commit 957888a
Merge: 7799859 d2c9efb
Author: w-e-w <[email protected]>
Date:   Tue Nov 19 14:41:37 2024 +0900

    Merge pull request AUTOMATIC1111#16667 from AUTOMATIC1111/fix/safetensors-bump

    Bump safetensors to v0.4.5

commit d2c9efb
Author: catboxanon <[email protected]>
Date:   Mon Nov 18 20:48:36 2024 -0500

    Bump safetensors to v0.4.5

    Resolves AUTOMATIC1111#16650

commit 7799859
Merge: 1b16c62 ca3bedb
Author: w-e-w <[email protected]>
Date:   Sat Nov 2 01:28:12 2024 +0900

    Merge pull request AUTOMATIC1111#16620 from AUTOMATIC1111/fix/api-webp-lossless

    Honor lossless WebP compression option in API

commit ca3bedb
Author: catboxanon <[email protected]>
Date:   Fri Nov 1 11:32:52 2024 -0400

    Honor lossless webp compression option in API

commit 1b16c62
Author: w-e-w <[email protected]>
Date:   Thu Oct 31 02:01:32 2024 +0900

    use shared.hf_endpoint (AUTOMATIC1111#16611)

commit 91de919
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 22:34:37 2024 +0900

    Warn if WebUI is installed under a dot directory (AUTOMATIC1111#16584)

commit aa52408
Merge: 28323cf e6f36d9
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 09:51:41 2024 +0900

    Merge pull request AUTOMATIC1111#16606 from AUTOMATIC1111/fix/vweighting

    Fix config for SDXL v-pred

commit e6f36d9
Author: catboxanon <[email protected]>
Date:   Tue Oct 29 13:27:32 2024 -0400

    sd_xl_v.yaml: use_checkpoint = False

    In accordance with AUTOMATIC1111#15803

commit 28323cf
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 02:18:38 2024 +0900

    XYZ option to disable grid (AUTOMATIC1111#16416)

commit 533c7b7
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 02:13:16 2024 +0900

    Fix Default system None filter logic (AUTOMATIC1111#16309)

commit ac28cad
Author: catboxanon <[email protected]>
Date:   Tue Oct 29 11:49:09 2024 -0400

    Fix weighting config for SDXL v-pred

    Fixes a small oversight I made.

commit 5206b93
Author: w-e-w <[email protected]>
Date:   Wed Oct 30 00:03:21 2024 +0900

    InputAccordion duplicate elem_id handling (AUTOMATIC1111#16381)

commit 5948143
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:59:04 2024 +0900

    addEventListener {passive: false} (AUTOMATIC1111#16575)

commit f31faf6
Author: viking1304 <[email protected]>
Date:   Tue Oct 29 15:54:58 2024 +0100

    pyenv-win compatibility - another approach (AUTOMATIC1111#16287)

commit 14c6d6c
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:45:45 2024 +0900

    Disable Hires checkpoint if same as First pass checkpoint (AUTOMATIC1111#16269)

commit 4ec10bc
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:38:55 2024 +0900

    Fix postprocessing_enable_in_main_ui ScriptPostprocessing elem_id (AUTOMATIC1111#16373)

commit 0bf36cf
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:35:46 2024 +0900

    extra_only / main_ui_only ScriptPostprocessing (AUTOMATIC1111#16374)

commit 820fe8d
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:30:08 2024 +0900

    Allow newline in Extra Network activation text (AUTOMATIC1111#16428)

commit deb3803
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 23:28:21 2024 +0900

    image embedding data cache (AUTOMATIC1111#16556)

commit 9568622
Author: w-e-w <[email protected]>
Date:   Tue Oct 29 20:16:15 2024 +0900

    limit number of simultaneous updates

    shared.opts.concurrent_git_fetch_limit

commit df74c3c
Author: Haoming <[email protected]>
Date:   Tue Oct 29 14:12:42 2024 +0800

    threading

commit d88a3c1
Merge: 38c8043 ee0ad5c
Author: w-e-w <[email protected]>
Date:   Sun Oct 27 10:28:23 2024 +0900

    Merge pull request AUTOMATIC1111#16588 from bluelovers/patch-3

    chore(js): avoid lots of `Wake Lock is not supported.`

commit 38c8043
Merge: 984b952 d8ad364
Author: w-e-w <[email protected]>
Date:   Sun Oct 27 01:09:41 2024 +0900

    Merge pull request AUTOMATIC1111#16523 from changeworld/fix/typo

    Fix typo: Github -> GitHub

commit ee0ad5c
Author: bluelovers <[email protected]>
Date:   Fri Oct 25 09:59:45 2024 +0800

    chore(js): avoid lots of `Wake Lock is not supported.`

commit 984b952
Author: w-e-w <[email protected]>
Date:   Thu Oct 24 22:05:51 2024 +0900

    Fix DAT models download (AUTOMATIC1111#16302)

commit 5865da2
Merge: bb1f391 c2ce1d3
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 11:40:02 2024 +0900

    Merge pull request AUTOMATIC1111#16569 from AUTOMATIC1111/feat/ztsnr-auto

    Automatically enable ztSNR based on existence of key in `state_dict`

commit bb1f391
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:58:53 2024 +0900

    clarify readme: weget ... chmod +x webui.sh (AUTOMATIC1111#16251)

commit 6a59766
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:56:12 2024 +0900

    Add Skip Early CFG to XYZ (AUTOMATIC1111#16282)

    Co-authored-by: Yevhenii Hurin <[email protected]>

commit 65423d2
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:52:47 2024 +0900

    MIME type text/css (AUTOMATIC1111#16406)

commit c2bc187
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:51:59 2024 +0900

    fix modalImageViewer preview/result flicker (AUTOMATIC1111#16426)

commit d0b27dc
Merge: bb4cbaf cbaaf0a
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 09:42:21 2024 +0900

    Merge pull request AUTOMATIC1111#16300 from hello2564/fix_NGMS_pr_typo

    fix NGMS pr typo

commit c2ce1d3
Author: catboxanon <[email protected]>
Date:   Sat Oct 19 19:58:13 2024 -0400

    Automatically enable ztSNR based on existence of key in state_dict

commit bb4cbaf
Merge: c462e5a 9677b09
Author: w-e-w <[email protected]>
Date:   Sun Oct 20 08:27:12 2024 +0900

    Merge pull request AUTOMATIC1111#16341 from gutris1/devv

    add break-word for geninfo in pnginfo

commit c462e5a
Merge: 8b19b75 c9a06d1
Author: catboxanon <[email protected]>
Date:   Sat Oct 19 10:51:16 2024 -0400

    Merge pull request AUTOMATIC1111#16460 from AUTOMATIC1111/sd-1.5-url

commit 8b19b75
Merge: 907bfb5 1ae073c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Oct 19 17:40:56 2024 +0300

    Merge pull request AUTOMATIC1111#16567 from AUTOMATIC1111/feat/sdxl-vpred

    Support and automatically detect SDXL V-prediction models

commit 907bfb5
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Oct 19 17:33:58 2024 +0300

    add w-e-w and catboxanon to codeowners file

commit 1ae073c
Author: catboxanon <[email protected]>
Date:   Sat Oct 19 06:53:19 2024 -0400

    Support SDXL v-pred models

commit c9a06d1
Author: missionfloyd <[email protected]>
Date:   Tue Oct 8 16:50:39 2024 -0600

    Use stable-diffusion-v1-5 repo instead

commit d8ad364
Author: Takashi Takebayashi <[email protected]>
Date:   Thu Oct 3 14:33:37 2024 +0900

    Fix typo

    Github -> GitHub

commit f57ec2b
Author: missionfloyd <[email protected]>
Date:   Tue Sep 3 19:58:29 2024 -0600

    Update stable diffusion 1.5 URL

commit 9677b09
Author: gutris1 <[email protected]>
Date:   Wed Aug 7 17:37:23 2024 +0700

    add break-word for geninfo in pnginfo

commit cbaaf0a
Author: hello2564 <[email protected]>
Date:   Wed Jul 31 14:55:30 2024 +0800

    fix NGMS pr typo

commit 4823909
Merge: 850e149 82a973c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Jul 27 15:50:26 2024 +0300

    Merge branch 'master' into dev

commit 850e149
Merge: 834297b 8e0881d
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Jul 27 15:47:49 2024 +0300

    Merge pull request AUTOMATIC1111#16275 from AUTOMATIC1111/fix-image-upscale-on-cpu

    fix image upscale on cpu

commit 8e0881d
Author: w-e-w <[email protected]>
Date:   Sat Jul 27 21:10:20 2024 +0900

    fix image upscale on cpu

    for some reason upscale using cpu will fail with
    RuntimeError: Inplace update to inference tensor outside InferenceMode
    switch from no_grad to inference_mode seems to have fixed it

commit 834297b
Merge: 9f5a98d c19d044
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Jul 27 07:09:08 2024 +0300

    Merge branch 'master' into dev
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.

2 participants