"""Download-Fortschrittsdialog für den ersten Whisper-Modell-Download (Windows).""" from __future__ import annotations import queue import sys import threading from typing import Any import tqdm as tqdm_module class TkProgressTqdm(tqdm_module.tqdm): """tqdm-Ersatz, der Fortschritts-Updates thread-safe in eine Queue schreibt.""" _queue: queue.Queue | None = None def __init__(self, *args: Any, **kwargs: Any) -> None: self._desc = kwargs.get("desc", "") self._accumulated_n = 0 super().__init__(*args, **kwargs) def update(self, n: int | float | None = 1) -> bool | None: if n is None: n = 0 self._accumulated_n += n result = super().update(n) if self._queue is not None: self._queue.put({ "file": self._desc, "n": self._accumulated_n, "total": self.total or 0, }) return result