Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
Stable Diffusion Webui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
novelai-storage
Stable Diffusion Webui
Commits
ba92135a
Commit
ba92135a
authored
Dec 30, 2023
by
AUTOMATIC1111
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add override_settings support for infotext API
parent
bb07cb6a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
22 deletions
+54
-22
modules/api/api.py
modules/api/api.py
+10
-0
modules/generation_parameters_copypaste.py
modules/generation_parameters_copypaste.py
+44
-22
No files found.
modules/api/api.py
View file @
ba92135a
...
...
@@ -341,6 +341,7 @@ class Api:
params
=
generation_parameters_copypaste
.
parse_generation_parameters
(
request
.
infotext
)
handled_fields
=
{}
for
field
in
generation_parameters_copypaste
.
paste_fields
[
tabname
][
"fields"
]:
if
not
field
.
api
:
continue
...
...
@@ -355,6 +356,15 @@ class Api:
value
=
target_type
(
value
)
setattr
(
request
,
field
.
api
,
value
)
handled_fields
[
field
.
label
]
=
1
if
request
.
override_settings
is
None
:
request
.
override_settings
=
{}
overriden_settings
=
generation_parameters_copypaste
.
get_override_settings
(
params
,
skip_fields
=
handled_fields
)
for
infotext_text
,
setting_name
,
value
in
overriden_settings
:
if
setting_name
not
in
request
.
override_settings
:
request
.
override_settings
[
setting_name
]
=
value
return
params
...
...
modules/generation_parameters_copypaste.py
View file @
ba92135a
...
...
@@ -390,6 +390,48 @@ def create_override_settings_dict(text_pairs):
return
res
def
get_override_settings
(
params
,
*
,
skip_fields
=
None
):
"""Returns a list of settings overrides from the infotext parameters dictionary.
This function checks the `params` dictionary for any keys that correspond to settings in `shared.opts` and returns
a list of tuples containing the parameter name, setting name, and new value cast to correct type.
It checks for conditions before adding an override:
- ignores settings that match the current value
- ignores parameter keys present in skip_fields argument.
Example input:
{"Clip skip": "2"}
Example output:
[("Clip skip", "CLIP_stop_at_last_layers", 2)]
"""
res
=
[]
mapping
=
[(
info
.
infotext
,
k
)
for
k
,
info
in
shared
.
opts
.
data_labels
.
items
()
if
info
.
infotext
]
for
param_name
,
setting_name
in
mapping
+
infotext_to_setting_name_mapping
:
if
param_name
in
(
skip_fields
or
{}):
continue
v
=
params
.
get
(
param_name
,
None
)
if
v
is
None
:
continue
if
setting_name
==
"sd_model_checkpoint"
and
shared
.
opts
.
disable_weights_auto_swap
:
continue
v
=
shared
.
opts
.
cast_value
(
setting_name
,
v
)
current_value
=
getattr
(
shared
.
opts
,
setting_name
,
None
)
if
v
==
current_value
:
continue
res
.
append
((
param_name
,
setting_name
,
v
))
return
res
def
connect_paste
(
button
,
paste_fields
,
input_comp
,
override_settings_component
,
tabname
):
def
paste_func
(
prompt
):
if
not
prompt
and
not
shared
.
cmd_opts
.
hide_ui_dir_config
:
...
...
@@ -431,29 +473,9 @@ def connect_paste(button, paste_fields, input_comp, override_settings_component,
already_handled_fields
=
{
key
:
1
for
_
,
key
in
paste_fields
}
def
paste_settings
(
params
):
vals
=
{}
mapping
=
[(
info
.
infotext
,
k
)
for
k
,
info
in
shared
.
opts
.
data_labels
.
items
()
if
info
.
infotext
]
for
param_name
,
setting_name
in
mapping
+
infotext_to_setting_name_mapping
:
if
param_name
in
already_handled_fields
:
continue
v
=
params
.
get
(
param_name
,
None
)
if
v
is
None
:
continue
if
setting_name
==
"sd_model_checkpoint"
and
shared
.
opts
.
disable_weights_auto_swap
:
continue
v
=
shared
.
opts
.
cast_value
(
setting_name
,
v
)
current_value
=
getattr
(
shared
.
opts
,
setting_name
,
None
)
if
v
==
current_value
:
continue
vals
[
param_name
]
=
v
vals
=
get_override_settings
(
params
,
skip_fields
=
already_handled_fields
)
vals_pairs
=
[
f
"{
k}: {v}"
for
k
,
v
in
vals
.
items
()
]
vals_pairs
=
[
f
"{
infotext_text}: {value}"
for
infotext_text
,
setting_name
,
value
in
vals
]
return
gr
.
Dropdown
.
update
(
value
=
vals_pairs
,
choices
=
vals_pairs
,
visible
=
bool
(
vals_pairs
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment