          The parent frame that holds the canvas and taskbar
      taskbar: :class:`tkinter.ttk.Frame` or ``None``
          None if preview is a pop-up window otherwise ttk.Frame if taskbar is managed by the GUI
      """
      def __init__(self, parent: tk.Frame, taskbar: Optional[ttk.Frame]) -> None:
          logger.debug("Initializing %s (parent: '%s', taskbar: %s)",
                       self.__class__.__name__, parent, taskbar)
          self._is_standalone = taskbar is None
          self._gui_mapped: List[tk.Widget] = []
          self._frame = tk.Frame(parent) if taskbar is None else taskbar
 
</s> remove         self._gui_mapped: List[tk.Widget] = []
 </s> add         self._gui_mapped: list[tk.Widget] = [] </s> remove         self._vars = dict(save=tk.BooleanVar(),
                          scale=tk.StringVar(),
                          slider=tk.IntVar(),
                          interpolator=tk.IntVar())
 </s> add         self._vars = {"save": tk.BooleanVar(),
                      "scale": tk.StringVar(),
                      "slider": tk.IntVar(),
                      "interpolator": tk.IntVar()} </s> remove                  preview_buffer: "PreviewBuffer",
                 parent: Optional[tk.Widget] = None,
                 taskbar: Optional[ttk.Frame] = None,
                 triggers: Optional["TriggerType"] = None) -> None:
 </s> add                  preview_buffer: PreviewBuffer,
                 parent: tk.Widget | None = None,
                 taskbar: ttk.Frame | None = None,
                 triggers: TriggerType | None = None) -> None: </s> remove                  screen_dimensions: Tuple[int, int],
 </s> add                  screen_dimensions: tuple[int, int], </s> remove         self._drag_data: List[float] = [0., 0.]
 </s> add         self._drag_data: list[float] = [0., 0.]
    def __init__(self, parent: tk.Frame, taskbar: ttk.Frame | None) -> None:
          The parent frame that holds the canvas and taskbar
      taskbar: :class:`tkinter.ttk.Frame` or ``None``
          None if preview is a pop-up window otherwise ttk.Frame if taskbar is managed by the GUI
      """
    def __init__(self, parent: tk.Frame, taskbar: ttk.Frame | None) -> None:
          logger.debug("Initializing %s (parent: '%s', taskbar: %s)",
                       self.__class__.__name__, parent, taskbar)
          self._is_standalone = taskbar is None
          self._gui_mapped: List[tk.Widget] = []
          self._frame = tk.Frame(parent) if taskbar is None else taskbar
keep keep keep keep 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/training/preview_tk.py