code: def run_settings(self, *args):
      changed = []
  
      for key, value, comp in zip(
          opts.data_labels.keys(), args, self.components
      ):
          assert comp == self.dummy_component or opts.same_type(
              value, opts.data_labels[key].default
          ), f"Bad value for setting {key}: {value}; expecting {type(opts.data_labels[key].default).__name__}"
  
      for key, value, comp in zip(
          opts.data_labels.keys(), args, self.components
      ):
          if comp == self.dummy_component:
              continue
  
          if opts.set(key, value):
              changed.append(key)
  
      try:
          opts.save(shared.config_filename)
      except RuntimeError:
          return (
              opts.dumpjson(),
              f'{len(changed)} settings changed without save: {", ".join(changed)}.',
          )
      return (
          opts.dumpjson(),
          f'{len(changed)} settings changed{": " if changed else ""}{", ".join(changed)}.',
      )
  
file_path: stable-diffusion-webui/modules/ui_settings.py
imports: import gradio
  from modules import ui_common, shared, script_callbacks, scripts, sd_models, sysinfo, timer
  from modules.call_queue import wrap_gradio_call
  from modules.shared import opts
  from modules.ui_components import FormRow
  from modules.ui_gradio_extensions import reload_javascript
  from concurrent.futures import ThreadPoolExecutor, as_completed
label_desc: Use image node_id 1 for calling the UiSettings obj's underlying member method code with example usage: obj.run_settings() and returns: opts,  len, str, unknown, str, str, opts,  len, str, str, str