  
      def _create_menu(self):
          """ Create the menu based on :attr:`_labels` and :attr:`_actions`. """
          for idx, (label, action) in enumerate(zip(self._labels, self._actions)):
              kwargs = dict(label=label, command=action)
              if isinstance(self._hotkeys, (list, tuple)) and self._hotkeys[idx]:
                  kwargs["accelerator"] = self._hotkeys[idx]
              self.add_command(**kwargs)
  
      def popup(self, event):
 
</s> remove         self._set_mode("determinate")
 </s> add         self._mode = "determinate"
        self._set_mode(self._mode) </s> remove     def save(self, is_exit: bool = False) -> None:
        """ Save the model to disk.

        Saves the serialized model, with weights, to the folder location specified when
        initializing the plugin. If loss has dropped on both sides of the model, then
        a backup is taken.

        Parameters
        ----------
        is_exit: bool, optional
            ``True`` if the save request has come from an exit process request otherwise ``False``
            Default: ``False``
        """
        self._io.save(is_exit=is_exit)

    def snapshot(self) -> None:
        """ Creates a snapshot of the model folder to the models parent folder, with the number
        of iterations completed appended to the end of the model name. """
        self._io.snapshot()

 </s> add  </s> remove     def _set_mode(self, mode):
        """ Set the progress bar mode """
        self._pbar.config(mode=mode)
 </s> add     def _set_mode(self, mode: T.Literal["indeterminate", "determinate"]) -> None:
        """ Set the progress bar mode

        Parameters
        ----------
        mode: ["indeterminate", "determinate"]
            The mode that the progress bar should be executed in
        """
        self._mode = mode
        self._pbar.config(mode=self._mode) </s> remove     def save(self, is_exit: bool = False, force_save_optimizer: bool = False) -> None:
 </s> add     def save(self,
             is_exit: bool = False,
             force_save_optimizer: bool = False) -> None:
            kwargs = {"label": label, "command": action}
  
      def _create_menu(self):
          """ Create the menu based on :attr:`_labels` and :attr:`_actions`. """
          for idx, (label, action) in enumerate(zip(self._labels, self._actions)):
            kwargs = {"label": label, "command": action}
              if isinstance(self._hotkeys, (list, tuple)) and self._hotkeys[idx]:
                  kwargs["accelerator"] = self._hotkeys[idx]
              self.add_command(**kwargs)
  
      def popup(self, event):
keep keep keep keep replace keep keep keep keep keep
 Learning Rate finder (#1341)

* Add LR Finder support structure

* Move trainer.Feeder to lib.training.generator

* Expose model.io

* Add lr_finder

* Update docs and locales

* Pre-PR fixups
  - Fix training graph not displaying
  - CI fixes
  - Switch lr finder progress to tqdm
  - Exit lr finder early on NaN
  - Display lr finder progress in GUI 
lib/gui/custom_widgets.py