              logger.warning("Swallowed OS Error caused by Tensorflow distributed training. output "
                             "line: %s, error: %s", output, str(err))
  
      def _update_viewers(self,
                          viewer: T.Optional[T.Callable[[np.ndarray, str], None]],
                          timelapse_kwargs: T.Optional[T.Dict[Literal["input_a",
                                                                      "input_b",
                                                                      "output"], str]]) -> None:
          """ Update the preview viewer and timelapse output
  
          Parameters
          ----------
          viewer: :func:`scripts.train.Train._show` or ``None``
 
</s> remove                        viewer: T.Optional[T.Callable[[np.ndarray, str], None]],
                       timelapse_kwargs: T.Optional[T.Dict[Literal["input_a",
                                                                   "input_b",
                                                                   "output"], str]]) -> None:
 </s> add                        viewer: Callable[[np.ndarray, str], None] | None,
                       timelapse_kwargs: dict[T.Literal["input_a", "input_b", "output"],
                                              str] | None) -> None: </s> remove     def output_timelapse(self, timelapse_kwargs: T.Dict[Literal["input_a",
 </s> add     def output_timelapse(self, timelapse_kwargs: dict[T.Literal["input_a", </s> remove     def _launch_thread(self) -> Optional[FSThread]:
 </s> add     def _launch_thread(self) -> FSThread | None: </s> remove     def _set_timelapse(self) -> Dict[Literal["input_a", "input_b", "output"], str]:
 </s> add     def _set_timelapse(self) -> dict[T.Literal["input_a", "input_b", "output"], str]: </s> remove                          ) -> T.Dict[Literal["a", "b"], T.List[np.ndarray]]:
 </s> add                          ) -> dict[T.Literal["a", "b"], list[np.ndarray]]:
                        viewer: Callable[[np.ndarray, str], None] | None,
                        timelapse_kwargs: dict[T.Literal["input_a", "input_b", "output"],
                                               str] | None) -> None:
              logger.warning("Swallowed OS Error caused by Tensorflow distributed training. output "
                             "line: %s, error: %s", output, str(err))
  
      def _update_viewers(self,
                        viewer: Callable[[np.ndarray, str], None] | None,
                        timelapse_kwargs: dict[T.Literal["input_a", "input_b", "output"],
                                               str] | None) -> None:
                        viewer: Callable[[np.ndarray, str], None] | None,
                        timelapse_kwargs: dict[T.Literal["input_a", "input_b", "output"],
                                               str] | None) -> None:
                        viewer: Callable[[np.ndarray, str], None] | None,
                        timelapse_kwargs: dict[T.Literal["input_a", "input_b", "output"],
                                               str] | None) -> None:
                        viewer: Callable[[np.ndarray, str], None] | None,
                        timelapse_kwargs: dict[T.Literal["input_a", "input_b", "output"],
                                               str] | None) -> None:
          """ Update the preview viewer and timelapse output
  
          Parameters
          ----------
          viewer: :func:`scripts.train.Train._show` or ``None``
keep keep keep keep replace replace replace replace keep keep keep keep keep
 Rebase code (#1326)

* Remove tensorflow_probability requirement

* setup.py - fix progress bars

* requirements.txt: Remove pre python 3.9 packages

* update apple requirements.txt

* update INSTALL.md

* Remove python<3.9 code

* setup.py - fix Windows Installer

* typing: python3.9 compliant

* Update pytest and readthedocs python versions

* typing fixes

* Python Version updates
  - Reduce max version to 3.10
  - Default to 3.10 in installers
  - Remove incompatible 3.11 tests

* Update dependencies

* Downgrade imageio dep for Windows

* typing: merge optional unions and fixes

* Updates
  - min python version 3.10
  - typing to python 3.10 spec
  - remove pre-tf2.10 code
  - Add conda tests

* train: re-enable optimizer saving

* Update dockerfiles

* Update setup.py
  - Apple Conda deps to setup.py
  - Better Cuda + dependency handling

* bugfix: Patch logging to prevent Autograph errors

* Update dockerfiles

* Setup.py - Setup.py - stdout to utf-8

* Add more OSes to github Actions

* suppress mac-os end to end test 
plugins/train/trainer/_base.py