          pbar = ttk.Progressbar(progressframe,
                                 length=200,
                                 variable=self._pbar_position,
                                 maximum=100,
                                 mode="determinate")
          pbar.pack(side=tk.LEFT, padx=2, fill=tk.X, expand=True)
          pbar.pack_forget()
          return pbar
  
      def start(self, mode):
 
</s> remove     def start(self, mode):
 </s> add     def start(self, mode: T.Literal["indeterminate", "determinate"]) -> None: </s> remove     def _progress_bar(self):
        """ Place progress bar into right of the status bar. """
 </s> add     def _progress_bar(self) -> ttk.Progressbar:
        """ Place progress bar into right of the status bar.

        Returns
        -------
        :class:`tkinter.ttk.Progressbar`
            The progress bar object
        """ </s> remove     def message(self):
 </s> add     def message(self) -> tk.StringVar: </s> remove         self._set_mode("determinate")
 </s> add         self._mode = "determinate"
        self._set_mode(self._mode) </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)
                               mode=self._mode)
          pbar = ttk.Progressbar(progressframe,
                                 length=200,
                                 variable=self._pbar_position,
                                 maximum=100,
                               mode=self._mode)
          pbar.pack(side=tk.LEFT, padx=2, fill=tk.X, expand=True)
          pbar.pack_forget()
          return pbar
  
      def start(self, mode):
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