      Parameters
      ----------
      root: :class:`tkinter.Tk`
          The root Tkinter object
      cli_opts: :class:`lib.gui.options.CliOpts`
          The command line options object
      statusbar: :class:`lib.gui.custom_widgets.StatusBar`
          The GUI Status bar
      """
      def __init__(self, root: tk.Tk, cli_opts: "CliOptions", statusbar: "StatusBar") -> None:
          logger.debug("Initializing %s: (root %s, cli_opts: %s, statusbar: %s)",
                       self.__class__.__name__, root, cli_opts, statusbar)
          self._default_font = cast(dict, tk.font.nametofont("TkDefaultFont").configure())["family"]
 
</s> remove     def __init__(self, root: tk.Tk, cli_opts: "CliOptions", statusbar: "StatusBar") -> None:
 </s> add     def __init__(self,
                 root: tk.Tk,
                 cli_opts: Optional["CliOptions"],
                 statusbar: Optional["StatusBar"]) -> None: </s> remove     cli_opts: :class:`lib.gui.options.CliOptions`
        The command line options object
    statusbar: :class:`lib.gui.custom_widgets.StatusBar`
        The GUI Status bar
 </s> add     cli_opts: :class:`lib.gui.options.CliOptions` or ``None``
        The command line options object. Must be provided for main GUI. Must be ``None`` for tools
    statusbar: :class:`lib.gui.custom_widgets.StatusBar` or ``None``
        The GUI Status bar. Must be provided for main GUI. Must be ``None`` for tools </s> remove                       cli_opts: "CliOptions",
                      statusbar: "StatusBar") -> Optional["Config"]:
 </s> add                       cli_opts: Optional["CliOptions"],
                      statusbar: Optional["StatusBar"]) -> Optional["Config"]: </s> remove     def __init__(self,
                 arguments: "Namespace",
                 available_masks: List[str],
                 samples: Samples,
                 display: "FacesDisplay",
                 lock: Lock,
                 trigger: Event,
                 config_tools: "ConfigTools",
                 tk_vars: Dict[Literal["refresh", "busy"], tk.BooleanVar]) -> None:
        logger.debug("Initializing %s: (arguments: '%s', available_masks: %s, samples: %s, "
                     "display: %s, lock: %s, trigger: %s, config_tools: %s, tk_vars %s)",
                     self.__class__.__name__, arguments, available_masks, samples, display, lock,
                     trigger, config_tools, tk_vars)
        self._samples = samples
 </s> add     def __init__(self, app: Preview, arguments: "Namespace") -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s')",
                     self.__class__.__name__, app, arguments)
        self._app = app </s> remove     def __init__(self,
                 arguments: "Namespace",
                 sample_size: int,
                 display: "FacesDisplay",
                 lock: Lock,
                 trigger_patch: Event) -> None:
        logger.debug("Initializing %s: (arguments: '%s', sample_size: %s, display: %s, lock: %s, "
                     "trigger_patch: %s)", self.__class__.__name__, arguments, sample_size,
                     display, lock, trigger_patch)
 </s> add     def __init__(self, app: Preview, arguments: "Namespace", sample_size: int) -> None:
        logger.debug("Initializing %s: (app: %s, arguments: '%s', sample_size: %s)",
                     self.__class__.__name__, app, arguments, sample_size)
    cli_opts: :class:`lib.gui.options.CliOptions` or ``None``
        The command line options object. Must be provided for main GUI. Must be ``None`` for tools
    statusbar: :class:`lib.gui.custom_widgets.StatusBar` or ``None``
        The GUI Status bar. Must be provided for main GUI. Must be ``None`` for tools
      Parameters
      ----------
      root: :class:`tkinter.Tk`
          The root Tkinter object
    cli_opts: :class:`lib.gui.options.CliOptions` or ``None``
        The command line options object. Must be provided for main GUI. Must be ``None`` for tools
    statusbar: :class:`lib.gui.custom_widgets.StatusBar` or ``None``
        The GUI Status bar. Must be provided for main GUI. Must be ``None`` for tools
    cli_opts: :class:`lib.gui.options.CliOptions` or ``None``
        The command line options object. Must be provided for main GUI. Must be ``None`` for tools
    statusbar: :class:`lib.gui.custom_widgets.StatusBar` or ``None``
        The GUI Status bar. Must be provided for main GUI. Must be ``None`` for tools
    cli_opts: :class:`lib.gui.options.CliOptions` or ``None``
        The command line options object. Must be provided for main GUI. Must be ``None`` for tools
    statusbar: :class:`lib.gui.custom_widgets.StatusBar` or ``None``
        The GUI Status bar. Must be provided for main GUI. Must be ``None`` for tools
    cli_opts: :class:`lib.gui.options.CliOptions` or ``None``
        The command line options object. Must be provided for main GUI. Must be ``None`` for tools
    statusbar: :class:`lib.gui.custom_widgets.StatusBar` or ``None``
        The GUI Status bar. Must be provided for main GUI. Must be ``None`` for tools
      """
      def __init__(self, root: tk.Tk, cli_opts: "CliOptions", statusbar: "StatusBar") -> None:
          logger.debug("Initializing %s: (root %s, cli_opts: %s, statusbar: %s)",
                       self.__class__.__name__, root, cli_opts, statusbar)
          self._default_font = cast(dict, tk.font.nametofont("TkDefaultFont").configure())["family"]
keep keep keep keep replace replace replace replace keep keep keep keep keep
 bugfix:
    - preview tool - Prevent tkinter variables from exiting main thread
refactor:
    - preview tool - Split module to smaller sub-modules + docs, locales
Typing:
    - tools.preview.cli
Unit test:
    - tools.preview.viewer 
lib/gui/utils/config.py