      @property
      def _contexts(self) -> Dict[str, Dict[str, Union[str, Dict[str, str]]]]:
          """dict: Mapping of commands, actions and their corresponding file dialog for context
          handle types. """
          return dict(effmpeg=dict(input={"extract": "filename",
                                          "gen-vid": "dir",
                                          "get-fps": "filename",
                                          "get-info": "filename",
                                          "mux-audio": "filename",
                                          "rescale": "filename",
                                          "rotate": "filename",
                                          "slice": "filename"},
                                   output={"extract": "dir",
                                           "gen-vid": "save_filename",
                                           "get-fps": "nothing",
                                           "get-info": "nothing",
                                           "mux-audio": "save_filename",
                                           "rescale": "save_filename",
                                           "rotate": "save_filename",
                                           "slice": "save_filename"}))
  
      @classmethod
      def _set_dummy_master(cls) -> Optional[tk.Frame]:
          """ Add an option to force black font on Linux file dialogs KDE issue that displays light
          font on white background).
 
</s> remove     def _contexts(self) -> Dict[str, Dict[str, Union[str, Dict[str, str]]]]:
 </s> add     def _contexts(self) -> dict[str, dict[str, str | dict[str, str]]]: </s> remove     def _set_dummy_master(cls) -> Optional[tk.Frame]:
 </s> add     def _set_dummy_master(cls) -> tk.Frame | None: </s> remove                 filetypes[key].insert(0, cast(Tuple[str, str], tuple(multi)))
 </s> add                 filetypes[key].insert(0, T.cast(tuple[str, str], tuple(multi))) </s> remove 
_FILETYPE = Literal["default", "alignments", "config_project", "config_task",
                    "config_all", "csv", "image", "ini", "state", "log", "video"]
_HANDLETYPE = Literal["open", "save", "filename", "filename_multi", "save_filename",
                      "context", "dir"]
 </s> add _FILETYPE = T.Literal["default", "alignments", "config_project", "config_task",
                      "config_all", "csv", "image", "ini", "state", "log", "video"]
_HANDLETYPE = T.Literal["open", "save", "filename", "filename_multi", "save_filename",
                        "context", "dir"] </s> remove     def default_font(self) -> Tuple[str, int]:
 </s> add     def default_font(self) -> tuple[str, int]:
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
      @property
      def _contexts(self) -> Dict[str, Dict[str, Union[str, Dict[str, str]]]]:
          """dict: Mapping of commands, actions and their corresponding file dialog for context
          handle types. """
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
        return {"effmpeg": {"input": {"extract": "filename",
                                      "gen-vid": "dir",
                                      "get-fps": "filename",
                                      "get-info": "filename",
                                      "mux-audio": "filename",
                                      "rescale": "filename",
                                      "rotate": "filename",
                                      "slice": "filename"},
                            "output": {"extract": "dir",
                                       "gen-vid": "save_filename",
                                       "get-fps": "nothing",
                                       "get-info": "nothing",
                                       "mux-audio": "save_filename",
                                       "rescale": "save_filename",
                                       "rotate": "save_filename",
                                       "slice": "save_filename"}}}
  
      @classmethod
      def _set_dummy_master(cls) -> Optional[tk.Frame]:
          """ Add an option to force black font on Linux file dialogs KDE issue that displays light
          font on white background).
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace 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 
lib/gui/utils/file_handler.py