Commit 5a6387e1 authored by AUTOMATIC's avatar AUTOMATIC
Browse files

make it possible to change models etc by editing options using API

parent 84a6f211
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -253,9 +253,8 @@ class Api:
        return options

    def set_config(self, req: Dict[str, Any]):
       
        for o in req:
            setattr(shared.opts, o, req[o])
        for k, v in req.items():
            shared.opts.set(k, v)

        shared.opts.save(shared.config_filename)
        return
+17 −0
Original line number Diff line number Diff line
@@ -437,6 +437,23 @@ class Options:

        return super(Options, self).__getattribute__(item)

    def set(self, key, value):
        """sets an option and calls its onchange callback, returning True if the option changed and False otherwise"""

        oldval = self.data.get(key, None)
        if oldval == value:
            return False

        try:
            setattr(self, key, value)
        except RuntimeError:
            return False

        if self.data_labels[key].onchange is not None:
            self.data_labels[key].onchange()

        return True

    def save(self, filename):
        assert not cmd_opts.freeze_settings, "saving settings is disabled"

+4 −18
Original line number Diff line number Diff line
@@ -1484,16 +1484,9 @@ def create_ui(wrap_gradio_gpu_call):
            if comp == dummy_component:
                continue

            oldval = opts.data.get(key, None)
            try:
                setattr(opts, key, value)
            except RuntimeError:
                continue
            if oldval != value:
                if opts.data_labels[key].onchange is not None:
                    opts.data_labels[key].onchange()

            if opts.set(key, value):
                changed.append(key)

        try:
            opts.save(shared.config_filename)
        except RuntimeError:
@@ -1504,15 +1497,8 @@ def create_ui(wrap_gradio_gpu_call):
        if not opts.same_type(value, opts.data_labels[key].default):
            return gr.update(visible=True), opts.dumpjson()

        oldval = opts.data.get(key, None)
        try:
            setattr(opts, key, value)
        except Exception:
            return gr.update(value=oldval), opts.dumpjson()

        if oldval != value:
            if opts.data_labels[key].onchange is not None:
                opts.data_labels[key].onchange()
        if not opts.set(key, value):
            return gr.update(value=getattr(opts, key)), opts.dumpjson()

        opts.save(shared.config_filename)