          logger.debug("Cache shape: %s", self._images.shape)
          return True
  
      def _load_images_to_cache(self,
                                image_files: List[str],
                                frame_dims: Tuple[int, int],
                                thumbnail_size: int) -> bool:
          """ Load preview images to the image cache.
  
          Load new images and append to cache, filtering the cache to the number of thumbnails that
          will fit inside the display panel.
 
</s> remove     def load_latest_preview(self, thumbnail_size: int, frame_dims: Tuple[int, int]) -> bool:
 </s> add     def load_latest_preview(self, thumbnail_size: int, frame_dims: tuple[int, int]) -> bool: </s> remove     def _place_previews(self, frame_dims: Tuple[int, int]) -> Image.Image:
 </s> add     def _place_previews(self, frame_dims: tuple[int, int]) -> Image.Image: </s> remove     def add_image(self, name: str, image: "np.ndarray") -> None:
 </s> add     def add_image(self, name: str, image: np.ndarray) -> None: </s> remove                          samples: List[np.ndarray],
                         filenames: List[str],
 </s> add                          samples: list[np.ndarray],
                         filenames: list[str], </s> remove         display = np.vstack([np.hstack(cast(Sequence, samples[row * cols: (row + 1) * cols]))
 </s> add         display = np.vstack([np.hstack(T.cast("Sequence", samples[row * cols: (row + 1) * cols]))
                              image_files: list[str],
                              frame_dims: tuple[int, int],
          logger.debug("Cache shape: %s", self._images.shape)
          return True
  
      def _load_images_to_cache(self,
                              image_files: list[str],
                              frame_dims: tuple[int, int],
                              image_files: list[str],
                              frame_dims: tuple[int, int],
                                thumbnail_size: int) -> bool:
          """ Load preview images to the image cache.
  
          Load new images and append to cache, filtering the cache to the number of thumbnails that
          will fit inside the display panel.
keep keep keep keep 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 
lib/gui/utils/image.py