mirror of
https://github.com/vladmandic/automatic
synced 2026-09-20 01:31:13 +02:00
allow styles to modify settings and improve parser
Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
*note*: SD.Next will use either SageAttention v1/v2/v2++, depending which one is installed
|
||||
until authors provide pre-build wheels for v2++, you need to install it manually or SD.Next will auto-install v1
|
||||
- **Other**
|
||||
- **Styles** can now include both generation params and server settings
|
||||
see [Styles wiki](https://github.com/vladmandic/sdnext/wiki/Styles) for details
|
||||
- **TAESD** is now default preview type since its the only one that supports most new models
|
||||
- SD.Next now starts with *locked* state preventing model loading until startup is complete
|
||||
- **API**
|
||||
|
||||
+20
-8
@@ -6,7 +6,7 @@ import csv
|
||||
import json
|
||||
import time
|
||||
import random
|
||||
from modules import files_cache, shared, infotext
|
||||
from modules import files_cache, shared, infotext, sd_models, sd_vae
|
||||
|
||||
|
||||
class Style():
|
||||
@@ -145,37 +145,49 @@ def apply_styles_to_extra(p, style: Style):
|
||||
'sampler': 'sampler_name',
|
||||
'size-1': 'width',
|
||||
'size-2': 'height',
|
||||
'model': 'sd_model_checkpoint',
|
||||
'vae': 'sd_vae',
|
||||
'unet': 'sd_unet',
|
||||
'te': 'sd_text_encoder',
|
||||
'refine': 'enable_hr',
|
||||
'hires': 'hr_force',
|
||||
}
|
||||
name_exclude = [
|
||||
'size',
|
||||
]
|
||||
reference_style = get_reference_style()
|
||||
extra = infotext.parse(reference_style) if shared.opts.extra_network_reference_values else {}
|
||||
|
||||
style_extra = apply_wildcards_to_prompt(style.extra, [style.wildcards], silent=True)
|
||||
style_extra = ' ' + style_extra.lower()
|
||||
extra.update(infotext.parse(style_extra))
|
||||
extra.pop('Prompt', None)
|
||||
extra.pop('Negative prompt', None)
|
||||
fields = []
|
||||
params = []
|
||||
settings = []
|
||||
skipped = []
|
||||
for k, v in extra.items():
|
||||
k = k.lower()
|
||||
k = k.replace(' ', '_')
|
||||
k = k.lower().replace(' ', '_')
|
||||
if k in name_map: # rename some fields
|
||||
k = name_map[k]
|
||||
if k in name_exclude: # exclude some fields
|
||||
continue
|
||||
if hasattr(p, k):
|
||||
elif hasattr(p, k):
|
||||
orig = getattr(p, k)
|
||||
if (type(orig) != type(v)) and (orig is not None):
|
||||
if not (type(orig) == int and type(v) == float): # dont convert float to int
|
||||
v = type(orig)(v)
|
||||
setattr(p, k, v)
|
||||
fields.append(f'{k}={v}')
|
||||
params.append(f'{k}={v}')
|
||||
elif shared.opts.data_labels.get(k, None) is not None:
|
||||
shared.opts.data[k] = v
|
||||
if k == 'sd_model_checkpoint':
|
||||
sd_models.reload_model_weights()
|
||||
if k == 'sd_vae':
|
||||
sd_vae.reload_vae_weights()
|
||||
settings.append(f'{k}={v}')
|
||||
else:
|
||||
skipped.append(f'{k}={v}')
|
||||
shared.log.debug(f'Apply style: name="{style.name}" extra={fields} skipped={skipped} reference={True if reference_style else False}')
|
||||
shared.log.debug(f'Apply style: name="{style.name}" params={params} settings={settings} unknown={skipped} reference={True if reference_style else False}')
|
||||
|
||||
|
||||
class StyleDatabase:
|
||||
|
||||
+1
-1
Submodule wiki updated: d685d8132b...a8d925f54c
Reference in New Issue
Block a user