          self._history: list[list[float]] = [[], []]  # Loss histories per save iteration
          self._backup = Backup(self._model_dir, self._plugin.name)
  
      @property
      def _filename(self) -> str:
          """str: The filename for this model."""
          return os.path.join(self._model_dir, f"{self._plugin.name}.h5")
  
      @property
      def model_exists(self) -> bool:
 
</s> remove         return os.path.isfile(self._filename)
 </s> add         return os.path.isfile(self.filename) </s> remove     def model_dir(self) -> str:
        """str: The full path to the model folder location. """
        return self._io._model_dir  # pylint:disable=protected-access
 </s> add     def io(self) -> IO:  # pylint:disable=invalid-name
        """ :class:`~plugins.train.model.io.IO`: Input/Output operations for the model """
        return self._io
    def model_dir(self) -> str:
        """ str: The full path to the model folder """
        return self._model_dir

    @property
    def filename(self) -> str:
          self._history: list[list[float]] = [[], []]  # Loss histories per save iteration
          self._backup = Backup(self._model_dir, self._plugin.name)
  
      @property
    def model_dir(self) -> str:
        """ str: The full path to the model folder """
        return self._model_dir

    @property
    def filename(self) -> str:
          """str: The filename for this model."""
          return os.path.join(self._model_dir, f"{self._plugin.name}.h5")
  
      @property
      def model_exists(self) -> bool:
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 
plugins/train/model/_base/io.py