-
Notifications
You must be signed in to change notification settings - Fork 27.6k
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
Fix postprocessing_enable_in_main_ui ScriptPostprocessing elem_id #16373
Conversation
Maybe there is a universal way to allow coping of Input According, i.e. allow existence of InputAccordions with the same id. I remember I copied soft inpaint ui ik my extension, and a was needed to recreate InputAccordion element. Even callbacks on after/before component couldn't help with this, because it copies elem_id in constructor moment somewhere I also tried to add on_before_component in init of input accordion, but it was a bad idea because it's not possible to pass arguments by reference to edit elem_id Maybe it's possible to avoid coping elem_id to somewhere, and use lambdas, but I don't remember global input accordions ids is in python or JavaScript Btw if do something, it goes into a new pr, because it helps with on_after_component, not with postprocessing in ui. But also if this is implemented, we can avoid using |
yes I consider that path, and yes if we only want to fix the issue for only
the whole reason behind a fixed elem_id is that it porvides a unambiguous way to "targeting" the element using JavaScrip / CSS and sometimes in python as well but that code the use the elem id can be anywhere,
there's no way we can know what code would be using the elem id for their own reason, and so there's no way we can retroactively modify that code to the correct element and so the only way we can truly fix this is at the source, "the ID should be unique in the first place" and this is why
I don't quite follow you |
I don't mean dynamic element ids, I suggest relay on ids which gradio components have after ui created. Not on what they have in constructor. E.g. allow x = InputAccordion()
x.elem_id = "my_elem_id"
For example this in my replacer's code. I don't suggest exactly the same, I mean similar logic needWatchControlNetUI = False
controlNetAccordion = None
def watchControlNetUI(component, **kwargs):
global needWatchControlNetUI, controlNetAccordion
if not needWatchControlNetUI:
return
elem_id = kwargs.get('elem_id', None)
if elem_id is None:
return
if elem_id == 'controlnet':
controlNetAccordion = component
return
if 'img2img' in elem_id:
component.elem_id = elem_id.replace('img2img', 'replacer')
...
script_callbacks.on_after_component(replacer_extensions.controlnet.watchControlNetUI) I can enable this code by setting up |
I mean delay this code inside self.accordion_id = kwargs.get('elem_id')
if self.accordion_id is None:
self.accordion_id = f"input-accordion-{InputAccordion.global_index}"
InputAccordion.global_index += 1
kwargs_checkbox = {
**kwargs,
"elem_id": f"{self.accordion_id}-checkbox",
"visible": False,
}
super().__init__(value, **kwargs_checkbox)
self.change(fn=None, _js='function(checked){ inputAccordionChecked("' + self.accordion_id + '", checked); }', inputs=[self])
kwargs_accordion = {
**kwargs,
"elem_id": self.accordion_id,
"label": kwargs.get('label', 'Accordion'),
"elem_classes": ['input-accordion'],
"open": value,
}
self.accordion = gr.Accordion(**kwargs_accordion) On the moment after ui created, but the app was not started |
yes I have also considered delaying the init of InputAccordion , in face that was one of my initial solutions, but as I have mentioned solving the issue for InputAccordion it's basically just postponing the root issue
this issue has existed ever since postprocessing_enable_in_main_ui is introduced but it wasn't causing major issues until switch to InputAccordion maybe having additional code for fixing it for InputAccordion, as it can improve compatibility of some extensions without change, but since it's not fixing the root issue, I belive the InputAccordion should not introduce extra complexity to the cloud base
if an element ID is set replace it with something unique after it's been created so the next time you run into duplicate ID issues, something similar to my current PR would need to be applied if you want additional fixes that makes duplicate elem_id InputAccordion compatible without modification on extension side, good I'm also considering that |
So you think elem_id_suffix() is still important because we need to avoid duplicating of ids for js, css etc? And my suggested solution is not applicable for this problem in a proper way. Do I understand correctly? |
that's basically it that's the reason why people want elem ids is to serve as an unique identifier for the element from "anywhere", they may have different use case we simply cannot account there's nothing wrong with makeing InputAccordion more compatible, it is just it's not solving the root issue, which is what does PR is trying to address |
* dev-a1111: fix passing of literal backslash (AUTOMATIC1111#16671) fix prompt-bracket-checker miscounting of literal tokens (AUTOMATIC1111#16669) Bump safetensors to v0.4.5 Honor lossless webp compression option in API use shared.hf_endpoint (AUTOMATIC1111#16611) Warn if WebUI is installed under a dot directory (AUTOMATIC1111#16584) sd_xl_v.yaml: use_checkpoint = False XYZ option to disable grid (AUTOMATIC1111#16416) Fix Default system None filter logic (AUTOMATIC1111#16309) Fix weighting config for SDXL v-pred InputAccordion duplicate elem_id handling (AUTOMATIC1111#16381) addEventListener {passive: false} (AUTOMATIC1111#16575) pyenv-win compatibility - another approach (AUTOMATIC1111#16287) Disable Hires checkpoint if same as First pass checkpoint (AUTOMATIC1111#16269) Fix postprocessing_enable_in_main_ui ScriptPostprocessing elem_id (AUTOMATIC1111#16373) extra_only / main_ui_only ScriptPostprocessing (AUTOMATIC1111#16374) Allow newline in Extra Network activation text (AUTOMATIC1111#16428) image embedding data cache (AUTOMATIC1111#16556) Fix typo
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
Description
Fix
postprocessing_enable_in_main_ui
ScriptPostprocessing
duplicateelem_id
ScriptPostprocessing
(extras
tab) modules such asUpscale
can be use as a processing add on intxt2img
andimg2img
pipeline with the use ofScriptPostprocessingForMainUI
/opts.postprocessing_enable_in_main_ui
this causes an issue, due to the way
ScriptPostprocessingForMainUI
creates the UI for theScriptPostprocessing
UI is the same as Extra tab, if an element has a fixedelem_id
configured the element IDs will be duplicatedthis has always been an issue since the beginning but this has become a serious issue due to the switch to
InputAccordion
inScriptPostprocessing
as
InputAccordion
relies on the id being unique (if manually set)the issue can be reproduced by
Setting > Postprocessing > Enable postprocessing operations in txt2img and img2img tabs
addUpscale
Upscale
on extras tab, you should find that theInputAccordion
is not responsiveInputAccordion
ontxt2img
tab actually controls theInputAccordion
onextras
tabProposed solution
similer to
scripts.Script
elem_id
should be generated with theelem_id()
helper functiontab_name
will be append to the end of theelem_id
on
extras
tabtab_name
is blankbut before
ScriptPostprocessingForMainUI
creates the UI,tab_name
of the script should be set to_txt2img
or_img2img
issue with this approach any extension that wishes to make their
ScriptPostprocessing
should also be update to useelem_id()
to create thereelem_id
unfortunately I don't think there is a better solution that can be applied in automatic efficiently issue globally without change to extensions
reason being
elem_id
are mostly reference inside JavaScript, and there's really no unified method of modifying what function do they target within pythonalso additional inconvenience extension that wishes to use this function if they wish to maintain compatibility with old versions of web UI they need to test if this function exists
there are two variant of the create elem_id helper function
elem_id()
andfunc elem_id_suffix()
elem_id()
is for new extentions, they can use this to creat there elem_id, this create the ID withextras_
andscript name
prefix followed by the input string andtab_name
suffixfunc elem_id_suffix()
on the other hand only adds the suffix without modifying the rest of the IDthe reason is that it is possible that some other things extensions are already utilizing set ID to Target the specific elements and it would be bad to multiply the ID
Note invalid characters are still removed in both functions
Checklist: