mirror of https://github.com/vladmandic/automatic
Simplify options init/save/load
parent
d7e5c97c89
commit
0faabffc14
|
|
@ -99,7 +99,7 @@ def set_config(req: Dict[str, Any]):
|
|||
updated = []
|
||||
for k, v in req.items():
|
||||
updated.append({ k: shared.opts.set(k, v) })
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
return { "updated": updated }
|
||||
|
||||
def get_cmd_flags():
|
||||
|
|
|
|||
|
|
@ -20,17 +20,18 @@ compatibility_opts = ['clip_skip', 'uni_pc_lower_order_final', 'uni_pc_order']
|
|||
class Options():
|
||||
data = None
|
||||
data_labels = None
|
||||
filename = None
|
||||
typemap = {int: float}
|
||||
debug = os.environ.get('SD_CONFIG_DEBUG', None) is not None
|
||||
|
||||
def __init__(self, options_templates: dict[str, OptionInfo | LegacyOption] = {}, restricted_opts: set[str] | None = None):
|
||||
def __init__(self, options_templates: dict[str, OptionInfo | LegacyOption] = {}, restricted_opts: set[str] | None = None, *, filename = "config.json"):
|
||||
if restricted_opts is None:
|
||||
restricted_opts = set()
|
||||
self.filename = filename
|
||||
self.data_labels = options_templates
|
||||
self.restricted_opts = restricted_opts
|
||||
self.data = {k: v.default for k, v in self.data_labels.items()}
|
||||
self.legacy = [k for k, v in self.data_labels.items() if isinstance(v, LegacyOption)]
|
||||
self.load()
|
||||
|
||||
def __setattr__(self, key, value): # pylint: disable=inconsistent-return-statements
|
||||
if self.data is not None:
|
||||
|
|
@ -103,8 +104,6 @@ class Options():
|
|||
def save_atomic(self, filename=None, silent=False):
|
||||
if self.debug:
|
||||
log.debug(f'Settings: save settings="{self.filename}" override="{filename}" cmd="{cmd_opts.config}" cwd="{os.getcwd()}"')
|
||||
if self.filename is None:
|
||||
self.filename = cmd_opts.config
|
||||
if filename is None:
|
||||
filename = self.filename
|
||||
filename = os.path.abspath(filename)
|
||||
|
|
|
|||
|
|
@ -490,7 +490,7 @@ class YoloRestorer(Detailer):
|
|||
shared.opts.detailer_sort = sort
|
||||
shared.opts.detailer_seg = seg
|
||||
# shared.opts.detailer_resolution = resolution
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
shared.log.debug(f'Detailer settings: models={detailers} classes={classes} strength={strength} conf={min_confidence} max={max_detected} iou={iou} size={min_size}-{max_size} padding={padding} steps={steps} resolution={resolution} save={save} sort={sort} seg={seg}')
|
||||
if not self.ui_mode:
|
||||
shared.log.debug(f'Detailer expert: {text}')
|
||||
|
|
|
|||
|
|
@ -831,9 +831,8 @@ options_templates.update(options_section(('hidden_options', "Hidden options"), {
|
|||
from modules.shared_legacy import get_legacy_options
|
||||
options_templates.update(get_legacy_options())
|
||||
from modules.options_handler import Options
|
||||
opts = Options(options_templates, restricted_opts)
|
||||
config_filename = cmd_opts.config
|
||||
opts.load(config_filename)
|
||||
opts = Options(options_templates, restricted_opts, filename=config_filename)
|
||||
cmd_opts = cmd_args.settings_args(opts, cmd_opts)
|
||||
if cmd_opts.locale is not None:
|
||||
opts.data['ui_locale'] = cmd_opts.locale
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ def update_vlm_params(*args):
|
|||
shared.opts.interrogate_vlm_keep_prefill = bool(vlm_keep_prefill)
|
||||
shared.opts.interrogate_vlm_keep_thinking = bool(vlm_keep_thinking)
|
||||
shared.opts.interrogate_vlm_thinking_mode = bool(vlm_thinking_mode)
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
|
||||
|
||||
def update_clip_params(*args):
|
||||
|
|
@ -52,7 +52,7 @@ def update_clip_params(*args):
|
|||
shared.opts.interrogate_clip_num_beams = int(clip_num_beams)
|
||||
shared.opts.interrogate_clip_flavor_count = int(clip_flavor_count)
|
||||
shared.opts.interrogate_clip_chunk_size = int(clip_chunk_size)
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
openclip.update_interrogate_params()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1071,7 +1071,7 @@ def create_ui(container, button_parent, tabname, skip_indexing = False):
|
|||
def ui_sort_cards(sort_order):
|
||||
if shared.opts.extra_networks_sort != sort_order:
|
||||
shared.opts.extra_networks_sort = sort_order
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
return f'Networks: sort={sort_order}'
|
||||
|
||||
dummy = gr.State(value=False) # pylint: disable=abstract-class-instantiated
|
||||
|
|
|
|||
|
|
@ -200,51 +200,51 @@ def create_sampler_options(tabname):
|
|||
shared.opts.data['schedulers_use_loworder'] = 'low order' in sampler_options
|
||||
shared.opts.data['schedulers_rescale_betas'] = 'rescale' in sampler_options
|
||||
shared.log.debug(f'Sampler set options: {sampler_options}')
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_timesteps(timesteps):
|
||||
shared.log.debug(f'Sampler set options: timesteps={timesteps}')
|
||||
shared.opts.schedulers_timesteps = timesteps
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_spacing(spacing):
|
||||
shared.log.debug(f'Sampler set options: spacing={spacing}')
|
||||
shared.opts.schedulers_timestep_spacing = spacing
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_sigma(sampler_sigma):
|
||||
shared.log.debug(f'Sampler set options: sigma={sampler_sigma}')
|
||||
shared.opts.schedulers_sigma = sampler_sigma
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_order(sampler_order):
|
||||
shared.log.debug(f'Sampler set options: order={sampler_order}')
|
||||
shared.opts.schedulers_solver_order = sampler_order
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_prediction(sampler_prediction):
|
||||
shared.log.debug(f'Sampler set options: prediction={sampler_prediction}')
|
||||
shared.opts.schedulers_prediction_type = sampler_prediction
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_beta(sampler_beta):
|
||||
shared.log.debug(f'Sampler set options: beta={sampler_beta}')
|
||||
shared.opts.schedulers_beta_schedule = sampler_beta
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sampler_shift(sampler_shift, sampler_base_shift, sampler_max_shift):
|
||||
shared.log.debug(f'Sampler set options: shift={sampler_shift} base={sampler_base_shift} max={sampler_max_shift}')
|
||||
shared.opts.schedulers_shift = sampler_shift
|
||||
shared.opts.schedulers_base_shift = sampler_base_shift
|
||||
shared.opts.schedulers_max_shift = sampler_max_shift
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
def set_sigma_adjust(val, start, end):
|
||||
shared.log.debug(f'Sampler set options: sigma={val} min={start} max={end}')
|
||||
shared.opts.schedulers_sigma_adjust = val
|
||||
shared.opts.schedulers_sigma_adjust_min = start
|
||||
shared.opts.schedulers_sigma_adjust_max = end
|
||||
shared.opts.save(shared.config_filename, silent=True)
|
||||
shared.opts.save(silent=True)
|
||||
|
||||
# 'linear', 'scaled_linear', 'squaredcos_cap_v2'
|
||||
def set_sampler_preset(preset):
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ def apply_setting(key, value):
|
|||
shared.opts.data[key] = valtype(value) if valtype != type(None) else value
|
||||
if oldval != value and shared.opts.data_labels[key].onchange is not None:
|
||||
shared.opts.data_labels[key].onchange()
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
return getattr(shared.opts, key)
|
||||
|
||||
|
||||
|
|
@ -149,7 +149,7 @@ def run_settings(*args):
|
|||
shared.opts.sd_backend = "diffusers"
|
||||
try:
|
||||
if len(changed) > 0:
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
shared.log.info(f'Settings: changed={len(changed)} {changed}')
|
||||
except RuntimeError:
|
||||
shared.log.error(f'Settings failed: change={len(changed)} {changed}')
|
||||
|
|
@ -167,7 +167,7 @@ def run_settings_single(value, key, progress=False):
|
|||
if shared.cmd_opts.use_directml:
|
||||
from modules.dml import directml_override_opts
|
||||
directml_override_opts()
|
||||
shared.opts.save(shared.config_filename)
|
||||
shared.opts.save()
|
||||
if key not in ['sd_model_checkpoint', 'sd_model_refiner', 'sd_vae', 'sd_te', 'sd_unet']:
|
||||
shared.log.debug(f'Setting changed: {key}={value} progress={progress}')
|
||||
return get_value_for_setting(key), shared.opts.dumpjson()
|
||||
|
|
|
|||
Loading…
Reference in New Issue