diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40bc01ff8..9d6a89983 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -181,11 +181,6 @@ jobs: run: | if [ "$RUNNER_OS" == "Windows" ]; then uv pip install msvc-runtime - uv pip install -U torch==2.8.0+cu129 torchaudio==2.8.0+cu129 --index-url https://download.pytorch.org/whl/cu129 - uv pip install nvidia-cublas-cu12==12.9.1.4 nvidia-cuda-cupti-cu12==12.9.79 nvidia-cuda-runtime-cu12==12.9.79 --extra-index-url https://pypi.ngc.nvidia.com - - uv cache clean - uv run pip cache purge fi shell: bash @@ -264,7 +259,6 @@ jobs: name: Buzz-${{ runner.os }}-${{ runner.arch }} path: | dist/Buzz*-windows.exe - dist/Buzz*-windows-*.bin dist/Buzz*-mac.dmg dist/Buzz*.AppImage @@ -365,7 +359,6 @@ jobs: files: | Buzz*-unix.tar.gz Buzz*.exe - Buzz*.bin Buzz*.dmg Buzz*.AppImage diff --git a/Buzz.spec b/Buzz.spec index 173d8c2bc..1f62e34d7 100644 --- a/Buzz.spec +++ b/Buzz.spec @@ -94,6 +94,30 @@ else: binaries.append(("buzz/whisper_cpp/*", "buzz/whisper_cpp")) +# Bundle a standalone Python 3.12 interpreter for runtime pip installs (e.g. CUDA). +# We copy python.exe, DLLs, and the stdlib from the uv-managed base interpreter. +if platform.system() == "Windows": + import sys as _sys + _base = _sys.base_prefix # e.g. .../uv/python/cpython-3.12.12-windows-x86_64-none + _py_dest = "python" + if os.path.isfile(os.path.join(_base, "python.exe")): + binaries.append((os.path.join(_base, "python.exe"), _py_dest)) + binaries.append((os.path.join(_base, "python3.dll"), _py_dest)) + binaries.append((os.path.join(_base, "python312.dll"), _py_dest)) + for _vcrt in ("vcruntime140.dll", "vcruntime140_1.dll"): + _vcrt_path = os.path.join(_base, _vcrt) + if os.path.isfile(_vcrt_path): + binaries.append((_vcrt_path, _py_dest)) + # Bundle DLLs directory (C extensions like _ssl, _socket, etc.) + _dlls_dir = os.path.join(_base, "DLLs") + if os.path.isdir(_dlls_dir): + for _f in os.listdir(_dlls_dir): + binaries.append((os.path.join(_dlls_dir, _f), os.path.join(_py_dest, "DLLs"))) + # Bundle standard library + datas.append((os.path.join(_base, "Lib"), os.path.join(_py_dest, "Lib"))) + else: + print(f"WARNING: Could not find bundleable Python at {_base}") + if platform.system() == "Windows": datas += [("dll_backup", "dll_backup")] datas += collect_data_files("msvc-runtime") diff --git a/buzz/cuda_manager.py b/buzz/cuda_manager.py new file mode 100644 index 000000000..213098d3b --- /dev/null +++ b/buzz/cuda_manager.py @@ -0,0 +1,264 @@ +""" +Utilities for checking and installing CUDA support at runtime. +""" + +import logging +import os +import subprocess +import sys +from pathlib import Path +from typing import Any + +logger = logging.getLogger(__name__) + +# Pinned versions matching uv.lock for the cu129 build of PyTorch. +# All packages are served from the PyTorch wheel index; pip selects the +# correct platform wheel automatically (Linux-only packages have no +# Windows wheel and are silently skipped by pip on Windows). +CUDA_INDEX_URL = "https://download.pytorch.org/whl/cu129" +CUDA_TORCH_PACKAGES = [ + "torch==2.8.0+cu129", + "torchaudio==2.8.0+cu129", +] + +# NVIDIA runtime libraries — sourced from the official NVIDIA PyPI index. +# Versions are pinned to those resolved in uv.lock to prevent accidental upgrades. +# Packages that have wheels for both Linux and Windows (verified via uv.lock). +CUDA_NVIDIA_PACKAGES_COMMON = [ + "nvidia-cublas-cu12==12.9.1.4", + "nvidia-cudnn-cu12==9.10.2.21", +] + +# Packages that only have Linux (manylinux) wheels in uv.lock. +CUDA_NVIDIA_PACKAGES_LINUX = [ + "nvidia-cuda-cupti-cu12==12.9.79", + "nvidia-cuda-nvrtc-cu12==12.9.86", + "nvidia-cuda-runtime-cu12==12.9.79", + "nvidia-cufft-cu12==11.4.1.4", + "nvidia-cufile-cu12==1.14.1.1", + "nvidia-curand-cu12==10.3.10.19", + "nvidia-cusolver-cu12==11.7.5.82", + "nvidia-cusparse-cu12==12.5.10.65", + "nvidia-cusparselt-cu12==0.7.1", + "nvidia-nccl-cu12==2.27.3", + "nvidia-nvjitlink-cu12==12.9.86", + "nvidia-nvtx-cu12==12.9.79", +] + + +def is_snap() -> bool: + """Returns True if running inside a Snap package.""" + return "SNAP" in os.environ + + +def is_flatpak() -> bool: + """Returns True if running inside a Flatpak sandbox.""" + return "FLATPAK_ID" in os.environ + + +def should_offer_cuda_prompt() -> bool: + """Returns True on platforms where in-app CUDA installation is supported.""" + if sys.platform == "win32": + return True + if sys.platform == "linux": + return is_snap() or is_flatpak() + return False + + +def is_cuda_torch_installed() -> bool: + """Returns True if torch with CUDA support is available.""" + try: + import torch + cuda_available = torch.cuda.is_available() + logger.info( + "CUDA check: torch version=%s, cuda_built=%s, cuda_available=%s, cuda_version=%s", + torch.__version__, + torch.version.cuda, + cuda_available, + torch.version.cuda if cuda_available else "N/A", + ) + if not cuda_available and torch.version.cuda: + # CUDA was compiled in but is not available at runtime — likely a DLL loading issue + logger.warning( + "CUDA check: torch was built with CUDA %s but cuda is not available. " + "This usually means CUDA DLLs failed to load. torch.cuda.is_available() returned False.", + torch.version.cuda, + ) + return cuda_available + except ImportError: + logger.info("CUDA check: torch is not installed") + return False + + +def is_nvidia_gpu_present() -> bool: + """Returns True if an NVIDIA GPU is detected. + + Tries nvidia-smi first, then falls back to /proc/driver/nvidia/version + which is accessible inside Snap and Flatpak sandboxes without executing + an external binary. + """ + try: + result = subprocess.run( + ["nvidia-smi"], + capture_output=True, + timeout=5, + **_subprocess_hide_window_kwargs(), + ) + if result.returncode == 0: + return True + except (FileNotFoundError, subprocess.TimeoutExpired, OSError): + pass + + # Fallback: kernel driver version file — present when NVIDIA driver is loaded + return Path("/proc/driver/nvidia/version").exists() + + +def _in_virtualenv() -> bool: + """Returns True if running inside a virtualenv or uv venv.""" + return sys.prefix != sys.base_prefix or "VIRTUAL_ENV" in os.environ + + +def _get_install_target() -> list[str]: + """Return pip target flags for the current environment. + + In Snap/Flatpak the Python interpreter's user-site is disabled or points to + the read-only bundle, so we use --target with an explicit writable path. + In a virtualenv --user is forbidden; packages go into the venv directly. + Otherwise we use --user so packages land in ~/.local. + """ + if is_snap(): + snap_user_data = os.environ.get("SNAP_USER_DATA") + if snap_user_data: + target = str(Path(snap_user_data) / "cuda_packages") + else: + target = str(Path.home() / ".local" / "share" / "buzz" / "cuda_packages") + Path(target).mkdir(parents=True, exist_ok=True) + return ["--target", target] + if is_flatpak(): + xdg_data = os.environ.get("XDG_DATA_HOME", str(Path.home() / ".local" / "share")) + target = str(Path(xdg_data) / "buzz" / "cuda_packages") + Path(target).mkdir(parents=True, exist_ok=True) + return ["--target", target] + if _in_virtualenv(): + return [] + return ["--user"] + + +def install_cuda(progress_callback=None): + """ + Install CUDA-enabled torch and nvidia libraries. + + Args: + progress_callback: Optional callable(str) called with status messages. + """ + def report(msg): + logger.info(msg) + if progress_callback: + progress_callback(msg) + + target_flags = _get_install_target() + + nvidia_packages = CUDA_NVIDIA_PACKAGES_COMMON + ( + CUDA_NVIDIA_PACKAGES_LINUX if sys.platform != "win32" else [] + ) + report("Installing NVIDIA CUDA libraries...") + _pip_install( + nvidia_packages, + extra_args=["--index-url", CUDA_INDEX_URL] + target_flags, + progress_callback=report, + ) + + report("Installing CUDA-enabled PyTorch...") + _pip_install( + CUDA_TORCH_PACKAGES, + extra_args=["--index-url", CUDA_INDEX_URL, "--no-deps"] + target_flags, + progress_callback=report, + ) + + report("CUDA installation complete. Please restart Buzz to enable GPU acceleration.") + + +def _ensure_pip(python: str) -> list[str]: + """Return [python, '-m', 'pip'], bootstrapping pip via ensurepip if needed.""" + hide_kwargs = _subprocess_hide_window_kwargs() + pip_cmd = [python, "-m", "pip"] + probe = subprocess.run(pip_cmd + ["--version"], capture_output=True, timeout=15, **hide_kwargs) + if probe.returncode == 0: + return pip_cmd + logger.info("pip not found for %s, bootstrapping via ensurepip...", python) + bootstrap = subprocess.run( + [python, "-m", "ensurepip", "--upgrade"], + capture_output=True, timeout=60, **hide_kwargs, + ) + if bootstrap.returncode != 0: + raise RuntimeError( + f"pip is not available for {python} and ensurepip failed. " + "Please install pip manually and try again." + ) + return pip_cmd + + +def _get_pip_cmd() -> list[str]: + """Return a [python, '-m', 'pip'] command that is guaranteed to work. + + Handles three environments: + - PyInstaller frozen bundle: sys.executable is the app binary; find a real + Python interpreter in PATH instead. + - Normal Python without pip (uv venv, minimal snap/flatpak image): bootstrap + pip via ensurepip, then retry. + - Normal Python with pip: use sys.executable directly. + """ + import shutil + + # Frozen PyInstaller bundle — sys.executable can't run -m pip. + # Use the bundled Python 3.12 interpreter shipped alongside the app. + if getattr(sys, "frozen", False): + # PyInstaller extracts bundled data to sys._MEIPASS (_internal dir) + internal_dir = Path(getattr(sys, "_MEIPASS", Path(sys.executable).parent)) + python_name = "python.exe" if sys.platform == "win32" else "python3" + bundled_python = internal_dir / "python" / python_name + if bundled_python.is_file(): + return _ensure_pip(str(bundled_python)) + # Fallback: look in PATH + for candidate in ("python3.12", "python3", "python"): + python = shutil.which(candidate) + if python: + return _ensure_pip(python) + raise RuntimeError( + "Could not find a Python interpreter. " + "Please install Python 3.12 and try again." + ) + + return _ensure_pip(sys.executable) + + +def _subprocess_hide_window_kwargs() -> dict[str, Any]: + """Return kwargs to hide the console window on Windows.""" + if sys.platform == "win32": + si = subprocess.STARTUPINFO() + si.dwFlags |= subprocess.STARTF_USESHOWWINDOW + si.wShowWindow = subprocess.SW_HIDE + return {"startupinfo": si, "creationflags": subprocess.CREATE_NO_WINDOW} + return {} + + +def _pip_install(packages, extra_args=None, progress_callback=None): + cmd = _get_pip_cmd() + ["install", "--break-system-packages"] + packages + if extra_args: + cmd += extra_args + + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + **_subprocess_hide_window_kwargs(), + ) + for line in process.stdout: + line = line.rstrip() + if line and progress_callback: + progress_callback(line) + + process.wait() + if process.returncode != 0: + raise RuntimeError(f"pip install failed with exit code {process.returncode}") diff --git a/buzz/cuda_setup.py b/buzz/cuda_setup.py index d99b402ef..248fa5a94 100644 --- a/buzz/cuda_setup.py +++ b/buzz/cuda_setup.py @@ -6,7 +6,8 @@ pip packages. On Windows: Uses os.add_dll_directory() to add library paths -On Linux: Uses ctypes to preload libraries (LD_LIBRARY_PATH is read at process start) +On Linux: Re-execs the process with LD_LIBRARY_PATH set when cuda_packages are present, + then preloads libraries with RTLD_GLOBAL for any remaining gaps. On macOS: No action needed (CUDA not supported) """ @@ -21,16 +22,53 @@ logger = logging.getLogger(__name__) -def _get_nvidia_package_lib_dirs() -> list[Path]: - """Find all nvidia package library directories in site-packages.""" - lib_dirs = [] +def _get_cuda_target_dir() -> Path | None: + """Return the --target directory used during CUDA install for snap/flatpak, or None.""" + snap_user_data = os.environ.get("SNAP_USER_DATA") + if snap_user_data: + return Path(snap_user_data) / "cuda_packages" + flatpak_id = os.environ.get("FLATPAK_ID") + if flatpak_id: + xdg_data = os.environ.get("XDG_DATA_HOME", str(Path.home() / ".local" / "share")) + return Path(xdg_data) / "buzz" / "cuda_packages" + return None - # Find site-packages directories + +def _get_site_packages_dirs() -> list[Path]: + """Return all site-packages directories, including user site-packages.""" site_packages_dirs = [] + import site + + # For snap/flatpak, packages are installed to an explicit --target directory + cuda_target = _get_cuda_target_dir() + if cuda_target and cuda_target.exists(): + if str(cuda_target) not in sys.path: + sys.path.insert(0, str(cuda_target)) + site_packages_dirs.append(cuda_target) + logger.info("CUDA target dir (snap/flatpak): %s", cuda_target) + + user_site = site.getusersitepackages() + if user_site: + user_site_path = Path(user_site) + site_packages_dirs.append(user_site_path) + logger.info("User site-packages: %s (exists=%s)", user_site_path, user_site_path.exists()) + # Ensure user site-packages is on sys.path so torch can be imported + if str(user_site_path) not in sys.path and user_site_path.exists(): + sys.path.insert(0, str(user_site_path)) + logger.info("Added user site-packages to sys.path: %s", user_site_path) for path in sys.path: if "site-packages" in path: site_packages_dirs.append(Path(path)) + return site_packages_dirs + + +def _get_nvidia_package_lib_dirs() -> list[Path]: + """Find all nvidia package library directories in site-packages.""" + lib_dirs = [] + + site_packages_dirs = _get_site_packages_dirs() + # Also check relative to the current module for frozen apps if getattr(sys, "frozen", False): # For frozen apps, check the _internal directory @@ -47,7 +85,7 @@ def _get_nvidia_package_lib_dirs() -> list[Path]: if bin_subdir.exists(): lib_dirs.append(bin_subdir) - # Check each site-packages for nvidia packages + # Check each site-packages for nvidia packages AND torch/lib for sp_dir in site_packages_dirs: nvidia_dir = sp_dir / "nvidia" if nvidia_dir.exists(): @@ -60,6 +98,10 @@ def _get_nvidia_package_lib_dirs() -> list[Path]: bin_subdir = pkg_dir / "bin" if bin_subdir.exists(): lib_dirs.append(bin_subdir) + # torch/lib contains torch_cuda and other CUDA-related DLLs + torch_lib_dir = sp_dir / "torch" / "lib" + if torch_lib_dir.exists(): + lib_dirs.append(torch_lib_dir) return lib_dirs @@ -67,48 +109,145 @@ def _get_nvidia_package_lib_dirs() -> list[Path]: def _setup_windows_dll_directories(): """Add nvidia library directories to Windows DLL search path.""" lib_dirs = _get_nvidia_package_lib_dirs() + if not lib_dirs: + logger.warning("CUDA setup: no nvidia/torch library directories found") for lib_dir in lib_dirs: try: os.add_dll_directory(str(lib_dir)) + logger.info("CUDA setup: added DLL directory: %s", lib_dir) except (OSError, AttributeError) as e: - pass + logger.warning("CUDA setup: failed to add DLL directory %s: %s", lib_dir, e) + +def _collect_cuda_lib_dirs(cuda_target: Path) -> list[str]: + """Return all library directories under cuda_packages as strings.""" + lib_dirs: list[str] = [] -def _preload_linux_libraries(): - """Preload CUDA libraries on Linux using ctypes. + torch_lib = cuda_target / "torch" / "lib" + if torch_lib.exists(): + lib_dirs.append(str(torch_lib)) + + nvidia_dir = cuda_target / "nvidia" + if nvidia_dir.exists(): + for pkg_dir in sorted(nvidia_dir.iterdir()): + if pkg_dir.is_dir(): + lib_subdir = pkg_dir / "lib" + if lib_subdir.exists(): + lib_dirs.append(str(lib_subdir)) + + return lib_dirs - On Linux, LD_LIBRARY_PATH is only read at process start, so we need to - manually load the libraries using ctypes before torch tries to load them. + +def _collect_site_packages_cuda_lib_dirs() -> list[str]: + """Return all nvidia/torch lib dirs found in any site-packages directory.""" + lib_dirs: list[str] = [] + for sp_dir in _get_site_packages_dirs(): + torch_lib = sp_dir / "torch" / "lib" + if torch_lib.exists(): + lib_dirs.append(str(torch_lib)) + nvidia_dir = sp_dir / "nvidia" + if nvidia_dir.exists(): + for pkg_dir in sorted(nvidia_dir.iterdir()): + if pkg_dir.is_dir(): + lib_subdir = pkg_dir / "lib" + if lib_subdir.exists(): + lib_dirs.append(str(lib_subdir)) + return lib_dirs + + +def _setup_linux_cuda(): + """Set up CUDA libraries on Linux. + + LD_LIBRARY_PATH is read by the dynamic linker only at process start, so + preloading individual .so files with ctypes is fragile: if *any* library + in the dependency chain (e.g. libcusparseLt.so.0 → libcuda.so.1) is not + yet in the search path, the load silently fails, and later imports of torch + or torchaudio crash with "cannot open shared object file". + + The reliable fix is to re-exec the current process with LD_LIBRARY_PATH + extended to include all cuda lib dirs. After re-exec the dynamic linker + finds every CUDA library via the standard search path for the entire + lifetime of the process. + + A sentinel env var prevents infinite re-exec loops. """ - lib_dirs = _get_nvidia_package_lib_dirs() + # Ensure cuda_packages (snap/flatpak) is on sys.path so Python can import torch + _get_site_packages_dirs() - # Libraries to skip - NVBLAS requires special configuration and causes issues - skip_patterns = ["libnvblas"] + if os.environ.get("BUZZ_CUDA_SETUP_DONE"): + logger.info("CUDA setup: already done (sentinel set), proceeding") + return + + # Never re-exec inside a multiprocessing worker — it would destroy the IPC pipe. + # The parent process already set LD_LIBRARY_PATH before spawning workers. + import multiprocessing + if multiprocessing.parent_process() is not None: + logger.debug("CUDA setup: skipping re-exec in worker subprocess") + return + + # Collect lib dirs from snap/flatpak cuda_packages OR regular site-packages + cuda_target = _get_cuda_target_dir() + if cuda_target is not None and cuda_target.exists(): + extra_dirs = _collect_cuda_lib_dirs(cuda_target) + else: + extra_dirs = _collect_site_packages_cuda_lib_dirs() - loaded_libs = set() + if not extra_dirs: + logger.debug("CUDA setup: no nvidia/torch lib dirs found, skipping") + return + current_ld = os.environ.get("LD_LIBRARY_PATH", "") + new_ld = ":".join(extra_dirs) + if current_ld: + new_ld = new_ld + ":" + current_ld + os.environ["LD_LIBRARY_PATH"] = new_ld + os.environ["BUZZ_CUDA_SETUP_DONE"] = "1" + + # Re-exec the process so the dynamic linker picks up the new LD_LIBRARY_PATH. + # We read the original argv from /proc/self/cmdline to preserve the exact + # invocation (works for both `python -m buzz` and frozen binaries). + try: + with open("/proc/self/cmdline", "rb") as f: + raw_args = [a.decode("utf-8", errors="replace") for a in f.read().split(b"\x00") if a] + executable = raw_args[0] + logger.info("CUDA setup: re-execing %s with LD_LIBRARY_PATH=%s", executable, new_ld) + os.execv(executable, raw_args) + except Exception as e: + # Re-exec failed (e.g. AppArmor restriction) — fall back to ctypes preloading + logger.warning("CUDA setup: re-exec failed (%s), falling back to ctypes preload", e) + _preload_linux_libraries_fallback() + + +def _preload_linux_libraries_fallback(): + """Fallback: preload CUDA .so files with RTLD_GLOBAL when re-exec is not possible.""" + lib_dirs = _get_nvidia_package_lib_dirs() + skip_patterns = ["libnvblas"] + candidates = [] for lib_dir in lib_dirs: if not lib_dir.exists(): continue - - # Find all .so files in the directory for lib_file in sorted(lib_dir.glob("*.so*")): - if lib_file.name in loaded_libs: - continue if lib_file.is_symlink() and not lib_file.exists(): continue - - # Skip problematic libraries - if any(pattern in lib_file.name for pattern in skip_patterns): + if any(p in lib_file.name for p in skip_patterns): continue + candidates.append(lib_file) + loaded: set[str] = set() + for pass_num in range(5): + newly = 0 + for lib_file in candidates: + if lib_file.name in loaded: + continue try: - # Use RTLD_GLOBAL so symbols are available to other libraries ctypes.CDLL(str(lib_file), mode=ctypes.RTLD_GLOBAL) - loaded_libs.add(lib_file.name) + loaded.add(lib_file.name) + newly += 1 except OSError as e: - # Some libraries may have missing dependencies, that's ok - pass + logger.debug("Preload pass %d: skipping %s: %s", pass_num + 1, lib_file.name, e) + logger.info("Preload pass %d: +%d libs (%d total)", pass_num + 1, newly, len(loaded)) + if newly == 0: + break def setup_cuda_libraries(): @@ -118,13 +257,16 @@ def setup_cuda_libraries(): or CUDA-dependent libraries are imported. """ system = platform.system() + logger.info("CUDA setup: platform=%s, frozen=%s", system, getattr(sys, "frozen", False)) if system == "Windows": _setup_windows_dll_directories() elif system == "Linux": - _preload_linux_libraries() + _setup_linux_cuda() # macOS doesn't have CUDA support, so nothing to do + logger.info("CUDA setup: complete") + # Auto-run setup when this module is imported setup_cuda_libraries() diff --git a/buzz/locale/ca_ES/LC_MESSAGES/buzz.po b/buzz/locale/ca_ES/LC_MESSAGES/buzz.po index 8a043fe2a..d803f99f7 100644 --- a/buzz/locale/ca_ES/LC_MESSAGES/buzz.po +++ b/buzz/locale/ca_ES/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: buzz\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2025-10-17 07:59+0200\n" "Last-Translator: Éric Duarte \n" "Language-Team: Catalan \n" @@ -659,6 +659,48 @@ msgstr "" "No s'ha pogut reiniciar la transcripció: no s'ha trobat el treballador del " "transcriptor." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Acceleració GPU Nvidia" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Utilitza només la CPU i desactiveu l'acceleració de la GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"L'acceleració GPU per a Nvidia permet a Buzz transcriure àudio significativament més ràpid mitjançant CUDA. Per a altres marques de GPU, aquesta acceleració no tindrà cap efecte.\n" +"\n" +"Això descarregarà i instal·larà PyTorch amb suport CUDA (~8 GB). Buzz s'ha de reiniciar després de la instal·lació." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Instal·lar suport GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Ara no" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Instal·lació completada! Reinicieu Buzz per activar l'acceleració GPU." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Tanca" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "La instal·lació ha fallat: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Enregistrament en directe" @@ -811,6 +853,10 @@ msgstr "Comprova si hi ha actualitzacions" msgid "Show logs" msgstr "Mostra els registres" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Instal·lar acceleració CUDA" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Estàs al dia!" @@ -1681,9 +1727,6 @@ msgstr "" #~ "Per habilitar els permisos necessaris, executeu les ordres següents al " #~ "terminal" -#~ msgid "Close" -#~ msgstr "Tanca" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Introduïu les instruccions per a la IA sobre com traduir..." diff --git a/buzz/locale/da_DK/LC_MESSAGES/buzz.po b/buzz/locale/da_DK/LC_MESSAGES/buzz.po index dcd20f405..0b79cb91c 100644 --- a/buzz/locale/da_DK/LC_MESSAGES/buzz.po +++ b/buzz/locale/da_DK/LC_MESSAGES/buzz.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: \n" "Last-Translator: Ole Guldberg2 \n" "Language-Team: \n" @@ -653,6 +653,48 @@ msgid "Could not restart transcription: transcriber worker not found." msgstr "" "Kunne ikke genstarte transkription: transkriptionsprocessen blev ikke fundet." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU-acceleration" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Brug kun CPU og deaktiver GPU-acceleration" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Installation af GPU-acceleration til Nvidia GPU'er giver Buzz mulighed for at transskribere lyd betydeligt hurtigere ved hjælp af CUDA. For andre GPU-mærker vil denne acceleration ikke have nogen effekt.\n" +"\n" +"Dette vil downloade og installere PyTorch med CUDA-understøttelse (~8 GB). Buzz skal genstartes efter installation." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Installer GPU-understøttelse" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Ikke nu" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Installation fuldført! Genstart Buzz for at aktivere GPU-acceleration." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Installation mislykkedes: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Live optagelse" @@ -805,6 +847,10 @@ msgstr "Tjek for opdateringer" msgid "Show logs" msgstr "Vis logfiler" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Installer CUDA-acceleration" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Du er opdateret!" diff --git a/buzz/locale/de_DE/LC_MESSAGES/buzz.po b/buzz/locale/de_DE/LC_MESSAGES/buzz.po index 69ee547b8..cf08df4ff 100644 --- a/buzz/locale/de_DE/LC_MESSAGES/buzz.po +++ b/buzz/locale/de_DE/LC_MESSAGES/buzz.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2025-03-05 14:41+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -662,6 +662,48 @@ msgstr "" "Transkription konnte nicht neu gestartet werden: Transkriptions-Worker nicht " "gefunden." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU-Beschleunigung" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Nur CPU verwenden und GPU-Beschleunigung deaktivieren" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Die Installation der GPU-Beschleunigung für Nvidia GPUs ermöglicht es Buzz, Audio mithilfe von CUDA deutlich schneller zu transkribieren. Für andere GPU-Marken hat diese Beschleunigung keine Auswirkung.\n" +"\n" +"Dies lädt PyTorch mit CUDA-Unterstützung herunter und installiert es (~8 GB). Buzz muss nach der Installation neu gestartet werden." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "GPU-Unterstützung installieren" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Nicht jetzt" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Installation abgeschlossen! Starte Buzz neu, um die GPU-Beschleunigung zu aktivieren." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Schließen" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Installation fehlgeschlagen: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Live-Aufnahme" @@ -814,6 +856,10 @@ msgstr "Nach Updates suchen" msgid "Show logs" msgstr "Protokolle anzeigen" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "CUDA-Beschleunigung installieren" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Sie sind auf dem Laufenden!" @@ -1688,8 +1734,5 @@ msgstr "" #~ "Um die erforderlichen Berechtigungen zu aktivieren, führen Sie die " #~ "folgenden Befehle im Terminal aus" -#~ msgid "Close" -#~ msgstr "Schließen" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Geben Sie Anweisungen für die KI zum Übersetzen ein..." diff --git a/buzz/locale/en_US/LC_MESSAGES/buzz.po b/buzz/locale/en_US/LC_MESSAGES/buzz.po index 5740108ae..afc3d3a71 100644 --- a/buzz/locale/en_US/LC_MESSAGES/buzz.po +++ b/buzz/locale/en_US/LC_MESSAGES/buzz.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -632,6 +632,44 @@ msgstr "" msgid "Could not restart transcription: transcriber worker not found." msgstr "" +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install Nvidia GPU Acceleration?" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "" @@ -782,6 +820,10 @@ msgstr "" msgid "Show logs" msgstr "" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "" diff --git a/buzz/locale/es_ES/LC_MESSAGES/buzz.po b/buzz/locale/es_ES/LC_MESSAGES/buzz.po index a697286fc..44aee59ff 100644 --- a/buzz/locale/es_ES/LC_MESSAGES/buzz.po +++ b/buzz/locale/es_ES/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2025-09-08 12:43+0200\n" "Last-Translator: Éric Duarte \n" "Language-Team: \n" @@ -687,6 +687,48 @@ msgstr "" "No se pudo reiniciar la transcripción: no se encontró el trabajador del " "transcriptor." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Aceleración GPU de Nvidia" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Usa solo CPU y desactiva la aceleración de GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Instalar la aceleración GPU para GPUs Nvidia permite a Buzz transcribir audio significativamente más rápido usando CUDA. Para otras marcas de GPU esta aceleración no tendrá efecto.\n" +"\n" +"Esto descargará e instalará PyTorch con soporte CUDA (~8 GB). Buzz debe reiniciarse después de la instalación." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Instalar soporte GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Ahora no" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "¡Instalación completa! Reinicia Buzz para activar la aceleración GPU." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Cerrar" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "La instalación falló: {}" + # automatic translation #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" @@ -845,6 +887,10 @@ msgstr "Buscar actualizaciones" msgid "Show logs" msgstr "Mostrar registros" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Instalar aceleración CUDA" + # automatic translation #: buzz/widgets/about_dialog.py msgid "You're up to date!" @@ -1740,9 +1786,6 @@ msgstr "" #~ "Para habilitar los permisos necesarios ejecute los siguientes comandos en " #~ "el terminal" -#~ msgid "Close" -#~ msgstr "Cerrar" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Introduzca instrucciones para la IA sobre cómo traducir..." diff --git a/buzz/locale/it_IT/LC_MESSAGES/buzz.po b/buzz/locale/it_IT/LC_MESSAGES/buzz.po index d59ef179c..10e6d1bc4 100644 --- a/buzz/locale/it_IT/LC_MESSAGES/buzz.po +++ b/buzz/locale/it_IT/LC_MESSAGES/buzz.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: buzz\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" -"PO-Revision-Date: 2026-04-12 21:42+0200\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" +"PO-Revision-Date: 2026-01-25 21:42+0200\n" "Language-Team: (Italiano) Albano Battistella \n" "Language: it_IT\n" "MIME-Version: 1.0\n" @@ -658,6 +658,48 @@ msgstr "" msgid "Could not restart transcription: transcriber worker not found." msgstr "Impossibile riavviare la trascrizione: trascrittore non trovato." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Accelerazione GPU Nvidia" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Utilizza solo la CPU e disattiva l'accelerazione GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"L'installazione dell'accelerazione GPU per GPU Nvidia consente a Buzz di trascrivere l'audio in modo significativamente più veloce tramite CUDA. Per altre marche di GPU questa accelerazione non avrà alcun effetto.\n" +"\n" +"Verranno scaricati e installati PyTorch con supporto CUDA (~8 GB). Buzz deve essere riavviato dopo l'installazione." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Installa supporto GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Non ora" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Installazione completata! Riavvia Buzz per abilitare l'accelerazione GPU." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Chiudi" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Installazione fallita: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Registrazione in diretta" @@ -810,6 +852,10 @@ msgstr "Controlla gli aggiornamenti" msgid "Show logs" msgstr "Mostra log" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Installa accelerazione CUDA" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Il programma è aggiornato!" @@ -1683,9 +1729,6 @@ msgstr "" #~ "Per abilitare le autorizzazioni necessarie, eseguire i seguenti comandi " #~ "nel terminale" -#~ msgid "Close" -#~ msgstr "Chiudi" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Inserisci le istruzioni per l'IA su come tradurre..." diff --git a/buzz/locale/ja_JP/LC_MESSAGES/buzz.po b/buzz/locale/ja_JP/LC_MESSAGES/buzz.po index 9435ef852..a660e21a0 100644 --- a/buzz/locale/ja_JP/LC_MESSAGES/buzz.po +++ b/buzz/locale/ja_JP/LC_MESSAGES/buzz.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: \n" "Last-Translator: nunawa <71294849+nunawa@users.noreply.github.com>\n" "Language-Team: \n" @@ -649,6 +649,48 @@ msgstr "" msgid "Could not restart transcription: transcriber worker not found." msgstr "文字起こしを再開できませんでした: 文字起こしワーカーが見つかりません。" +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU アクセラレーション" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "CPUのみを使用してGPUアクセラレーションを無効にする" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Nvidia GPU 向けの GPU アクセラレーションをインストールすると、CUDA を使用して Buzz が音声をはるかに高速に文字起こしできるようになります。他の GPU ブランドではこのアクセラレーションは効果がありません。\n" +"\n" +"CUDA サポート付きの PyTorch がダウンロード・インストールされます(約 2 GB)。インストール後、Buzz を再起動する必要があります。" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "GPU サポートをインストール" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "後で" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "インストール完了!GPU アクセラレーションを有効にするには Buzz を再起動してください。" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "閉じる" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "インストールに失敗しました: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "ライブ録音" @@ -801,6 +843,10 @@ msgstr "アップデートを確認する" msgid "Show logs" msgstr "ログを表示" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "CUDA アクセラレーションをインストール" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "最新の状態です!" @@ -1660,9 +1706,6 @@ msgstr "" #~ "必要なパーミッションを有効にするには、ターミナルで以下のコマンドを実行して" #~ "ください" -#~ msgid "Close" -#~ msgstr "閉じる" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "AIのための翻訳方法の指示を入力..." diff --git a/buzz/locale/lv_LV/LC_MESSAGES/buzz.po b/buzz/locale/lv_LV/LC_MESSAGES/buzz.po index f35288d65..f41271cfa 100644 --- a/buzz/locale/lv_LV/LC_MESSAGES/buzz.po +++ b/buzz/locale/lv_LV/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2026-03-06 13:23+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -656,6 +656,48 @@ msgstr "" msgid "Could not restart transcription: transcriber worker not found." msgstr "Neizdevās sākt atpazīšanu: Kļūda lietotnē, pārstartējiet." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU paātrinājums" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install Nvidia GPU Acceleration?" +msgstr "Instalēt Nvidia GPU paātrināšanu" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"GPU paātrinājuma instalēšana Nvidia GPU kartēm ļauj Buzz ievērojami ātrāk atpazīt audio, izmantojot CUDA. " +"Citu GPU ražotāju kartēm šim paātrinājumam nebūs nekādas ietekmes.\n" +"\n" +"Tiks lejupielādēts un instalēts PyTorch ar CUDA atbalstu (~8 GB). Pēc instalēšanas Buzz ir jārestartē." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Instalēt GPU atbalstu" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Ne tagad" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Instalēšana pabeigta! Restartējiet Buzz, lai aktivizētu GPU paātrinājumu." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Aizvērt" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Instalēšana neizdevās: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Dzīvā ierakstīšana" @@ -808,6 +850,10 @@ msgstr "Pārbaudīt atjauninājumus" msgid "Show logs" msgstr "Parādīt sistēmas žurnālu" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Instalēt CUDA paātrinājumu" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Jums ir jaunākā versija!" @@ -1640,42 +1686,4 @@ msgid "" "to be downloaded." msgstr "" "Runas atdalīšana neizdevās! Pārbaudiet interneta savienojumu, iespējams " -"jālejupielādē modelis." - -#~ msgid "Live recording mode:" -#~ msgstr "Dzīvā ieraksta režīms:" - -#~ msgid "Comma-separated, e.g. \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\"" -#~ msgstr "Atdalīti ar komatu, piemēram, \"0.0, 0.2, 0.4, 0.6, 0.8, 1.0\"" - -#~ msgid "Temperature:" -#~ msgstr "Temperatūra:" - -#~ msgid "Please translate each text sent to you from English to Spanish." -#~ msgstr "Lūdzu, iztulko katru tev atsūtīto tekstu no angļu valodas latviski." - -#~ msgid "Translation error, see logs!" -#~ msgstr "Kļūda tulkojot, skatiet sistēmas žurnālu!" - -#~ msgid "Snap permission notice" -#~ msgstr "Snap atļauju piezīme" - -#~ msgid "" -#~ "Detected missing permissions, please check that snap permissions have " -#~ "been granted" -#~ msgstr "" -#~ "Ne visi nepieciešamie moduļi darbojas korekti, iespējams nav piešķirtas " -#~ "snap atļaujas" - -#~ msgid "" -#~ "To enable necessary permissions run the following commands in the terminal" -#~ msgstr "Lai piešķirtu nepieciešamās atļaujas izpildiet šīs komandas" - -#~ msgid "Close" -#~ msgstr "Aizvērt" - -#~ msgid "Enter instructions for AI on how to translate..." -#~ msgstr "Ievadiet tulkošanas norādes mākslīgajam intelektam..." - -#~ msgid "Enter target characters per subtitle:" -#~ msgstr "Ievadiet vēlamo simbolu skaitu tekstā:" +"jālejupielādē modelis." \ No newline at end of file diff --git a/buzz/locale/nl/LC_MESSAGES/buzz.po b/buzz/locale/nl/LC_MESSAGES/buzz.po index 62b26b5ef..a27167508 100644 --- a/buzz/locale/nl/LC_MESSAGES/buzz.po +++ b/buzz/locale/nl/LC_MESSAGES/buzz.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2025-03-20 18:30+0100\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: none\n" @@ -663,6 +663,48 @@ msgstr "" "Transcriptie kon niet opnieuw worden gestart: transcriptieproces niet " "gevonden." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU-versnelling" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Alleen CPU gebruiken en GPU-versnelling uitschakelen" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Het installeren van GPU-versnelling voor Nvidia GPU's stelt Buzz in staat om audio aanzienlijk sneller te transcriberen met CUDA. Voor andere GPU-merken heeft deze versnelling geen effect.\n" +"\n" +"Dit downloadt en installeert PyTorch met CUDA-ondersteuning (~8 GB). Buzz moet na de installatie opnieuw worden gestart." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "GPU-ondersteuning installeren" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Niet nu" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Installatie voltooid! Herstart Buzz om GPU-versnelling in te schakelen." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Sluiten" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Installatie mislukt: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Live-opname" @@ -813,6 +855,10 @@ msgstr "Controleren op updates" msgid "Show logs" msgstr "Logboeken tonen" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "CUDA-versnelling installeren" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "De software is actueel!" @@ -1683,8 +1729,5 @@ msgstr "" #~ msgstr "" #~ "De rechten kunnen met behulp van deze terminalopdrachten worden verleend" -#~ msgid "Close" -#~ msgstr "Sluiten" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Voer vertaalinstructies in…" diff --git a/buzz/locale/pl_PL/LC_MESSAGES/buzz.po b/buzz/locale/pl_PL/LC_MESSAGES/buzz.po index e297b7b9d..cabf23da6 100644 --- a/buzz/locale/pl_PL/LC_MESSAGES/buzz.po +++ b/buzz/locale/pl_PL/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2024-03-17 20:50+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -658,6 +658,48 @@ msgstr "" "Nie można uruchomić ponownie transkrypcji: nie znaleziono procesu " "transkrypcji." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Akceleracja GPU Nvidia" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Używaj tylko CPU i wyłącz akcelerację GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Instalacja akceleracji GPU dla kart Nvidia pozwala Buzz znacznie szybciej transkrybować dźwięk przy użyciu CUDA. Dla innych marek GPU ta akceleracja nie będzie miała żadnego efektu.\n" +"\n" +"Spowoduje to pobranie i zainstalowanie PyTorch z obsługą CUDA (~8 GB). Po instalacji Buzz musi zostać ponownie uruchomiony." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Zainstaluj obsługę GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Nie teraz" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Instalacja zakończona! Uruchom ponownie Buzz, aby włączyć akcelerację GPU." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Instalacja nie powiodła się: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Nagrywanie na żywo" @@ -810,6 +852,10 @@ msgstr "Sprawdź aktualizacje" msgid "Show logs" msgstr "Pokaż logi" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Zainstaluj akcelerację CUDA" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Posiadasz najnowszą wersję!" diff --git a/buzz/locale/pt_BR/LC_MESSAGES/buzz.po b/buzz/locale/pt_BR/LC_MESSAGES/buzz.po index ce6d1d63b..c6bf0a096 100644 --- a/buzz/locale/pt_BR/LC_MESSAGES/buzz.po +++ b/buzz/locale/pt_BR/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Buzz\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2025-11-01 17:43-0300\n" "Last-Translator: Paulo Schopf \n" "Language-Team: none\n" @@ -656,6 +656,48 @@ msgstr "" "Não foi possível reiniciar a transcrição: trabalhador de transcrição não " "encontrado." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Aceleração GPU Nvidia" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Usar somente a CPU e desabilitar aceleração por GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Instalar a aceleração GPU para GPUs Nvidia permite ao Buzz transcrever áudio significativamente mais rápido usando CUDA. Para outras marcas de GPU, essa aceleração não terá efeito.\n" +"\n" +"Isso irá baixar e instalar o PyTorch com suporte a CUDA (~8 GB). O Buzz deve ser reiniciado após a instalação." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Instalar suporte a GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Agora não" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Instalação concluída! Reinicie o Buzz para ativar a aceleração GPU." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Fechar" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Falha na instalação: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Gravação ao Vivo" @@ -808,6 +850,10 @@ msgstr "Verificar atualizações" msgid "Show logs" msgstr "Mostrar logs" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Instalar aceleração CUDA" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "Você está atualizado!" @@ -1676,9 +1722,6 @@ msgstr "" #~ "Para habilitar as permissões necessárias, execute os seguintes comandos " #~ "no terminal" -#~ msgid "Close" -#~ msgstr "Fechar" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Instrua a IA sobre como traduzir..." diff --git a/buzz/locale/uk_UA/LC_MESSAGES/buzz.po b/buzz/locale/uk_UA/LC_MESSAGES/buzz.po index b4551924d..6f02e2c35 100644 --- a/buzz/locale/uk_UA/LC_MESSAGES/buzz.po +++ b/buzz/locale/uk_UA/LC_MESSAGES/buzz.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: \n" "Last-Translator: Yevhen Popok \n" "Language-Team: \n" @@ -652,6 +652,48 @@ msgid "Could not restart transcription: transcriber worker not found." msgstr "" "Не вдалося перезапустити транскрипцію: обробник транскрипції не знайдено." +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Апаратне прискорення Nvidia GPU" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "Використовувати лише CPU та вимкнути прискорення GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"Встановлення апаратного прискорення GPU для відеокарт Nvidia дозволяє Buzz значно швидше транскрибувати аудіо за допомогою CUDA. Для відеокарт інших виробників це прискорення не матиме жодного ефекту.\n" +"\n" +"Це завантажить і встановить PyTorch з підтримкою CUDA (~2 ГБ). Після встановлення необхідно перезапустити Buzz." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "Встановити підтримку GPU" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "Не зараз" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "Встановлення завершено! Перезапустіть Buzz, щоб увімкнути апаратне прискорення GPU." + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "Закрити" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "Помилка встановлення: {}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "Живий запис" @@ -804,6 +846,10 @@ msgstr "Перевірити оновлення" msgid "Show logs" msgstr "Показати журнали" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "Встановити прискорення CUDA" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "У вас актуальна версія!" @@ -1671,8 +1717,5 @@ msgstr "" #~ msgstr "" #~ "Для активації необхідних дозволів, запустіть наступну команду в терміналі" -#~ msgid "Close" -#~ msgstr "Закрити" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "Введіть інструкції для перекладу ШІ..." diff --git a/buzz/locale/zh_CN/LC_MESSAGES/buzz.po b/buzz/locale/zh_CN/LC_MESSAGES/buzz.po index e1283701e..e59ce207c 100644 --- a/buzz/locale/zh_CN/LC_MESSAGES/buzz.po +++ b/buzz/locale/zh_CN/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2023-05-01 15:45+0800\n" "Last-Translator: \n" "Language-Team: lamb \n" @@ -644,6 +644,48 @@ msgstr "无法重新开始识别:模型不可用且无法下载。" msgid "Could not restart transcription: transcriber worker not found." msgstr "无法重新开始识别:未找到识别工作进程。" +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU 加速" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "仅使用 CPU 并禁用 GPU 加速" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"为 Nvidia GPU 安装 GPU 加速后,Buzz 可以使用 CUDA 显著加快音频转录速度。对于其他品牌的 GPU,此加速将不起作用。\n" +"\n" +"这将下载并安装支持 CUDA 的 PyTorch(约 2 GB)。安装完成后必须重启 Buzz。" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "安装 GPU 支持" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "暂不安装" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "安装完成!请重启 Buzz 以启用 GPU 加速。" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "关闭" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "安装失败:{}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "实时录制" @@ -794,6 +836,10 @@ msgstr "检查更新" msgid "Show logs" msgstr "显示日志" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "安装 CUDA 加速" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "已经是最新版本" @@ -1642,9 +1688,6 @@ msgstr "语音提取失败!请检查您的网络连接——可能需要下载 #~ "To enable necessary permissions run the following commands in the terminal" #~ msgstr "要启用必要的权限,请在终端中运行以下命令" -#~ msgid "Close" -#~ msgstr "关闭" - #~ msgid "Enter instructions for AI on how to translate..." #~ msgstr "输入AI如何翻译的说明..." diff --git a/buzz/locale/zh_TW/LC_MESSAGES/buzz.po b/buzz/locale/zh_TW/LC_MESSAGES/buzz.po index 6c8e07a03..55714c432 100644 --- a/buzz/locale/zh_TW/LC_MESSAGES/buzz.po +++ b/buzz/locale/zh_TW/LC_MESSAGES/buzz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-03 09:00+0300\n" +"POT-Creation-Date: 2026-03-28 21:04+0200\n" "PO-Revision-Date: 2023-05-01 15:45+0800\n" "Last-Translator: \n" "Language-Team: Lamb\n" @@ -645,6 +645,48 @@ msgstr "無法重新開始轉錄:模型不可用且無法下載。" msgid "Could not restart transcription: transcriber worker not found." msgstr "無法重新開始轉錄:找不到轉錄工作器。" +#: buzz/widgets/cuda_installer_widget.py +msgid "Nvidia GPU Acceleration" +msgstr "Nvidia GPU 加速" + +#: buzz/widgets/cuda_installer_widget.py +#, fuzzy +msgid "Install Nvidia GPU Acceleration?" +msgstr "僅使用 CPU 並停用 GPU 加速" + +#: buzz/widgets/cuda_installer_widget.py +msgid "" +"Installing GPU acceleration for Nvidia GPUS allows Buzz to transcribe audio " +"significantly faster using CUDA. For other GPU brands this acceleration will " +"have no effect\n" +"\n" +"This will download and install PyTorch with CUDA support (~8 GB). Buzz must " +"be restarted after installation." +msgstr "" +"為 Nvidia GPU 安裝 GPU 加速後,Buzz 可以使用 CUDA 大幅提升音訊轉錄速度。對於其他品牌的 GPU,此加速將不起作用。\n" +"\n" +"這將下載並安裝支援 CUDA 的 PyTorch(約 2 GB)。安裝完成後必須重新啟動 Buzz。" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Install GPU Support" +msgstr "安裝 GPU 支援" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Not Now" +msgstr "暫不安裝" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation complete! Restart Buzz to enable GPU acceleration." +msgstr "安裝完成!請重新啟動 Buzz 以啟用 GPU 加速。" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Close" +msgstr "" + +#: buzz/widgets/cuda_installer_widget.py +msgid "Installation failed: {}" +msgstr "安裝失敗:{}" + #: buzz/widgets/recording_transcriber_widget.py msgid "Live Recording" msgstr "現場錄製" @@ -795,6 +837,10 @@ msgstr "檢查更新" msgid "Show logs" msgstr "顯示日誌" +#: buzz/widgets/about_dialog.py +msgid "Install CUDA Acceleration" +msgstr "安裝 CUDA 加速" + #: buzz/widgets/about_dialog.py msgid "You're up to date!" msgstr "你是最新的!" diff --git a/buzz/model_loader.py b/buzz/model_loader.py index 050379c59..d57e938cf 100644 --- a/buzz/model_loader.py +++ b/buzz/model_loader.py @@ -174,12 +174,20 @@ def get_expected_whisper_model_size(size: WhisperModelSize) -> Optional[int]: return WHISPER_MODEL_SIZES.get(size, None) class ModelType(enum.Enum): - WHISPER = "Whisper" WHISPER_CPP = "Whisper.cpp" HUGGING_FACE = "Hugging Face" FASTER_WHISPER = "Faster Whisper" + WHISPER = "OpenAI Whisper" OPEN_AI_WHISPER_API = "OpenAI Whisper API" + @classmethod + def _missing_(cls, value): + # Migrate old stored values to new display names + legacy_map = { + "Whisper": cls.WHISPER, + } + return legacy_map.get(value) + @property def supports_initial_prompt(self): return self in ( @@ -320,7 +328,7 @@ def __init__( def __str__(self): match self.model_type: case ModelType.WHISPER: - return f"Whisper ({self.whisper_model_size})" + return f"OpenAI Whisper ({self.whisper_model_size})" case ModelType.WHISPER_CPP: return f"Whisper.cpp ({self.whisper_model_size})" case ModelType.HUGGING_FACE: diff --git a/buzz/settings/settings.py b/buzz/settings/settings.py index 0f9242a4b..062eca2e0 100644 --- a/buzz/settings/settings.py +++ b/buzz/settings/settings.py @@ -85,6 +85,9 @@ class Key(enum.Enum): LAST_UPDATE_CHECK = "update/last-check" UPDATE_AVAILABLE_VERSION = "update/available-version" + CUDA_PROMPT_SHOWN = "cuda/prompt-shown" + CUDA_INSTALL_DECLINED = "cuda/install-declined" + def get_user_identifier(self) -> str: user_id = self.value(self.Key.USER_IDENTIFIER, "") if not user_id: diff --git a/buzz/transcriber/cuda_device.py b/buzz/transcriber/cuda_device.py new file mode 100644 index 000000000..6a2e70e13 --- /dev/null +++ b/buzz/transcriber/cuda_device.py @@ -0,0 +1,17 @@ +import logging + + +def cuda_works() -> bool: + """Return True only if CUDA is available AND a kernel actually executes without error.""" + try: + import torch + except ImportError: + return False + if not torch.cuda.is_available() or not torch.version.cuda: + return False + try: + torch.zeros(1, device="cuda") + return True + except Exception as e: + logging.debug("CUDA smoke test failed, falling back to CPU: %s", e) + return False diff --git a/buzz/transcriber/recording_transcriber.py b/buzz/transcriber/recording_transcriber.py index 3d0105baf..300b80691 100644 --- a/buzz/transcriber/recording_transcriber.py +++ b/buzz/transcriber/recording_transcriber.py @@ -3,6 +3,7 @@ import platform import os import sys +import socket import wave import time import tempfile @@ -16,6 +17,7 @@ import torch import numpy as np +from buzz.transcriber.cuda_device import cuda_works import sounddevice from sounddevice import PortAudioError from openai import OpenAI @@ -78,6 +80,7 @@ def __init__( ) self.process = None self._stderr_lines: list[bytes] = [] + self._whisper_server_port: int = 3003 def start(self): self.is_running = True @@ -86,7 +89,7 @@ def start(self): keep_samples = int(self.keep_sample_seconds * self.sample_rate) force_cpu = os.getenv("BUZZ_FORCE_CPU", "false") - use_cuda = torch.cuda.is_available() and force_cpu == "false" + use_cuda = cuda_works() and force_cpu == "false" if torch.cuda.is_available(): logging.debug(f"CUDA version detected: {torch.version.cuda}") @@ -108,12 +111,11 @@ def start(self): model_root_dir = os.getenv("BUZZ_MODEL_ROOT", model_root_dir) device = "auto" - if torch.cuda.is_available() and torch.version.cuda < "12": - logging.debug("Unsupported CUDA version (<12), using CPU") + if not cuda_works(): + logging.debug("CUDA not available or not functional, using CPU") device = "cpu" - - if not torch.cuda.is_available(): - logging.debug("CUDA is not available, using CPU") + elif torch.version.cuda < "12": + logging.debug("Unsupported CUDA version (<12), using CPU") device = "cpu" if force_cpu != "false": @@ -208,7 +210,7 @@ def start(self): initial_prompt=initial_prompt, temperature=DEFAULT_WHISPER_TEMPERATURE, no_speech_threshold=0.4, - fp16=False, + fp16=use_cuda, ) elif ( self.transcription_options.model.model_type @@ -432,9 +434,14 @@ def start_local_whisper_server(self): if not os.path.exists(server_path): server_path = os.path.join(APP_BASE_DIR, "buzz", "whisper_cpp", server_executable) + # Pick a free port to avoid conflicts when multiple tests or instances run concurrently + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as _s: + _s.bind(('127.0.0.1', 0)) + self._whisper_server_port = _s.getsockname()[1] + cmd = [ server_path, - "--port", "3003", + "--port", str(self._whisper_server_port), "--inference-path", "/audio/transcriptions", "--threads", str(os.getenv("BUZZ_WHISPERCPP_N_THREADS", (os.cpu_count() or 8) // 2)), "--model", self.model_path, @@ -510,7 +517,7 @@ def start_local_whisper_server(self): self.openai_client = OpenAI( api_key="not-used", - base_url="http://127.0.0.1:3003", + base_url=f"http://127.0.0.1:{self._whisper_server_port}", timeout=30.0, max_retries=0 ) diff --git a/buzz/transcriber/whisper_file_transcriber.py b/buzz/transcriber/whisper_file_transcriber.py index 5198c448b..4d18d0f59 100644 --- a/buzz/transcriber/whisper_file_transcriber.py +++ b/buzz/transcriber/whisper_file_transcriber.py @@ -11,6 +11,8 @@ import torch import platform + +from buzz.transcriber.cuda_device import cuda_works import subprocess from platformdirs import user_cache_dir from multiprocessing.connection import Connection @@ -268,12 +270,11 @@ def transcribe_faster_whisper(cls, task: FileTranscriptionTask) -> List[Segment] force_cpu = os.getenv("BUZZ_FORCE_CPU", "false") device = "auto" - if torch.cuda.is_available() and torch.version.cuda < "12": - logging.debug("Unsupported CUDA version (<12), using CPU") + if not cuda_works(): + logging.debug("CUDA not available or not functional, using CPU") device = "cpu" - - if not torch.cuda.is_available(): - logging.debug("CUDA is not available, using CPU") + elif torch.version.cuda < "12": + logging.debug("Unsupported CUDA version (<12), using CPU") device = "cpu" if force_cpu != "false": @@ -334,7 +335,7 @@ def transcribe_faster_whisper(cls, task: FileTranscriptionTask) -> List[Segment] @classmethod def transcribe_openai_whisper(cls, task: FileTranscriptionTask) -> List[Segment]: force_cpu = os.getenv("BUZZ_FORCE_CPU", "false") - use_cuda = torch.cuda.is_available() and force_cpu == "false" + use_cuda = cuda_works() and force_cpu == "false" device = "cuda" if use_cuda else "cpu" @@ -360,7 +361,7 @@ def patched_torch_load(*args, **kwargs): temperature=DEFAULT_WHISPER_TEMPERATURE, initial_prompt=task.transcription_options.initial_prompt, no_speech_threshold=0.4, - fp16=False, + fp16=use_cuda, ) return [ Segment( @@ -380,7 +381,7 @@ def patched_torch_load(*args, **kwargs): temperature=task.transcription_options.temperature, initial_prompt=task.transcription_options.initial_prompt, verbose=False, - fp16=False, + fp16=use_cuda, ) segments = result.get("segments") return [ diff --git a/buzz/transformers_whisper.py b/buzz/transformers_whisper.py index aee8a8cfb..f5a0866b6 100644 --- a/buzz/transformers_whisper.py +++ b/buzz/transformers_whisper.py @@ -9,6 +9,7 @@ import torch import requests +from buzz.transcriber.cuda_device import cuda_works from typing import Union from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline, BitsAndBytesConfig from transformers.pipelines import AutomaticSpeechRecognitionPipeline @@ -245,7 +246,7 @@ def _transcribe_whisper( ): """Transcribe using Whisper model.""" force_cpu = os.getenv("BUZZ_FORCE_CPU", "false") - use_cuda = torch.cuda.is_available() and force_cpu == "false" + use_cuda = cuda_works() and force_cpu == "false" device = "cuda" if use_cuda else "cpu" torch_dtype = torch.float16 if use_cuda else torch.float32 @@ -464,7 +465,7 @@ def _transcribe_mms( from transformers.pipelines.audio_utils import ffmpeg_read as mms_ffmpeg_read force_cpu = os.getenv("BUZZ_FORCE_CPU", "false") - use_cuda = torch.cuda.is_available() and force_cpu == "false" + use_cuda = cuda_works() and force_cpu == "false" device = "cuda" if use_cuda else "cpu" # Map language code to ISO 639-3 for MMS diff --git a/buzz/widgets/about_dialog.py b/buzz/widgets/about_dialog.py index 5c6b67573..61165e8ee 100644 --- a/buzz/widgets/about_dialog.py +++ b/buzz/widgets/about_dialog.py @@ -20,6 +20,7 @@ from buzz.widgets.icon import BUZZ_ICON_PATH, BUZZ_LARGE_ICON_PATH from buzz.locale import _ from buzz.settings.settings import APP_NAME +from buzz.widgets.cuda_installer_widget import CudaInstallerDialog class AboutDialog(QDialog): @@ -84,9 +85,13 @@ def __init__( self.show_logs_button = QPushButton(_("Show logs"), self) self.show_logs_button.clicked.connect(self.on_click_show_logs) + self.cuda_installer_button = QPushButton(_("Install CUDA Acceleration"), self) + self.cuda_installer_button.clicked.connect(self.on_click_cuda_installer) + button_box = QDialogButtonBox( QDialogButtonBox.StandardButton(QDialogButtonBox.StandardButton.Close), self ) + button_box.button(QDialogButtonBox.StandardButton.Close).setText(_("Close")) button_box.accepted.connect(self.accept) button_box.rejected.connect(self.reject) @@ -95,6 +100,7 @@ def __init__( layout.addWidget(version_label) layout.addWidget(self.check_updates_button) layout.addWidget(self.show_logs_button) + layout.addWidget(self.cuda_installer_button) layout.addWidget(button_box) self.setLayout(layout) @@ -109,6 +115,12 @@ def on_click_show_logs(self): log_dir = user_log_dir(appname="Buzz") QDesktopServices.openUrl(QUrl.fromLocalFile(log_dir)) + def on_click_cuda_installer(self): + dialog = CudaInstallerDialog(self) + dialog.show() + dialog.raise_() + dialog.activateWindow() + def on_latest_release_reply(self, reply: QNetworkReply): if reply.error() == QNetworkReply.NetworkError.NoError: response = json.loads(reply.readAll().data()) diff --git a/buzz/widgets/cuda_installer_widget.py b/buzz/widgets/cuda_installer_widget.py new file mode 100644 index 000000000..4b51e2633 --- /dev/null +++ b/buzz/widgets/cuda_installer_widget.py @@ -0,0 +1,141 @@ +""" +Dialog for installing GPU (CUDA) acceleration at runtime. +""" + +import logging +from typing import Optional + +from PyQt6.QtCore import QRunnable, QThreadPool, Qt, pyqtSignal, QObject +from PyQt6.QtWidgets import ( + QDialog, + QVBoxLayout, + QHBoxLayout, + QLabel, + QPushButton, + QProgressBar, + QTextEdit, + QWidget, +) + +from buzz.locale import _ +from buzz.widgets.icon import BUZZ_ICON_PATH +from PyQt6.QtGui import QIcon + +logger = logging.getLogger(__name__) + + +class _InstallSignals(QObject): + progress = pyqtSignal(str) + finished = pyqtSignal() + error = pyqtSignal(str) + + +class _InstallWorker(QRunnable): + def __init__(self): + super().__init__() + self.signals = _InstallSignals() + + def run(self): + try: + from buzz.cuda_manager import install_cuda + install_cuda(progress_callback=self.signals.progress.emit) + self.signals.finished.emit() + except Exception as exc: + logger.exception("CUDA installation failed") + self.signals.error.emit(str(exc)) + + +class CudaInstallerDialog(QDialog): + """Dialog that offers to install CUDA GPU acceleration.""" + + def __init__(self, parent: Optional[QWidget] = None): + super().__init__(parent) + self.setWindowTitle(_("Nvidia GPU Acceleration")) + self.setWindowIcon(QIcon(BUZZ_ICON_PATH)) + self.setMinimumWidth(600) + self.setMinimumHeight(400) + self.setWindowFlags(self.windowFlags() | Qt.WindowType.WindowStaysOnTopHint) + + layout = QVBoxLayout(self) + layout.setSpacing(12) + + header = QLabel(_("Install Nvidia GPU Acceleration?")) + header.setStyleSheet("font-size: 15px; font-weight: bold;") + layout.addWidget(header) + + desc = QLabel( + _( + "Installing GPU acceleration for Nvidia GPUS allows Buzz " + "to transcribe audio significantly faster using CUDA. " + "For other GPU brands this acceleration will have no effect\n\n" + "This will download and install PyTorch with CUDA support (~8 GB). " + "Buzz must be restarted after installation." + ) + ) + desc.setWordWrap(True) + layout.addWidget(desc) + + self.log_view = QTextEdit() + self.log_view.setReadOnly(True) + self.log_view.setMinimumHeight(120) + self.log_view.setVisible(False) + layout.addWidget(self.log_view, 1) # stretch factor so it expands with window + + self.progress_bar = QProgressBar() + self.progress_bar.setRange(0, 0) # indeterminate + self.progress_bar.setVisible(False) + layout.addWidget(self.progress_bar) + + self.status_label = QLabel("") + layout.addWidget(self.status_label) + + button_layout = QHBoxLayout() + self.install_button = QPushButton(_("Install GPU Support")) + self.install_button.setDefault(True) + self.install_button.clicked.connect(self._on_install_clicked) + + self.decline_button = QPushButton(_("Not Now")) + self.decline_button.clicked.connect(self.reject) + + button_layout.addStretch() + button_layout.addWidget(self.decline_button) + button_layout.addWidget(self.install_button) + layout.addLayout(button_layout) + + def _on_install_clicked(self): + self.install_button.setEnabled(False) + self.decline_button.setEnabled(False) + self.progress_bar.setVisible(True) + self.log_view.setVisible(True) + self.status_label.setVisible(False) + + worker = _InstallWorker() + worker.signals.progress.connect(self._on_progress) + worker.signals.finished.connect(self._on_finished) + worker.signals.error.connect(self._on_error) + + QThreadPool.globalInstance().start(worker) + + def _on_progress(self, message: str): + self.log_view.append(message) + self.log_view.verticalScrollBar().setValue( + self.log_view.verticalScrollBar().maximum() + ) + + def _on_finished(self): + self.progress_bar.setVisible(False) + self.status_label.setVisible(True) + self.status_label.setText( + _("Installation complete! Restart Buzz to enable GPU acceleration.") + ) + self.install_button.setText(_("Close")) + self.install_button.setEnabled(True) + self.install_button.clicked.disconnect() + self.install_button.clicked.connect(self.accept) + + def _on_error(self, error: str): + self.progress_bar.setVisible(False) + self.status_label.setVisible(True) + self.status_label.setText(_("Installation failed: {}").format(error)) + self.install_button.setEnabled(True) + self.decline_button.setEnabled(True) diff --git a/buzz/widgets/icon_presentation.py b/buzz/widgets/icon_presentation.py deleted file mode 100644 index 6f230971b..000000000 --- a/buzz/widgets/icon_presentation.py +++ /dev/null @@ -1,60 +0,0 @@ -from PyQt6.QtGui import QIcon, QPixmap, QPainter, QPalette -from PyQt6.QtCore import QSize -from PyQt6.QtSvg import QSvgRenderer -import os -from buzz.assets import APP_BASE_DIR - -class PresentationIcon: - "Icons for presentation window controls" - def __init__(self, parent, svg_path: str, color: str = None): - self.parent = parent - self.svg_path = svg_path - self.color = color or self.get_default_color() - - - def get_default_color(self) -> str: - """Get default icon color based on theme""" - palette = self.parent.palette() - is_dark = palette.window().color().black() > 127 - - return "#EEE" if is_dark else "#555" - - def get_icon(self) -> QIcon: - """Load SVG icon and return as QIcon""" - #Load from asset first - full_path = os.path.join(APP_BASE_DIR, "assets", "icons", os.path.basename(self.svg_path)) - - if not os.path.exists(full_path): - pixmap = QPixmap(24, 24) - pixmap.fill(self.color) - - return QIcon(pixmap) - - #Load SVG - renderer = QSvgRenderer(full_path) - pixmap = QPixmap(24, 24) - pixmap.fill(Qt.GlobalColor.transparent) - painter = QPainter(pixmap) - renderer.render(painter) - painter.end() - - return QIcon(pixmap) - - - - - - - - - - - - - - - - - - - diff --git a/buzz/widgets/main_window.py b/buzz/widgets/main_window.py index f877321af..a1a2d27aa 100644 --- a/buzz/widgets/main_window.py +++ b/buzz/widgets/main_window.py @@ -165,6 +165,9 @@ def __init__(self, transcription_service: TranscriptionService): #Initialize and run update checker self._init_update_checker() + #Offer CUDA installation on Windows if not done before + self._maybe_show_cuda_prompt() + def on_preferences_changed(self, preferences: Preferences): self.preferences = preferences self.save_preferences(preferences) @@ -516,6 +519,32 @@ def _on_update_available(self, update_info: UpdateInfo): self._update_info = update_info self.toolbar.set_update_available(True) + def _maybe_show_cuda_prompt(self): + """On first launch (Windows/Snap/Flatpak), offer CUDA installation if an NVIDIA GPU is present.""" + from buzz import cuda_manager + is_nvidia_gpu_present = cuda_manager.is_nvidia_gpu_present() + + logging.debug(f"Nvidia GPU detected: {is_nvidia_gpu_present}") + + if not is_nvidia_gpu_present: + return + if not cuda_manager.should_offer_cuda_prompt(): + return + if self.settings.value(Settings.Key.CUDA_PROMPT_SHOWN, False): + return + self.settings.set_value(Settings.Key.CUDA_PROMPT_SHOWN, True) + + from PyQt6.QtCore import QTimer + from buzz.widgets.cuda_installer_widget import CudaInstallerDialog + + def _show(): + dialog = CudaInstallerDialog(self) + dialog.show() + dialog.raise_() + dialog.activateWindow() + + QTimer.singleShot(500, _show) + def on_update_action_triggered(self): """Called when user clicks the update action in toolbar.""" if self._update_info is None: diff --git a/buzz/widgets/recording_transcriber_widget.py b/buzz/widgets/recording_transcriber_widget.py index 8c6ba922c..dc641f0d2 100644 --- a/buzz/widgets/recording_transcriber_widget.py +++ b/buzz/widgets/recording_transcriber_widget.py @@ -642,7 +642,7 @@ def on_model_loaded(self, model_path: str): self.transcription_thread.started.connect(self.transcriber.start) self.transcription_thread.finished.connect( - self.transcription_thread.deleteLater + self._on_transcription_thread_finished ) self.transcription_thread.finished.connect( lambda: setattr(self, 'transcription_thread', None) @@ -1077,6 +1077,7 @@ def on_transcriber_error(self, error: str): self.reset_record_button() self.set_recording_status_stopped() self.reset_recording_amplitude_listener() + self.transcription_stopped.emit() QMessageBox.critical( self, "", @@ -1123,7 +1124,7 @@ def closeEvent(self, event: QCloseEvent) -> None: super().closeEvent(event) return - if self.current_status == self.RecordingStatus.RECORDING: + if self.current_status == self.RecordingStatus.RECORDING or self.transcription_thread is not None: # Defer the close until the transcription thread finishes to avoid # blocking the GUI thread with a synchronous wait. event.ignore() @@ -1152,8 +1153,28 @@ def closeEvent(self, event: QCloseEvent) -> None: self._do_close() super().closeEvent(event) - def _on_close_transcriber_finished(self): + def _cleanup_transcription_thread(self): + """Wait for the OS thread to exit, schedule deletion, and clear the reference. + + QThread::finished is emitted before the OS thread fully exits, so we + must call thread.wait() before dropping the last reference or calling + deleteLater() — otherwise Qt destroys the C++ object while the thread + is still in its final cleanup steps. + """ + thread = self.transcription_thread self.transcription_thread = None + if thread is not None: + try: + thread.wait() + thread.deleteLater() + except RuntimeError: + pass + + def _on_transcription_thread_finished(self): + self._cleanup_transcription_thread() + + def _on_close_transcriber_finished(self): + self._cleanup_transcription_thread() self.close() def _do_close(self): diff --git a/installer.iss b/installer.iss index b13d5061f..88ada84e6 100644 --- a/installer.iss +++ b/installer.iss @@ -26,7 +26,6 @@ OutputDir={#OutputDir} OutputBaseFilename={#AppName}-{#AppVersion}-windows SetupIconFile={#AppIconPath} UninstallDisplayIcon={app}\{#AppExeName} -DiskSpanning=yes Compression=lzma SolidCompression=yes WizardStyle=modern diff --git a/pyproject.toml b/pyproject.toml index 7a059cb63..a46e9cfeb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,14 +36,13 @@ dependencies = [ "torch==2.2.2; sys_platform == 'darwin' and platform_machine == 'x86_64'", "torchaudio==2.2.2; sys_platform == 'darwin' and platform_machine == 'x86_64'", "ctranslate2==4.3.1; sys_platform == 'darwin' and platform_machine == 'x86_64'", - # For ARM macOS (arm64) - use latest CPU-only versions from PyPI + # For Linux/Windows - use CPU versions from pytorch index + "ctranslate2>=4.6.2,<5; sys_platform != 'darwin'", + "torch==2.8.0+cpu; sys_platform != 'darwin'", + "torchaudio==2.8.0+cpu; sys_platform != 'darwin'", + # For ARM Mac - use regular PyPI torch "torch==2.8.0; sys_platform == 'darwin' and platform_machine == 'arm64'", "torchaudio==2.8.0; sys_platform == 'darwin' and platform_machine == 'arm64'", - "ctranslate2>=4.6.2,<5; sys_platform == 'darwin' and platform_machine == 'arm64'", - # For Linux/Windows - use CUDA versions from pytorch index - "torch==2.8.0; sys_platform != 'darwin'", - "torchaudio==2.8.0; sys_platform != 'darwin'", - "ctranslate2>=4.6.2,<5; sys_platform != 'darwin'", # faster whisper need cudnn 9 "nvidia-cudnn-cu12>=9,<10; sys_platform != 'darwin'", # CUDA runtime libraries are provided by torch dependencies, no need to specify explicitly @@ -82,8 +81,6 @@ dependencies = [ "certifi>=2025.11.12", "truststore>=0.10.0", "torchcodec>=0.9.0; sys_platform != 'darwin' or platform_machine != 'x86_64'", - "torch>=2.2.2", - "torchaudio>=2.2.2", "datasets>=4.4.1", ] repository = "https://github.com/chidiwilliams/buzz" @@ -131,26 +128,15 @@ override-dependencies = [ [tool.uv.sources] torch = [ - { index = "PyPI", marker = "sys_platform == 'darwin'" }, - { index = "pytorch-cu129", marker = "sys_platform != 'darwin'" }, + { index = "pytorch-cpu", marker = "sys_platform != 'darwin'" }, ] torchaudio = [ - { index = "PyPI", marker = "sys_platform == 'darwin'" }, - { index = "pytorch-cu129", marker = "sys_platform != 'darwin'" }, + { index = "pytorch-cpu", marker = "sys_platform != 'darwin'" }, ] - -[[tool.uv.index]] -name = "nvidia" -url = "https://pypi.ngc.nvidia.com/" - -[[tool.uv.index]] -name = "pytorch-cu129" -url = "https://download.pytorch.org/whl/cu129" - [[tool.uv.index]] -name = "PyPI" -url = "https://pypi.org/simple/" -default = true +name = "pytorch-cpu" +url = "https://download.pytorch.org/whl/cpu" +explicit = true [tool.hatch.metadata] allow-direct-references = true diff --git a/share/metainfo/io.github.chidiwilliams.Buzz.metainfo.xml b/share/metainfo/io.github.chidiwilliams.Buzz.metainfo.xml index e7f155121..8afff8306 100644 --- a/share/metainfo/io.github.chidiwilliams.Buzz.metainfo.xml +++ b/share/metainfo/io.github.chidiwilliams.Buzz.metainfo.xml @@ -65,12 +65,13 @@ - + https://github.com/chidiwilliams/buzz/releases/tag/v1.4.5 -

Bug fixes and minor improvements.

+

Unbundled CUDA to make app installations smaller. CUDA Acceleration for Nvidia GPUs can be installed optionally from Help - About Buzz

  • Appimage support for Linux
  • +
  • Minor fixes to model loading and initial prompt processing
@@ -148,4 +149,4 @@
- + \ No newline at end of file diff --git a/tests/cuda_manager_test.py b/tests/cuda_manager_test.py new file mode 100644 index 000000000..deb596f48 --- /dev/null +++ b/tests/cuda_manager_test.py @@ -0,0 +1,316 @@ +import subprocess +import sys +from pathlib import Path +from unittest.mock import MagicMock, patch, call + +import pytest + +from buzz.cuda_manager import ( + CUDA_INDEX_URL, + CUDA_NVIDIA_PACKAGES_LINUX, + is_cuda_torch_installed, + is_flatpak, + is_nvidia_gpu_present, + is_snap, + should_offer_cuda_prompt, + _get_install_target, + _get_pip_cmd, + _in_virtualenv, + _pip_install, + _subprocess_hide_window_kwargs, + install_cuda, +) + + +class TestIsSnap: + def test_returns_true_when_snap_env_set(self, monkeypatch): + monkeypatch.setenv("SNAP", "/snap/buzz/current") + assert is_snap() is True + + def test_returns_false_when_snap_env_not_set(self, monkeypatch): + monkeypatch.delenv("SNAP", raising=False) + assert is_snap() is False + + +class TestIsFlatpak: + def test_returns_true_when_flatpak_env_set(self, monkeypatch): + monkeypatch.setenv("FLATPAK_ID", "io.github.chidiwilliams.buzz") + assert is_flatpak() is True + + def test_returns_false_when_flatpak_env_not_set(self, monkeypatch): + monkeypatch.delenv("FLATPAK_ID", raising=False) + assert is_flatpak() is False + + +class TestShouldOfferCudaPrompt: + def test_returns_true_on_windows(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "win32") + assert should_offer_cuda_prompt() is True + + def test_returns_true_on_linux_snap(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "linux") + monkeypatch.setenv("SNAP", "/snap/buzz/current") + monkeypatch.delenv("FLATPAK_ID", raising=False) + assert should_offer_cuda_prompt() is True + + def test_returns_true_on_linux_flatpak(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "linux") + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.setenv("FLATPAK_ID", "io.github.chidiwilliams.buzz") + assert should_offer_cuda_prompt() is True + + def test_returns_false_on_linux_bare(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "linux") + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + assert should_offer_cuda_prompt() is False + + def test_returns_false_on_macos(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "darwin") + assert should_offer_cuda_prompt() is False + + +class TestIsCudaTorchInstalled: + def test_returns_true_when_cuda_available(self): + mock_torch = MagicMock() + mock_torch.cuda.is_available.return_value = True + mock_torch.__version__ = "2.0.0+cu118" + mock_torch.version.cuda = "11.8" + with patch.dict("sys.modules", {"torch": mock_torch}): + assert is_cuda_torch_installed() is True + + def test_returns_false_when_cuda_not_available(self): + mock_torch = MagicMock() + mock_torch.cuda.is_available.return_value = False + mock_torch.__version__ = "2.0.0" + mock_torch.version.cuda = None + with patch.dict("sys.modules", {"torch": mock_torch}): + assert is_cuda_torch_installed() is False + + def test_returns_false_when_torch_not_installed(self): + with patch.dict("sys.modules", {"torch": None}): + with patch("builtins.__import__", side_effect=ImportError): + assert is_cuda_torch_installed() is False + + def test_logs_warning_when_cuda_compiled_but_unavailable(self): + mock_torch = MagicMock() + mock_torch.cuda.is_available.return_value = False + mock_torch.__version__ = "2.0.0+cu118" + mock_torch.version.cuda = "11.8" + with patch.dict("sys.modules", {"torch": mock_torch}): + with patch("buzz.cuda_manager.logger") as mock_logger: + is_cuda_torch_installed() + mock_logger.warning.assert_called_once() + + +class TestIsNvidiaGpuPresent: + def test_returns_true_when_nvidia_smi_succeeds(self): + with patch("subprocess.run") as mock_run: + mock_run.return_value = MagicMock(returncode=0) + assert is_nvidia_gpu_present() is True + + def test_falls_back_to_proc_file_when_nvidia_smi_missing(self, tmp_path): + with patch("subprocess.run", side_effect=FileNotFoundError): + with patch("buzz.cuda_manager.Path") as mock_path_cls: + mock_path_cls.return_value.exists.return_value = True + assert is_nvidia_gpu_present() is True + + def test_returns_false_when_nvidia_smi_fails_and_no_proc_file(self): + with patch("subprocess.run") as mock_run: + mock_run.return_value = MagicMock(returncode=1) + with patch("pathlib.Path.exists", return_value=False): + assert is_nvidia_gpu_present() is False + + def test_handles_timeout(self): + with patch("subprocess.run", side_effect=subprocess.TimeoutExpired(["nvidia-smi"], 5)): + with patch("pathlib.Path.exists", return_value=False): + assert is_nvidia_gpu_present() is False + + +class TestInVirtualenv: + def test_returns_true_when_virtual_env_set(self, monkeypatch): + monkeypatch.setenv("VIRTUAL_ENV", "/some/venv") + assert _in_virtualenv() is True + + def test_returns_true_when_prefix_differs(self, monkeypatch): + monkeypatch.delenv("VIRTUAL_ENV", raising=False) + with patch.object(sys, "prefix", "/some/venv"): + with patch.object(sys, "base_prefix", "/usr"): + assert _in_virtualenv() is True + + def test_returns_false_when_no_venv(self, monkeypatch): + monkeypatch.delenv("VIRTUAL_ENV", raising=False) + with patch.object(sys, "prefix", sys.base_prefix): + assert _in_virtualenv() is False + + +class TestGetInstallTarget: + def test_snap_uses_snap_user_data(self, monkeypatch, tmp_path): + snap_dir = tmp_path / "snap_data" + monkeypatch.setenv("SNAP", "/snap/buzz/current") + monkeypatch.setenv("SNAP_USER_DATA", str(snap_dir)) + monkeypatch.delenv("FLATPAK_ID", raising=False) + flags = _get_install_target() + assert flags[0] == "--target" + assert "cuda_packages" in flags[1] + assert str(snap_dir) in flags[1] + + def test_snap_falls_back_to_home_when_no_snap_user_data(self, monkeypatch): + monkeypatch.setenv("SNAP", "/snap/buzz/current") + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + with patch("pathlib.Path.mkdir"): + flags = _get_install_target() + assert flags[0] == "--target" + assert "cuda_packages" in flags[1] + + def test_flatpak_uses_xdg_data_home(self, monkeypatch, tmp_path): + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.setenv("FLATPAK_ID", "io.github.chidiwilliams.buzz") + monkeypatch.setenv("XDG_DATA_HOME", str(tmp_path)) + with patch("pathlib.Path.mkdir"): + flags = _get_install_target() + assert flags[0] == "--target" + assert "buzz" in flags[1] + assert "cuda_packages" in flags[1] + + def test_virtualenv_returns_empty(self, monkeypatch): + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + monkeypatch.setenv("VIRTUAL_ENV", "/some/venv") + assert _get_install_target() == [] + + def test_bare_returns_user_flag(self, monkeypatch): + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + monkeypatch.delenv("VIRTUAL_ENV", raising=False) + with patch.object(sys, "prefix", sys.base_prefix): + assert _get_install_target() == ["--user"] + + +class TestSubprocessHideWindowKwargs: + def test_returns_empty_on_linux(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "linux") + assert _subprocess_hide_window_kwargs() == {} + + def test_returns_startupinfo_on_windows(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "win32") + # Only run on actual windows, otherwise mock the STARTUPINFO + if sys.platform != "win32": + mock_si = MagicMock() + with patch("subprocess.STARTUPINFO", return_value=mock_si): + with patch("subprocess.STARTF_USESHOWWINDOW", 1): + with patch("subprocess.SW_HIDE", 0): + with patch("subprocess.CREATE_NO_WINDOW", 0x08000000): + result = _subprocess_hide_window_kwargs() + assert "startupinfo" in result + assert "creationflags" in result + + +class TestGetPipCmd: + def test_returns_sys_executable_when_pip_available(self): + with patch("subprocess.run") as mock_run: + mock_run.return_value = MagicMock(returncode=0) + cmd = _get_pip_cmd() + assert cmd == [sys.executable, "-m", "pip"] + + def test_bootstraps_pip_when_not_available(self): + responses = [ + MagicMock(returncode=1), # pip --version fails + MagicMock(returncode=0), # ensurepip succeeds + ] + with patch("subprocess.run", side_effect=responses): + cmd = _get_pip_cmd() + assert cmd == [sys.executable, "-m", "pip"] + + def test_raises_when_ensurepip_also_fails(self): + responses = [ + MagicMock(returncode=1), # pip --version fails + MagicMock(returncode=1), # ensurepip fails + ] + with patch("subprocess.run", side_effect=responses): + with pytest.raises(RuntimeError, match="pip is not available"): + _get_pip_cmd() + + +class TestPipInstall: + def test_calls_pip_with_packages(self): + mock_proc = MagicMock() + mock_proc.stdout = iter(["Collecting torch\n", "Successfully installed\n"]) + mock_proc.returncode = 0 + mock_proc.wait.return_value = None + + with patch("buzz.cuda_manager._get_pip_cmd", return_value=[sys.executable, "-m", "pip"]): + with patch("subprocess.Popen", return_value=mock_proc) as mock_popen: + _pip_install(["torch==2.0.0"], extra_args=["--index-url", "https://example.com"]) + + cmd = mock_popen.call_args[0][0] + assert "torch==2.0.0" in cmd + assert "--index-url" in cmd + + def test_raises_on_nonzero_exit(self): + mock_proc = MagicMock() + mock_proc.stdout = iter([]) + mock_proc.returncode = 1 + mock_proc.wait.return_value = None + + with patch("buzz.cuda_manager._get_pip_cmd", return_value=[sys.executable, "-m", "pip"]): + with patch("subprocess.Popen", return_value=mock_proc): + with pytest.raises(RuntimeError, match="pip install failed"): + _pip_install(["torch==2.0.0"]) + + def test_calls_progress_callback(self): + mock_proc = MagicMock() + mock_proc.stdout = iter(["line1\n", "line2\n"]) + mock_proc.returncode = 0 + mock_proc.wait.return_value = None + + calls = [] + with patch("buzz.cuda_manager._get_pip_cmd", return_value=[sys.executable, "-m", "pip"]): + with patch("subprocess.Popen", return_value=mock_proc): + _pip_install(["pkg"], progress_callback=calls.append) + + assert "line1" in calls + assert "line2" in calls + + +class TestInstallCuda: + def test_calls_pip_install_twice(self, monkeypatch): + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + monkeypatch.setenv("VIRTUAL_ENV", "/some/venv") + + with patch("buzz.cuda_manager._pip_install") as mock_pip: + install_cuda() + + assert mock_pip.call_count == 2 + + def test_passes_progress_callback(self, monkeypatch): + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + monkeypatch.setenv("VIRTUAL_ENV", "/some/venv") + + messages = [] + with patch("buzz.cuda_manager._pip_install"): + install_cuda(progress_callback=messages.append) + + assert any("NVIDIA" in m for m in messages) + assert any("PyTorch" in m for m in messages) + + def test_linux_excludes_linux_only_packages_on_windows(self, monkeypatch): + monkeypatch.setattr(sys, "platform", "win32") + monkeypatch.delenv("SNAP", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + + captured = [] + + def fake_pip(packages, **kwargs): + captured.append(packages) + + with patch("buzz.cuda_manager._pip_install", side_effect=fake_pip): + with patch("buzz.cuda_manager._get_install_target", return_value=[]): + install_cuda() + + nvidia_pkgs = captured[0] + for pkg in CUDA_NVIDIA_PACKAGES_LINUX: + assert pkg not in nvidia_pkgs diff --git a/tests/cuda_setup_test.py b/tests/cuda_setup_test.py new file mode 100644 index 000000000..2eb4f47ac --- /dev/null +++ b/tests/cuda_setup_test.py @@ -0,0 +1,261 @@ +import sys +from unittest.mock import patch + + +class TestGetCudaTargetDir: + def test_returns_snap_path(self, monkeypatch, tmp_path): + monkeypatch.setenv("SNAP_USER_DATA", str(tmp_path)) + monkeypatch.delenv("FLATPAK_ID", raising=False) + from buzz.cuda_setup import _get_cuda_target_dir + result = _get_cuda_target_dir() + assert result == tmp_path / "cuda_packages" + + def test_returns_flatpak_path(self, monkeypatch, tmp_path): + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.setenv("FLATPAK_ID", "io.github.chidiwilliams.buzz") + monkeypatch.setenv("XDG_DATA_HOME", str(tmp_path)) + from buzz.cuda_setup import _get_cuda_target_dir + result = _get_cuda_target_dir() + assert result == tmp_path / "buzz" / "cuda_packages" + + def test_returns_none_when_no_env(self, monkeypatch): + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + from buzz.cuda_setup import _get_cuda_target_dir + result = _get_cuda_target_dir() + assert result is None + + def test_flatpak_falls_back_to_home(self, monkeypatch): + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.setenv("FLATPAK_ID", "io.github.chidiwilliams.buzz") + monkeypatch.delenv("XDG_DATA_HOME", raising=False) + from buzz.cuda_setup import _get_cuda_target_dir + result = _get_cuda_target_dir() + assert result is not None + assert "cuda_packages" in str(result) + + +class TestGetSitePackagesDirs: + def test_adds_cuda_target_to_sys_path(self, monkeypatch, tmp_path): + cuda_target = tmp_path / "cuda_packages" + cuda_target.mkdir() + monkeypatch.setenv("SNAP_USER_DATA", str(tmp_path)) + monkeypatch.delenv("FLATPAK_ID", raising=False) + + from buzz.cuda_setup import _get_site_packages_dirs + dirs = _get_site_packages_dirs() + + assert cuda_target in dirs + assert str(cuda_target) in sys.path + + def test_returns_list_including_existing_site_packages(self, monkeypatch): + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + + from buzz.cuda_setup import _get_site_packages_dirs + dirs = _get_site_packages_dirs() + assert isinstance(dirs, list) + + +class TestCollectCudaLibDirs: + def test_includes_torch_lib(self, tmp_path): + torch_lib = tmp_path / "torch" / "lib" + torch_lib.mkdir(parents=True) + + from buzz.cuda_setup import _collect_cuda_lib_dirs + dirs = _collect_cuda_lib_dirs(tmp_path) + assert str(torch_lib) in dirs + + def test_includes_nvidia_package_libs(self, tmp_path): + nvidia_cublas = tmp_path / "nvidia" / "cublas" / "lib" + nvidia_cublas.mkdir(parents=True) + + from buzz.cuda_setup import _collect_cuda_lib_dirs + dirs = _collect_cuda_lib_dirs(tmp_path) + assert str(nvidia_cublas) in dirs + + def test_returns_empty_when_no_dirs_exist(self, tmp_path): + from buzz.cuda_setup import _collect_cuda_lib_dirs + dirs = _collect_cuda_lib_dirs(tmp_path) + assert dirs == [] + + +class TestGetNvidiaPackageLibDirs: + def test_finds_nvidia_lib_dirs(self, monkeypatch, tmp_path): + sp = tmp_path / "site-packages" + nvidia_lib = sp / "nvidia" / "cublas" / "lib" + nvidia_lib.mkdir(parents=True) + + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + + with patch("buzz.cuda_setup._get_site_packages_dirs", return_value=[sp]): + from buzz.cuda_setup import _get_nvidia_package_lib_dirs + dirs = _get_nvidia_package_lib_dirs() + + assert nvidia_lib in dirs + + def test_finds_torch_lib_dir(self, monkeypatch, tmp_path): + sp = tmp_path / "site-packages" + torch_lib = sp / "torch" / "lib" + torch_lib.mkdir(parents=True) + + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + + with patch("buzz.cuda_setup._get_site_packages_dirs", return_value=[sp]): + from buzz.cuda_setup import _get_nvidia_package_lib_dirs + dirs = _get_nvidia_package_lib_dirs() + + assert torch_lib in dirs + + +class TestSetupLinuxCuda: + def test_skips_when_no_cuda_target(self, monkeypatch): + monkeypatch.delenv("SNAP_USER_DATA", raising=False) + monkeypatch.delenv("FLATPAK_ID", raising=False) + monkeypatch.delenv("BUZZ_CUDA_SETUP_DONE", raising=False) + + with patch("buzz.cuda_setup._get_cuda_target_dir", return_value=None): + with patch("buzz.cuda_setup._collect_site_packages_cuda_lib_dirs", return_value=[]): + with patch("multiprocessing.parent_process", return_value=None): + from buzz.cuda_setup import _setup_linux_cuda + _setup_linux_cuda() # should not raise + + def test_skips_when_cuda_target_does_not_exist(self, monkeypatch, tmp_path): + monkeypatch.delenv("BUZZ_CUDA_SETUP_DONE", raising=False) + nonexistent = tmp_path / "nonexistent" + with patch("buzz.cuda_setup._get_cuda_target_dir", return_value=nonexistent): + with patch("buzz.cuda_setup._collect_site_packages_cuda_lib_dirs", return_value=[]): + with patch("multiprocessing.parent_process", return_value=None): + from buzz.cuda_setup import _setup_linux_cuda + _setup_linux_cuda() # should not raise + + def test_skips_when_no_torch_lib(self, monkeypatch, tmp_path): + monkeypatch.delenv("BUZZ_CUDA_SETUP_DONE", raising=False) + cuda_target = tmp_path / "cuda_packages" + cuda_target.mkdir() + with patch("buzz.cuda_setup._get_cuda_target_dir", return_value=cuda_target): + with patch("buzz.cuda_setup._collect_site_packages_cuda_lib_dirs", return_value=[]): + with patch("multiprocessing.parent_process", return_value=None): + from buzz.cuda_setup import _setup_linux_cuda + _setup_linux_cuda() # should not raise + + def test_reexecs_when_sentinel_not_set(self, monkeypatch, tmp_path): + cuda_target = tmp_path / "cuda_packages" + torch_lib = cuda_target / "torch" / "lib" + torch_lib.mkdir(parents=True) + + monkeypatch.delenv("BUZZ_CUDA_SETUP_DONE", raising=False) + monkeypatch.delenv("LD_LIBRARY_PATH", raising=False) + + with patch("buzz.cuda_setup._get_cuda_target_dir", return_value=cuda_target): + with patch("buzz.cuda_setup._collect_cuda_lib_dirs", return_value=[str(torch_lib)]): + with patch("multiprocessing.parent_process", return_value=None): + with patch("os.execv", side_effect=OSError("test")): + with patch("buzz.cuda_setup._preload_linux_libraries_fallback") as mock_fallback: + from buzz.cuda_setup import _setup_linux_cuda + _setup_linux_cuda() + + mock_fallback.assert_called_once() + + def test_no_reexec_when_sentinel_already_set(self, monkeypatch, tmp_path): + cuda_target = tmp_path / "cuda_packages" + torch_lib = cuda_target / "torch" / "lib" + torch_lib.mkdir(parents=True) + + monkeypatch.setenv("BUZZ_CUDA_SETUP_DONE", "1") + + with patch("buzz.cuda_setup._get_cuda_target_dir", return_value=cuda_target): + with patch("os.execv") as mock_execv: + from buzz.cuda_setup import _setup_linux_cuda + _setup_linux_cuda() + + mock_execv.assert_not_called() + + def test_no_reexec_in_worker_subprocess(self, monkeypatch, tmp_path): + cuda_target = tmp_path / "cuda_packages" + torch_lib = cuda_target / "torch" / "lib" + torch_lib.mkdir(parents=True) + + monkeypatch.delenv("BUZZ_CUDA_SETUP_DONE", raising=False) + + with patch("buzz.cuda_setup._get_cuda_target_dir", return_value=cuda_target): + with patch("multiprocessing.parent_process", return_value=object()): + with patch("os.execv") as mock_execv: + from buzz.cuda_setup import _setup_linux_cuda + _setup_linux_cuda() + + mock_execv.assert_not_called() + + +class TestSetupWindowsDllDirectories: + def test_calls_add_dll_directory(self, tmp_path): + lib_dir = tmp_path / "lib" + lib_dir.mkdir() + + with patch("buzz.cuda_setup._get_nvidia_package_lib_dirs", return_value=[lib_dir]): + with patch("buzz.cuda_setup.os") as mock_os: + from buzz.cuda_setup import _setup_windows_dll_directories + _setup_windows_dll_directories() + + mock_os.add_dll_directory.assert_called_once_with(str(lib_dir)) + + def test_logs_warning_when_no_lib_dirs(self): + with patch("buzz.cuda_setup._get_nvidia_package_lib_dirs", return_value=[]): + with patch("buzz.cuda_setup.logger") as mock_logger: + from buzz.cuda_setup import _setup_windows_dll_directories + _setup_windows_dll_directories() + + mock_logger.warning.assert_called_once() + + +class TestSetupCudaLibraries: + def test_calls_windows_setup_on_windows(self): + with patch("platform.system", return_value="Windows"): + with patch("buzz.cuda_setup._setup_windows_dll_directories") as mock_win: + from buzz.cuda_setup import setup_cuda_libraries + setup_cuda_libraries() + mock_win.assert_called_once() + + def test_calls_linux_setup_on_linux(self): + with patch("platform.system", return_value="Linux"): + with patch("buzz.cuda_setup._setup_linux_cuda") as mock_linux: + from buzz.cuda_setup import setup_cuda_libraries + setup_cuda_libraries() + mock_linux.assert_called_once() + + def test_does_nothing_on_macos(self): + with patch("platform.system", return_value="Darwin"): + with patch("buzz.cuda_setup._setup_windows_dll_directories") as mock_win: + with patch("buzz.cuda_setup._setup_linux_cuda") as mock_linux: + from buzz.cuda_setup import setup_cuda_libraries + setup_cuda_libraries() + mock_win.assert_not_called() + mock_linux.assert_not_called() + + +class TestPreloadLinuxLibrariesFallback: + def test_loads_so_files(self, tmp_path): + lib_dir = tmp_path / "lib" + lib_dir.mkdir() + so_file = lib_dir / "libfoo.so.1" + so_file.touch() + + with patch("buzz.cuda_setup._get_nvidia_package_lib_dirs", return_value=[lib_dir]): + with patch("ctypes.CDLL") as mock_cdll: + from buzz.cuda_setup import _preload_linux_libraries_fallback + _preload_linux_libraries_fallback() + mock_cdll.assert_called() + + def test_skips_libnvblas(self, tmp_path): + lib_dir = tmp_path / "lib" + lib_dir.mkdir() + skip_file = lib_dir / "libnvblas.so.1" + skip_file.touch() + + with patch("buzz.cuda_setup._get_nvidia_package_lib_dirs", return_value=[lib_dir]): + with patch("ctypes.CDLL") as mock_cdll: + from buzz.cuda_setup import _preload_linux_libraries_fallback + _preload_linux_libraries_fallback() + mock_cdll.assert_not_called() diff --git a/tests/model_loader_test.py b/tests/model_loader_test.py index 331cd009a..f14004358 100644 --- a/tests/model_loader_test.py +++ b/tests/model_loader_test.py @@ -152,7 +152,7 @@ def test_str_whisper(self): model = TranscriptionModel( model_type=ModelType.WHISPER, whisper_model_size=WhisperModelSize.TINY ) - assert str(model) == "Whisper (Tiny)" + assert str(model) == "OpenAI Whisper (Tiny)" def test_str_whisper_cpp(self): model = TranscriptionModel( diff --git a/tests/transcriber/recording_transcriber_test.py b/tests/transcriber/recording_transcriber_test.py index 3ceef3cc8..6a118f43a 100644 --- a/tests/transcriber/recording_transcriber_test.py +++ b/tests/transcriber/recording_transcriber_test.py @@ -414,6 +414,7 @@ def test_start_local_whisper_server_creates_openai_client(self): # Mock a successful process mock_process = MagicMock() mock_process.poll.return_value = None # Process is running + mock_process.stderr = iter([]) mock_popen.return_value = mock_process transcriber = RecordingTranscriber( @@ -522,7 +523,7 @@ def test_start_local_whisper_server_handles_failure(self): # Mock a failed process mock_process = MagicMock() mock_process.poll.return_value = 1 # Process terminated with error - mock_process.stderr.read.return_value = b"Error loading model" + mock_process.stderr = iter([b"Error loading model"]) mock_popen.return_value = mock_process transcriber = RecordingTranscriber( diff --git a/tests/transcriber/whisper_file_transcriber_test.py b/tests/transcriber/whisper_file_transcriber_test.py index 2cf34b0ba..c787087a3 100644 --- a/tests/transcriber/whisper_file_transcriber_test.py +++ b/tests/transcriber/whisper_file_transcriber_test.py @@ -81,13 +81,13 @@ class TestWhisperFileTranscriber: pytest.param( "/a/b/c.mp4", OutputFormat.SRT, - "/a/b/c-translate--Whisper-tiny.srt", + "/a/b/c-translate--OpenAI Whisper-tiny.srt", marks=pytest.mark.skipif(platform.system() == "Windows", reason=""), ), pytest.param( "C:\\a\\b\\c.mp4", OutputFormat.SRT, - "C:\\a\\b\\c-translate--Whisper-tiny.srt", + "C:\\a\\b\\c-translate--OpenAI Whisper-tiny.srt", marks=pytest.mark.skipif(platform.system() != "Windows", reason=""), ), ], diff --git a/tests/widgets/audio_meter_widget_test.py b/tests/widgets/audio_meter_widget_test.py index d91e5d702..62f9e142c 100644 --- a/tests/widgets/audio_meter_widget_test.py +++ b/tests/widgets/audio_meter_widget_test.py @@ -54,3 +54,30 @@ def test_fixed_height(self, qtbot: QtBot): widget = AudioMeterWidget() qtbot.add_widget(widget) assert widget.height() == 56 + + def test_update_queue_size(self, qtbot: QtBot): + widget = AudioMeterWidget() + qtbot.add_widget(widget) + widget.update_queue_size(5) + assert widget.queue_size == 5 + + def test_reset_amplitude_clears_queue_size(self, qtbot: QtBot): + widget = AudioMeterWidget() + qtbot.add_widget(widget) + widget.update_queue_size(3) + widget.reset_amplitude() + assert widget.queue_size == 0 + + def test_initial_queue_size_is_zero(self, qtbot: QtBot): + widget = AudioMeterWidget() + qtbot.add_widget(widget) + assert widget.queue_size == 0 + + def test_paint_event_does_not_raise(self, qtbot: QtBot): + widget = AudioMeterWidget() + qtbot.add_widget(widget) + widget.show() + widget.update_amplitude(0.5) + widget.update_average_amplitude(0.1) + widget.update_queue_size(2) + widget.repaint() # triggers paintEvent diff --git a/tests/widgets/conftest.py b/tests/widgets/conftest.py index 67b1ec05b..88a1cb4e4 100644 --- a/tests/widgets/conftest.py +++ b/tests/widgets/conftest.py @@ -1,20 +1,49 @@ -import gc import logging import pytest -from unittest.mock import patch +from unittest.mock import patch, MagicMock from buzz.settings.settings import Settings +@pytest.fixture(autouse=True) +def mock_amplitude_listener_stream(): + # RecordingAmplitudeListener creates a real sounddevice.InputStream that + # fires C-level callbacks from a background thread. If the Qt object is + # deleted (via deleteLater + processEvents) while the C thread is still + # active it causes a segfault or "Exception ignored from cffi callback" + # that contaminates later tests. Patch it out so no real audio hardware + # stream is created during widget tests. + mock_stream = MagicMock() + mock_stream.samplerate = 16000 + with patch("buzz.recording.sounddevice.InputStream", return_value=mock_stream): + yield + + @pytest.fixture(autouse=True) def mock_get_password(): with patch("buzz.widgets.recording_transcriber_widget.get_password", return_value=None): yield +@pytest.fixture(autouse=True) +def mock_message_box(): + # Prevent QMessageBox dialogs from blocking tests (e.g. when a background + # transcription thread emits an error after the test has already "passed") + with patch("buzz.widgets.recording_transcriber_widget.QMessageBox"): + yield + + @pytest.fixture(autouse=True) def force_gc_between_tests(): yield - gc.collect() + from PyQt6.QtCore import QCoreApplication + # Flush pending deleteLater() and queued cross-thread signals. + # We intentionally do NOT call gc.collect() here: PyQt6 signal/slot + # infrastructure can leave Python tuples with corrupted type pointers in + # CPython's cyclic-GC tracking list, causing a PyTuple_GET_SIZE assertion + # failure inside gc.collect(). Python's reference-counting handles + # non-cyclic objects; PyQt6's own lifecycle management handles Qt cycles. + for _ in range(3): + QCoreApplication.processEvents() @pytest.fixture(scope="package") diff --git a/tests/widgets/cuda_installer_widget_test.py b/tests/widgets/cuda_installer_widget_test.py new file mode 100644 index 000000000..61db84a63 --- /dev/null +++ b/tests/widgets/cuda_installer_widget_test.py @@ -0,0 +1,132 @@ +from unittest.mock import MagicMock, patch + +import pytest +from pytestqt.qtbot import QtBot + +from buzz.widgets.cuda_installer_widget import CudaInstallerDialog, _InstallWorker + + +class TestInstallWorker: + def test_calls_install_cuda_and_emits_finished(self): + worker = _InstallWorker() + finished_mock = MagicMock() + worker.signals.finished.connect(finished_mock) + + with patch("buzz.cuda_manager.install_cuda") as mock_install: + worker.run() + + mock_install.assert_called_once() + finished_mock.assert_called_once() + + def test_emits_error_on_exception(self): + worker = _InstallWorker() + error_mock = MagicMock() + worker.signals.error.connect(error_mock) + + with patch("buzz.cuda_manager.install_cuda", side_effect=RuntimeError("fail")): + worker.run() + + error_mock.assert_called_once_with("fail") + + def test_passes_progress_callback_to_install(self): + worker = _InstallWorker() + progress_mock = MagicMock() + worker.signals.progress.connect(progress_mock) + + def fake_install(progress_callback=None): + if progress_callback: + progress_callback("installing...") + + with patch("buzz.cuda_manager.install_cuda", side_effect=fake_install): + worker.run() + + progress_mock.assert_called_once_with("installing...") + + +class TestCudaInstallerDialog: + def test_dialog_creates_with_correct_title(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + assert "GPU" in dialog.windowTitle() or "Nvidia" in dialog.windowTitle() + + def test_install_button_exists(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + assert dialog.install_button is not None + assert dialog.install_button.isEnabled() + + def test_decline_button_exists(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + assert dialog.decline_button is not None + + def test_progress_bar_hidden_initially(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + assert not dialog.progress_bar.isVisible() + + def test_log_view_hidden_initially(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + assert not dialog.log_view.isVisible() + + def test_install_click_shows_progress_bar(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog.show() + + with patch("buzz.widgets.cuda_installer_widget.QThreadPool"): + dialog._on_install_clicked() + + assert dialog.progress_bar.isVisible() + assert dialog.log_view.isVisible() + assert not dialog.install_button.isEnabled() + assert not dialog.decline_button.isEnabled() + + def test_on_progress_appends_to_log(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog._on_progress("step 1") + assert "step 1" in dialog.log_view.toPlainText() + + def test_on_finished_re_enables_install_button(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog.install_button.setEnabled(False) + dialog._on_finished() + assert dialog.install_button.isEnabled() + + def test_on_finished_hides_progress_bar(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog.progress_bar.setVisible(True) + dialog._on_finished() + assert not dialog.progress_bar.isVisible() + + def test_on_finished_shows_completion_message(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog._on_finished() + assert "complete" in dialog.status_label.text().lower() or "restart" in dialog.status_label.text().lower() + + def test_on_error_shows_error_message(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog._on_error("something went wrong") + assert "something went wrong" in dialog.status_label.text() + + def test_on_error_re_enables_buttons(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog.install_button.setEnabled(False) + dialog.decline_button.setEnabled(False) + dialog._on_error("fail") + assert dialog.install_button.isEnabled() + assert dialog.decline_button.isEnabled() + + def test_on_error_hides_progress_bar(self, qtbot: QtBot): + dialog = CudaInstallerDialog() + qtbot.add_widget(dialog) + dialog.progress_bar.setVisible(True) + dialog._on_error("fail") + assert not dialog.progress_bar.isVisible() diff --git a/tests/widgets/model_type_combo_box_test.py b/tests/widgets/model_type_combo_box_test.py index 39babb63e..121a6e432 100644 --- a/tests/widgets/model_type_combo_box_test.py +++ b/tests/widgets/model_type_combo_box_test.py @@ -11,16 +11,16 @@ class TestModelTypeComboBox: [ pytest.param( [ - "Whisper", "Whisper.cpp", "Hugging Face", "Faster Whisper", + "OpenAI Whisper", "OpenAI Whisper API", # Faster Whisper is not available on macOS x86_64 ] if not (platform.system() == "Darwin" and platform.machine() == "x86_64") else [ - "Whisper", "Whisper.cpp", "Hugging Face", + "OpenAI Whisper", "OpenAI Whisper API", ], ), diff --git a/uv.lock b/uv.lock index 6ebef32f6..116a7a14b 100644 --- a/uv.lock +++ b/uv.lock @@ -19,7 +19,7 @@ overrides = [ [[package]] name = "absl-py" version = "2.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/10/2a/c93173ffa1b39c1d0395b7e842bbdc62e556ca9d8d3b5572926f3e4ca752/absl_py-2.3.1.tar.gz", hash = "sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9", size = 116588, upload-time = "2025-07-03T09:31:44.05Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8f/aa/ba0014cc4659328dc818a28827be78e6d97312ab0cb98105a770924dc11e/absl_py-2.3.1-py3-none-any.whl", hash = "sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d", size = 135811, upload-time = "2025-07-03T09:31:42.253Z" }, @@ -28,7 +28,7 @@ wheels = [ [[package]] name = "accelerate" version = "1.12.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub" }, { name = "numpy" }, @@ -36,9 +36,9 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/4a/8e/ac2a9566747a93f8be36ee08532eb0160558b07630a081a6056a9f89bf1d/accelerate-1.12.0.tar.gz", hash = "sha256:70988c352feb481887077d2ab845125024b2a137a5090d6d7a32b57d03a45df6", size = 398399, upload-time = "2025-11-21T11:27:46.973Z" } wheels = [ @@ -48,7 +48,7 @@ wheels = [ [[package]] name = "aiohappyeyeballs" version = "2.6.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, @@ -57,7 +57,7 @@ wheels = [ [[package]] name = "aiohttp" version = "3.13.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, { name = "aiosignal" }, @@ -91,7 +91,7 @@ wheels = [ [[package]] name = "aiosignal" version = "1.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "frozenlist" }, { name = "typing-extensions" }, @@ -104,7 +104,7 @@ wheels = [ [[package]] name = "alembic" version = "1.17.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mako", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "sqlalchemy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -118,7 +118,7 @@ wheels = [ [[package]] name = "altgraph" version = "0.17.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", hash = "sha256:c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7", size = 48428, upload-time = "2025-11-21T20:35:50.583Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", hash = "sha256:f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597", size = 21228, upload-time = "2025-11-21T20:35:49.444Z" }, @@ -127,7 +127,7 @@ wheels = [ [[package]] name = "annotated-types" version = "0.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, @@ -136,13 +136,13 @@ wheels = [ [[package]] name = "antlr4-python3-runtime" version = "4.9.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } [[package]] name = "anyio" version = "4.12.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "typing-extensions" }, @@ -155,7 +155,7 @@ wheels = [ [[package]] name = "astroid" version = "2.15.8" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "lazy-object-proxy" }, { name = "wrapt" }, @@ -168,7 +168,7 @@ wheels = [ [[package]] name = "asttokens" version = "3.0.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, @@ -177,7 +177,7 @@ wheels = [ [[package]] name = "attrs" version = "25.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, @@ -186,7 +186,7 @@ wheels = [ [[package]] name = "audioread" version = "3.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a1/4a/874ecf9b472f998130c2b5e145dcdb9f6131e84786111489103b66772143/audioread-3.1.0.tar.gz", hash = "sha256:1c4ab2f2972764c896a8ac61ac53e261c8d29f0c6ccd652f84e18f08a4cab190", size = 20082, upload-time = "2025-10-26T19:44:13.484Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7e/16/fbe8e1e185a45042f7cd3a282def5bb8d95bb69ab9e9ef6a5368aa17e426/audioread-3.1.0-py3-none-any.whl", hash = "sha256:b30d1df6c5d3de5dcef0fb0e256f6ea17bdcf5f979408df0297d8a408e2971b4", size = 23143, upload-time = "2025-10-26T19:44:12.016Z" }, @@ -195,7 +195,7 @@ wheels = [ [[package]] name = "autopep8" version = "2.3.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycodestyle" }, ] @@ -207,7 +207,7 @@ wheels = [ [[package]] name = "av" version = "16.0.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/15/c3/fd72a0315bc6c943ced1105aaac6e0ec1be57c70d8a616bd05acaa21ffee/av-16.0.1.tar.gz", hash = "sha256:dd2ce779fa0b5f5889a6d9e00fbbbc39f58e247e52d31044272648fe16ff1dbf", size = 3904030, upload-time = "2025-10-13T12:28:51.082Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/44/78/12a11d7a44fdd8b26a65e2efa1d8a5826733c8887a989a78306ec4785956/av-16.0.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:e41a8fef85dfb2c717349f9ff74f92f9560122a9f1a94b1c6c9a8a9c9462ba71", size = 27206375, upload-time = "2025-10-13T12:25:44.423Z" }, @@ -222,7 +222,7 @@ wheels = [ [[package]] name = "backoff" version = "2.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" }, @@ -231,7 +231,7 @@ wheels = [ [[package]] name = "bitsandbytes" version = "0.47.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')", "sys_platform != 'darwin' and sys_platform != 'linux'", @@ -239,7 +239,7 @@ resolution-markers = [ ] dependencies = [ { name = "numpy", marker = "sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/aa/eb/477d6b5602f469c7305fd43eec71d890c39909f615c1d7138f6e7d226eff/bitsandbytes-0.47.0-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:2f805b76891a596025e9e13318b675d08481b9ee650d65e5d2f9d844084c6521", size = 30004641, upload-time = "2025-08-11T18:51:20.524Z" }, @@ -250,14 +250,14 @@ wheels = [ [[package]] name = "bitsandbytes" version = "0.49.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "platform_machine == 'arm64' and sys_platform == 'darwin'", ] dependencies = [ { name = "numpy", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, { name = "packaging", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/8e/96/2b825cb874477a26478df0ce8ce3550abe81af1c7bcbc47871f0619b120c/bitsandbytes-0.49.0-py3-none-macosx_14_0_arm64.whl", hash = "sha256:17d5b57e6d51b78bcfc07da0e93db061181b25bffabfafe101dd9b75c2710872", size = 129838, upload-time = "2025-12-11T20:50:39.645Z" }, @@ -266,7 +266,7 @@ wheels = [ [[package]] name = "braceexpand" version = "0.1.7" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/54/93/badd4f5ccf25209f3fef2573073da9fe4a45a3da99fca2f800f942130c0f/braceexpand-0.1.7.tar.gz", hash = "sha256:e6e539bd20eaea53547472ff94f4fb5c3d3bf9d0a89388c4b56663aba765f705", size = 7777, upload-time = "2021-05-07T13:49:07.323Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fa/93/e8c04e80e82391a6e51f218ca49720f64236bc824e92152a2633b74cf7ab/braceexpand-0.1.7-py2.py3-none-any.whl", hash = "sha256:91332d53de7828103dcae5773fb43bc34950b0c8160e35e0f44c4427a3b85014", size = 5923, upload-time = "2021-05-07T13:49:05.146Z" }, @@ -278,13 +278,13 @@ version = "1.4.5" source = { editable = "." } dependencies = [ { name = "accelerate" }, - { name = "bitsandbytes", version = "0.47.0", source = { registry = "https://pypi.org/simple/" }, marker = "sys_platform != 'darwin'" }, - { name = "bitsandbytes", version = "0.49.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, + { name = "bitsandbytes", version = "0.47.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, + { name = "bitsandbytes", version = "0.49.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, { name = "certifi" }, { name = "cmake" }, { name = "coverage" }, - { name = "ctranslate2", version = "4.3.1", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "ctranslate2", version = "4.6.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' or sys_platform != 'darwin'" }, + { name = "ctranslate2", version = "4.3.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "ctranslate2", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, { name = "darkdetect" }, { name = "dataclasses-json" }, { name = "datasets" }, @@ -327,13 +327,12 @@ dependencies = [ { name = "srt-equalizer" }, { name = "stable-ts" }, { name = "submitit" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" }, - { name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, + { name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, + { name = "torchaudio", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "torchcodec", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "tqdm" }, { name = "transformers" }, @@ -375,7 +374,6 @@ requires-dist = [ { name = "cmake", specifier = ">=4.2.0,<5" }, { name = "coverage", specifier = "==7.12.0" }, { name = "ctranslate2", marker = "sys_platform != 'darwin'", specifier = ">=4.6.2,<5" }, - { name = "ctranslate2", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = ">=4.6.2,<5" }, { name = "ctranslate2", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==4.3.1" }, { name = "darkdetect", specifier = ">=0.8.0,<0.9" }, { name = "dataclasses-json", specifier = ">=0.6.4,<0.7" }, @@ -419,16 +417,12 @@ requires-dist = [ { name = "srt-equalizer", specifier = ">=0.1.10,<0.2" }, { name = "stable-ts", specifier = ">=2.19.1,<3" }, { name = "submitit", specifier = ">=1.5.2,<2" }, - { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.8.0", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torch", marker = "sys_platform != 'darwin'", specifier = ">=2.2.2", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torch", marker = "sys_platform == 'darwin'", specifier = ">=2.2.2", index = "https://pypi.org/simple/" }, - { name = "torch", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==2.8.0", index = "https://pypi.org/simple/" }, - { name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==2.2.2", index = "https://pypi.org/simple/" }, - { name = "torchaudio", marker = "sys_platform != 'darwin'", specifier = "==2.8.0", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torchaudio", marker = "sys_platform != 'darwin'", specifier = ">=2.2.2", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torchaudio", marker = "sys_platform == 'darwin'", specifier = ">=2.2.2", index = "https://pypi.org/simple/" }, - { name = "torchaudio", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==2.8.0", index = "https://pypi.org/simple/" }, - { name = "torchaudio", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==2.2.2", index = "https://pypi.org/simple/" }, + { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.8.0+cpu", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torch", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==2.8.0" }, + { name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==2.2.2" }, + { name = "torchaudio", marker = "sys_platform != 'darwin'", specifier = "==2.8.0+cpu", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torchaudio", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==2.8.0" }, + { name = "torchaudio", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==2.2.2" }, { name = "torchcodec", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'", specifier = ">=0.9.0" }, { name = "tqdm", specifier = ">=4.67.1,<5" }, { name = "transformers", specifier = ">=4.53,<5" }, @@ -465,7 +459,7 @@ dev = [ [[package]] name = "certifi" version = "2026.4.22" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, @@ -474,7 +468,7 @@ wheels = [ [[package]] name = "cffi" version = "2.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] @@ -497,7 +491,7 @@ wheels = [ [[package]] name = "cfgv" version = "3.5.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" }, @@ -506,7 +500,7 @@ wheels = [ [[package]] name = "charset-normalizer" version = "3.4.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, @@ -531,7 +525,7 @@ wheels = [ [[package]] name = "click" version = "8.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] @@ -543,7 +537,7 @@ wheels = [ [[package]] name = "cloudpickle" version = "3.1.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414", size = 22330, upload-time = "2025-11-03T09:25:26.604Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a", size = 22228, upload-time = "2025-11-03T09:25:25.534Z" }, @@ -552,7 +546,7 @@ wheels = [ [[package]] name = "cmake" version = "4.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e2/bb/1f5fa918267ecf3b24158efa53d71193ecacfa93d0e86264e46239ae7abb/cmake-4.2.0.tar.gz", hash = "sha256:7744c20e4a23e68dea276d819767d2bdbb45442cc342560b03ff693b755cd181", size = 37433, upload-time = "2025-11-21T15:06:31.914Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b1/3f/8c6419e6cde2dec09701f8542abb1b6cedabc9e5290ac9c896cec2c12dd0/cmake-4.2.0-py3-none-macosx_10_10_universal2.whl", hash = "sha256:28595ec42fb6f81128b7a9bdbdfcb7b785ad197dbfb1b785cec5727a97a521f4", size = 51571817, upload-time = "2025-11-21T15:05:35.639Z" }, @@ -578,15 +572,16 @@ wheels = [ [[package]] name = "colorama" version = "0.4.6" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://download.pytorch.org/whl/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", upload-time = "2023-10-05T23:50:34Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "coloredlogs" version = "15.0.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "humanfriendly" }, ] @@ -598,7 +593,7 @@ wheels = [ [[package]] name = "colorlog" version = "6.10.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] @@ -610,7 +605,7 @@ wheels = [ [[package]] name = "contourpy" version = "1.3.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -632,7 +627,7 @@ wheels = [ [[package]] name = "coverage" version = "7.12.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/89/26/4a96807b193b011588099c3b5c89fbb05294e5b90e71018e065465f34eb6/coverage-7.12.0.tar.gz", hash = "sha256:fc11e0a4e372cb5f282f16ef90d4a585034050ccda536451901abfb19a57f40c", size = 819341, upload-time = "2025-11-18T13:34:20.766Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/02/bf/638c0427c0f0d47638242e2438127f3c8ee3cfc06c7fdeb16778ed47f836/coverage-7.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:29644c928772c78512b48e14156b81255000dcfd4817574ff69def189bcb3647", size = 217704, upload-time = "2025-11-18T13:32:28.906Z" }, @@ -654,7 +649,7 @@ wheels = [ [[package]] name = "cryptography" version = "46.0.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'linux'" }, ] @@ -687,7 +682,7 @@ wheels = [ [[package]] name = "ctc-segmentation" version = "1.7.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cython", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -698,7 +693,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/f4/ed/78dd82e0b022ed4cb [[package]] name = "ctranslate2" version = "4.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "platform_machine == 'x86_64' and sys_platform == 'darwin'", ] @@ -714,7 +709,7 @@ wheels = [ [[package]] name = "ctranslate2" version = "4.6.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')", "sys_platform != 'darwin' and sys_platform != 'linux'", @@ -738,7 +733,7 @@ wheels = [ [[package]] name = "cycler" version = "0.12.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, @@ -747,7 +742,7 @@ wheels = [ [[package]] name = "cython" version = "3.2.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/29/17/55fc687ba986f2210298fa2f60fec265fa3004c3f9a1e958ea1fe2d4e061/cython-3.2.2.tar.gz", hash = "sha256:c3add3d483acc73129a61d105389344d792c17e7c1cee24863f16416bd071634", size = 3275797, upload-time = "2025-11-30T12:48:20.942Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/57/0f/6fd78dc581373722bb9dedfc90c35b59ba88af988756315af227a877c7a2/cython-3.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:692a41c8fe06fb2dc55ca2c8d71c80c469fd16fe69486ed99f3b3cbb2d3af83f", size = 2968037, upload-time = "2025-11-30T12:48:47.279Z" }, @@ -769,7 +764,7 @@ wheels = [ [[package]] name = "cytoolz" version = "1.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "toolz" }, ] @@ -800,7 +795,7 @@ wheels = [ [[package]] name = "darkdetect" version = "0.8.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/45/77/7575be73bf12dee231d0c6e60ce7fb7a7be4fcd58823374fc59a6e48262e/darkdetect-0.8.0.tar.gz", hash = "sha256:b5428e1170263eb5dea44c25dc3895edd75e6f52300986353cd63533fe7df8b1", size = 7681, upload-time = "2022-12-16T14:14:42.113Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f2/f2/728f041460f1b9739b85ee23b45fa5a505962ea11fd85bdbe2a02b021373/darkdetect-0.8.0-py3-none-any.whl", hash = "sha256:a7509ccf517eaad92b31c214f593dbcf138ea8a43b2935406bbd565e15527a85", size = 8955, upload-time = "2022-12-16T14:14:40.92Z" }, @@ -809,7 +804,7 @@ wheels = [ [[package]] name = "dataclasses-json" version = "0.6.7" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "marshmallow" }, { name = "typing-inspect" }, @@ -822,7 +817,7 @@ wheels = [ [[package]] name = "datasets" version = "4.4.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "dill" }, { name = "filelock" }, @@ -847,7 +842,7 @@ wheels = [ [[package]] name = "decorator" version = "5.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, @@ -856,20 +851,20 @@ wheels = [ [[package]] name = "diffq" version = "0.2.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cython" }, { name = "numpy" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/5a/fd/4c58807bf855c5929ffa6da55f26dd6b9ae462a4193f5e09cc49fbbfd451/diffq-0.2.4.tar.gz", hash = "sha256:049064861e974ebf00d0badab8b324c775037371419eda3150985b9d477b5bd2", size = 157139, upload-time = "2023-05-05T12:39:43.089Z" } [[package]] name = "dill" version = "0.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/12/80/630b4b88364e9a8c8c5797f4602d0f76ef820909ee32f0bacb9f90654042/dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0", size = 186976, upload-time = "2025-04-16T00:41:48.867Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668, upload-time = "2025-04-16T00:41:47.671Z" }, @@ -878,7 +873,7 @@ wheels = [ [[package]] name = "distlib" version = "0.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, @@ -887,7 +882,7 @@ wheels = [ [[package]] name = "distro" version = "1.9.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, @@ -896,20 +891,20 @@ wheels = [ [[package]] name = "docopt" version = "0.6.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } [[package]] name = "dora-search" version = "0.1.12" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "omegaconf" }, { name = "retrying" }, { name = "submitit" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "treetable" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d5/9d/9a13947db237375486c0690f4741dd2b7e1eee20e0ffcb55dbd1b21cc600/dora_search-0.1.12.tar.gz", hash = "sha256:2956fd2c4c7e4b9a4830e83f0d4cf961be45cfba1a2f0570281e91d15ac516fb", size = 87111, upload-time = "2023-05-23T14:36:24.743Z" } @@ -917,7 +912,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d5/9d/9a13947db23737548 [[package]] name = "editdistance" version = "0.8.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d5/18/9f4f975ca87a390832b1c22478f3702fcdf739f83211e24d054b7551270d/editdistance-0.8.1.tar.gz", hash = "sha256:d1cdf80a5d5014b0c9126a69a42ce55a457b457f6986ff69ca98e4fe4d2d8fed", size = 50006, upload-time = "2024-02-10T07:44:53.914Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cb/4c/7f195588949b4e72436dc7fc902632381f96e586af829685b56daebb38b8/editdistance-0.8.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04af61b3fcdd287a07c15b6ae3b02af01c5e3e9c3aca76b8c1d13bd266b6f57", size = 106723, upload-time = "2024-02-10T07:43:50.268Z" }, @@ -936,7 +931,7 @@ wheels = [ [[package]] name = "einops" version = "0.8.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e5/81/df4fbe24dff8ba3934af99044188e20a98ed441ad17a274539b74e82e126/einops-0.8.1.tar.gz", hash = "sha256:de5d960a7a761225532e0f1959e5315ebeafc0cd43394732f103ca44b9837e84", size = 54805, upload-time = "2025-02-09T03:17:00.434Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/87/62/9773de14fe6c45c23649e98b83231fffd7b9892b6cf863251dc2afa73643/einops-0.8.1-py3-none-any.whl", hash = "sha256:919387eb55330f5757c6bea9165c5ff5cfe63a642682ea788a6d472576d81737", size = 64359, upload-time = "2025-02-09T03:17:01.998Z" }, @@ -945,7 +940,7 @@ wheels = [ [[package]] name = "executing" version = "2.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, @@ -954,11 +949,11 @@ wheels = [ [[package]] name = "faster-whisper" version = "1.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "av" }, - { name = "ctranslate2", version = "4.3.1", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "ctranslate2", version = "4.6.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, + { name = "ctranslate2", version = "4.3.1", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "ctranslate2", version = "4.6.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "huggingface-hub" }, { name = "onnxruntime" }, { name = "tokenizers" }, @@ -971,7 +966,7 @@ wheels = [ [[package]] name = "ffmpeg-python" version = "0.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "future" }, ] @@ -983,7 +978,7 @@ wheels = [ [[package]] name = "fiddle" version = "0.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "absl-py", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "graphviz", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -998,16 +993,16 @@ wheels = [ [[package]] name = "filelock" version = "3.20.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2" }, + { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" }, ] [[package]] name = "flake8" version = "7.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mccabe" }, { name = "pycodestyle" }, @@ -1021,7 +1016,7 @@ wheels = [ [[package]] name = "flatbuffers" version = "25.9.23" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/9d/1f/3ee70b0a55137442038f2a33469cc5fddd7e0ad2abf83d7497c18a2b6923/flatbuffers-25.9.23.tar.gz", hash = "sha256:676f9fa62750bb50cf531b42a0a2a118ad8f7f797a511eda12881c016f093b12", size = 22067, upload-time = "2025-09-24T05:25:30.106Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ee/1b/00a78aa2e8fbd63f9af08c9c19e6deb3d5d66b4dda677a0f61654680ee89/flatbuffers-25.9.23-py2.py3-none-any.whl", hash = "sha256:255538574d6cb6d0a79a17ec8bc0d30985913b87513a01cce8bcdb6b4c44d0e2", size = 30869, upload-time = "2025-09-24T05:25:28.912Z" }, @@ -1030,7 +1025,7 @@ wheels = [ [[package]] name = "fonttools" version = "4.61.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/33/f9/0e84d593c0e12244150280a630999835a64f2852276161b62a0f98318de0/fonttools-4.61.0.tar.gz", hash = "sha256:ec520a1f0c7758d7a858a00f090c1745f6cde6a7c5e76fb70ea4044a15f712e7", size = 3561884, upload-time = "2025-11-28T17:05:49.491Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/00/5d/19e5939f773c7cb05480fe2e881d63870b63ee2b4bdb9a77d55b1d36c7b9/fonttools-4.61.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e24a1565c4e57111ec7f4915f8981ecbb61adf66a55f378fdc00e206059fcfef", size = 2846930, upload-time = "2025-11-28T17:04:46.639Z" }, @@ -1047,7 +1042,7 @@ wheels = [ [[package]] name = "frozenlist" version = "1.8.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, @@ -1072,10 +1067,10 @@ wheels = [ [[package]] name = "fsspec" version = "2024.12.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/11/de70dee31455c546fbc88301971ec03c328f3d1138cfba14263f651e9551/fsspec-2024.12.0.tar.gz", hash = "sha256:670700c977ed2fb51e0d9f9253177ed20cbde4a3e5c0283cc5385b5870c8533f" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/11/de70dee31455c546fbc88301971ec03c328f3d1138cfba14263f651e9551/fsspec-2024.12.0.tar.gz", hash = "sha256:670700c977ed2fb51e0d9f9253177ed20cbde4a3e5c0283cc5385b5870c8533f", size = 291600, upload-time = "2024-12-19T19:57:30.333Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/86/5486b0188d08aa643e127774a99bac51ffa6cf343e3deb0583956dca5b22/fsspec-2024.12.0-py3-none-any.whl", hash = "sha256:b520aed47ad9804237ff878b504267a3b0b441e97508bd6d2d8774e3db85cee2" }, + { url = "https://files.pythonhosted.org/packages/de/86/5486b0188d08aa643e127774a99bac51ffa6cf343e3deb0583956dca5b22/fsspec-2024.12.0-py3-none-any.whl", hash = "sha256:b520aed47ad9804237ff878b504267a3b0b441e97508bd6d2d8774e3db85cee2", size = 183862, upload-time = "2024-12-19T19:57:28.258Z" }, ] [package.optional-dependencies] @@ -1086,7 +1081,7 @@ http = [ [[package]] name = "future" version = "1.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a7/b2/4140c69c6a66432916b26158687e821ba631a4c9273c474343badf84d3ba/future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05", size = 1228490, upload-time = "2024-02-21T11:52:38.461Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216", size = 491326, upload-time = "2024-02-21T11:52:35.956Z" }, @@ -1095,7 +1090,7 @@ wheels = [ [[package]] name = "gitdb" version = "4.0.12" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1107,7 +1102,7 @@ wheels = [ [[package]] name = "gitpython" version = "3.1.45" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1119,7 +1114,7 @@ wheels = [ [[package]] name = "graphviz" version = "0.21" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f8/b3/3ac91e9be6b761a4b30d66ff165e54439dcd48b83f4e20d644867215f6ca/graphviz-0.21.tar.gz", hash = "sha256:20743e7183be82aaaa8ad6c93f8893c923bd6658a04c32ee115edb3c8a835f78", size = 200434, upload-time = "2025-06-15T09:35:05.824Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/91/4c/e0ce1ef95d4000ebc1c11801f9b944fa5910ecc15b5e351865763d8657f8/graphviz-0.21-py3-none-any.whl", hash = "sha256:54f33de9f4f911d7e84e4191749cac8cc5653f815b06738c54db9a15ab8b1e42", size = 47300, upload-time = "2025-06-15T09:35:04.433Z" }, @@ -1128,12 +1123,13 @@ wheels = [ [[package]] name = "greenlet" version = "3.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c7/e5/40dbda2736893e3e53d25838e0f19a2b417dfc122b9989c91918db30b5d3/greenlet-3.3.0.tar.gz", hash = "sha256:a82bb225a4e9e4d653dd2fb7b8b2d36e4fb25bc0165422a11e48b88e9e6f78fb", size = 190651, upload-time = "2025-12-04T14:49:44.05Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f8/0a/a3871375c7b9727edaeeea994bfff7c63ff7804c9829c19309ba2e058807/greenlet-3.3.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:b01548f6e0b9e9784a2c99c5651e5dc89ffcbe870bc5fb2e5ef864e9cc6b5dcb", size = 276379, upload-time = "2025-12-04T14:23:30.498Z" }, { url = "https://files.pythonhosted.org/packages/43/ab/7ebfe34dce8b87be0d11dae91acbf76f7b8246bf9d6b319c741f99fa59c6/greenlet-3.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:349345b770dc88f81506c6861d22a6ccd422207829d2c854ae2af8025af303e3", size = 597294, upload-time = "2025-12-04T14:50:06.847Z" }, { url = "https://files.pythonhosted.org/packages/a4/39/f1c8da50024feecd0793dbd5e08f526809b8ab5609224a2da40aad3a7641/greenlet-3.3.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e8e18ed6995e9e2c0b4ed264d2cf89260ab3ac7e13555b8032b25a74c6d18655", size = 607742, upload-time = "2025-12-04T14:57:42.349Z" }, + { url = "https://files.pythonhosted.org/packages/77/cb/43692bcd5f7a0da6ec0ec6d58ee7cddb606d055ce94a62ac9b1aa481e969/greenlet-3.3.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c024b1e5696626890038e34f76140ed1daf858e37496d33f2af57f06189e70d7", size = 622297, upload-time = "2025-12-04T15:07:13.552Z" }, { url = "https://files.pythonhosted.org/packages/75/b0/6bde0b1011a60782108c01de5913c588cf51a839174538d266de15e4bf4d/greenlet-3.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:047ab3df20ede6a57c35c14bf5200fcf04039d50f908270d3f9a7a82064f543b", size = 609885, upload-time = "2025-12-04T14:26:02.368Z" }, { url = "https://files.pythonhosted.org/packages/49/0e/49b46ac39f931f59f987b7cd9f34bfec8ef81d2a1e6e00682f55be5de9f4/greenlet-3.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2d9ad37fc657b1102ec880e637cccf20191581f75c64087a549e66c57e1ceb53", size = 1567424, upload-time = "2025-12-04T15:04:23.757Z" }, { url = "https://files.pythonhosted.org/packages/05/f5/49a9ac2dff7f10091935def9165c90236d8f175afb27cbed38fb1d61ab6b/greenlet-3.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:83cd0e36932e0e7f36a64b732a6f60c2fc2df28c351bae79fbaf4f8092fe7614", size = 1636017, upload-time = "2025-12-04T14:27:29.688Z" }, @@ -1143,7 +1139,7 @@ wheels = [ [[package]] name = "grpcio" version = "1.76.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1164,7 +1160,7 @@ wheels = [ [[package]] name = "h11" version = "0.16.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, @@ -1173,7 +1169,7 @@ wheels = [ [[package]] name = "hatchling" version = "1.28.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, { name = "pathspec" }, @@ -1188,7 +1184,7 @@ wheels = [ [[package]] name = "hf-xet" version = "1.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5e/6e/0f11bacf08a67f7fb5ee09740f2ca54163863b07b70d579356e9222ce5d8/hf_xet-1.2.0.tar.gz", hash = "sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f", size = 506020, upload-time = "2025-10-24T19:04:32.129Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/96/2d/22338486473df5923a9ab7107d375dbef9173c338ebef5098ef593d2b560/hf_xet-1.2.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848", size = 2866099, upload-time = "2025-10-24T19:04:15.366Z" }, @@ -1203,7 +1199,7 @@ wheels = [ [[package]] name = "httpcore" version = "1.0.9" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "h11" }, @@ -1216,7 +1212,7 @@ wheels = [ [[package]] name = "httpx" version = "0.28.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "certifi" }, @@ -1231,7 +1227,7 @@ wheels = [ [[package]] name = "huggingface-hub" version = "0.36.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, { name = "fsspec" }, @@ -1250,7 +1246,7 @@ wheels = [ [[package]] name = "humanfriendly" version = "10.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyreadline3", marker = "sys_platform == 'win32'" }, ] @@ -1262,7 +1258,7 @@ wheels = [ [[package]] name = "humanize" version = "4.14.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b6/43/50033d25ad96a7f3845f40999b4778f753c3901a11808a584fed7c00d9f5/humanize-4.14.0.tar.gz", hash = "sha256:2fa092705ea640d605c435b1ca82b2866a1b601cdf96f076d70b79a855eba90d", size = 82939, upload-time = "2025-10-15T13:04:51.214Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c3/5b/9512c5fb6c8218332b530f13500c6ff5f3ce3342f35e0dd7be9ac3856fd3/humanize-4.14.0-py3-none-any.whl", hash = "sha256:d57701248d040ad456092820e6fde56c930f17749956ac47f4f655c0c547bfff", size = 132092, upload-time = "2025-10-15T13:04:49.404Z" }, @@ -1271,7 +1267,7 @@ wheels = [ [[package]] name = "hydra-colorlog" version = "1.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorlog" }, { name = "hydra-core" }, @@ -1284,7 +1280,7 @@ wheels = [ [[package]] name = "hydra-core" version = "1.3.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "antlr4-python3-runtime" }, { name = "omegaconf" }, @@ -1298,7 +1294,7 @@ wheels = [ [[package]] name = "identify" version = "2.6.15" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ff/e7/685de97986c916a6d93b3876139e00eef26ad5bbbd61925d670ae8013449/identify-2.6.15.tar.gz", hash = "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf", size = 99311, upload-time = "2025-10-02T17:43:40.631Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl", hash = "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757", size = 99183, upload-time = "2025-10-02T17:43:39.137Z" }, @@ -1307,7 +1303,7 @@ wheels = [ [[package]] name = "idna" version = "3.11" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, @@ -1316,7 +1312,7 @@ wheels = [ [[package]] name = "indic-numtowords" version = "1.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/aa/46/683e92580d9c1752917d2f9ec2a44d2adc21cdfe4deeaa0fe87fc23dbea8/indic_numtowords-1.1.0.tar.gz", hash = "sha256:d1addc21444c332e05bfd8726af427960c096c2a16776d98bee4fbc36ade5d25", size = 44220, upload-time = "2025-08-18T12:24:13.075Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1e/16/b2b6491d95a15bda712163b4e27428f2cb1ac3a1b4fb59b140dbc76f6ce5/indic_numtowords-1.1.0-py3-none-any.whl", hash = "sha256:bf4b7b9e539323d9b00bc868caa2d9369170b8f3ac4d19619bf9c6cdc6f89572", size = 71635, upload-time = "2025-08-18T12:24:11.065Z" }, @@ -1325,7 +1321,7 @@ wheels = [ [[package]] name = "inflect" version = "7.5.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "typeguard", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1338,7 +1334,7 @@ wheels = [ [[package]] name = "iniconfig" version = "2.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, @@ -1347,7 +1343,7 @@ wheels = [ [[package]] name = "intervaltree" version = "3.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "sortedcontainers" }, ] @@ -1356,7 +1352,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/50/fb/396d568039d213446 [[package]] name = "ipython" version = "9.8.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "decorator", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1377,7 +1373,7 @@ wheels = [ [[package]] name = "ipython-pygments-lexers" version = "1.1.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1389,7 +1385,7 @@ wheels = [ [[package]] name = "isort" version = "5.13.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/87/f9/c1eb8635a24e87ade2efce21e3ce8cd6b8630bb685ddc9cdaca1349b2eb5/isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", size = 175303, upload-time = "2023-12-13T20:37:26.124Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d1/b3/8def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c/isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6", size = 92310, upload-time = "2023-12-13T20:37:23.244Z" }, @@ -1398,7 +1394,7 @@ wheels = [ [[package]] name = "jaraco-classes" version = "3.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] @@ -1410,7 +1406,7 @@ wheels = [ [[package]] name = "jaraco-context" version = "6.0.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", size = 13912, upload-time = "2024-08-20T03:39:27.358Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", size = 6825, upload-time = "2024-08-20T03:39:25.966Z" }, @@ -1419,7 +1415,7 @@ wheels = [ [[package]] name = "jaraco-functools" version = "4.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] @@ -1431,7 +1427,7 @@ wheels = [ [[package]] name = "jedi" version = "0.19.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1443,7 +1439,7 @@ wheels = [ [[package]] name = "jeepney" version = "0.9.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7b/6f/357efd7602486741aa73ffc0617fb310a29b588ed0fd69c2399acbb85b0c/jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732", size = 106758, upload-time = "2025-02-27T18:51:01.684Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload-time = "2025-02-27T18:51:00.104Z" }, @@ -1452,18 +1448,19 @@ wheels = [ [[package]] name = "jinja2" version = "3.1.6" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://download.pytorch.org/whl/jinja2-3.1.6-py3-none-any.whl", upload-time = "2025-10-14T18:38:59Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "jiter" version = "0.12.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/45/9d/e0660989c1370e25848bb4c52d061c71837239738ad937e83edca174c273/jiter-0.12.0.tar.gz", hash = "sha256:64dfcd7d5c168b38d3f9f8bba7fc639edb3418abcc74f22fdbe6b8938293f30b", size = 168294, upload-time = "2025-11-09T20:49:23.302Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/92/c9/5b9f7b4983f1b542c64e84165075335e8a236fa9e2ea03a0c79780062be8/jiter-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:305e061fa82f4680607a775b2e8e0bcb071cd2205ac38e6ef48c8dd5ebe1cf37", size = 314449, upload-time = "2025-11-09T20:47:22.999Z" }, @@ -1488,7 +1485,7 @@ wheels = [ [[package]] name = "jiwer" version = "3.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "rapidfuzz", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1501,7 +1498,7 @@ wheels = [ [[package]] name = "joblib" version = "1.5.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload-time = "2025-08-27T12:15:46.575Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload-time = "2025-08-27T12:15:45.188Z" }, @@ -1510,7 +1507,7 @@ wheels = [ [[package]] name = "jsonschema" version = "4.25.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "jsonschema-specifications" }, @@ -1525,7 +1522,7 @@ wheels = [ [[package]] name = "jsonschema-specifications" version = "2025.9.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] @@ -1537,18 +1534,18 @@ wheels = [ [[package]] name = "julius" version = "0.2.7" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a1/19/c9e1596b5572c786b93428d0904280e964c930fae7e6c9368ed9e1b63922/julius-0.2.7.tar.gz", hash = "sha256:3c0f5f5306d7d6016fcc95196b274cae6f07e2c9596eed314e4e7641554fbb08", size = 59640, upload-time = "2022-09-19T16:13:34.2Z" } [[package]] name = "kaldi-python-io" version = "1.2.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1557,7 +1554,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/80/45/e3e542ffa8970ebd7 [[package]] name = "keyring" version = "25.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jaraco-classes" }, { name = "jaraco-context" }, @@ -1574,7 +1571,7 @@ wheels = [ [[package]] name = "kiwisolver" version = "1.4.9" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, @@ -1595,7 +1592,7 @@ wheels = [ [[package]] name = "lameenc" version = "1.8.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/e4/87/25e9619de89b64e9c66c5205a8de15671ee0e129b2e045c23c1f98fd9ec6/lameenc-1.8.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ef7d7ccad32f5febd812fb078fe63e46b4ec411d2ef612a79fd0391ef9f65b35", size = 193831, upload-time = "2025-01-01T22:08:42.652Z" }, { url = "https://files.pythonhosted.org/packages/0b/43/d17cd461a1bdc29661739350f04c0a7e12b11241a975662b8c6578d27f82/lameenc-1.8.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c980a676314d3c344f080be8ef05c98d60d201da6a492c3658c6bf5a733a1e11", size = 182214, upload-time = "2025-01-01T22:19:40.067Z" }, @@ -1608,7 +1605,7 @@ wheels = [ [[package]] name = "lazy-loader" version = "0.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1620,7 +1617,7 @@ wheels = [ [[package]] name = "lazy-object-proxy" version = "1.12.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/08/a2/69df9c6ba6d316cfd81fe2381e464db3e6de5db45f8c43c6a23504abf8cb/lazy_object_proxy-1.12.0.tar.gz", hash = "sha256:1f5a462d92fd0cfb82f1fab28b51bfb209fabbe6aabf7f0d51472c0c124c0c61", size = 43681, upload-time = "2025-08-22T13:50:06.783Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/0d/1b/b5f5bd6bda26f1e15cd3232b223892e4498e34ec70a7f4f11c401ac969f1/lazy_object_proxy-1.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ee0d6027b760a11cc18281e702c0309dd92da458a74b4c15025d7fc490deede", size = 26746, upload-time = "2025-08-22T13:42:37.572Z" }, @@ -1634,7 +1631,7 @@ wheels = [ [[package]] name = "levenshtein" version = "0.27.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "rapidfuzz", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1656,7 +1653,7 @@ wheels = [ [[package]] name = "lhotse" version = "1.32.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "audioread" }, { name = "click" }, @@ -1668,9 +1665,9 @@ dependencies = [ { name = "pyyaml" }, { name = "soundfile" }, { name = "tabulate" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2e/fd/32baf46d238f029a22b2c1762fc717ebdb85515fb48bafa395d3de5da0f5/lhotse-1.32.1.tar.gz", hash = "sha256:8b0e946d1bd2c695b09df831ea612913f1a1f103b1aea36a4b43a8778be0a3d5", size = 674412, upload-time = "2025-11-24T16:42:25.511Z" } @@ -1681,7 +1678,7 @@ wheels = [ [[package]] name = "libcst" version = "1.8.6" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1700,7 +1697,7 @@ wheels = [ [[package]] name = "librosa" version = "0.11.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "audioread", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "decorator", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1724,7 +1721,7 @@ wheels = [ [[package]] name = "librt" version = "0.7.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b3/d9/6f3d3fcf5e5543ed8a60cc70fa7d50508ed60b8a10e9af6d2058159ab54e/librt-0.7.3.tar.gz", hash = "sha256:3ec50cf65235ff5c02c5b747748d9222e564ad48597122a361269dd3aa808798", size = 144549, upload-time = "2025-12-06T19:04:45.553Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/29/90/ed8595fa4e35b6020317b5ea8d226a782dcbac7a997c19ae89fb07a41c66/librt-0.7.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0fa9ac2e49a6bee56e47573a6786cb635e128a7b12a0dc7851090037c0d397a3", size = 55687, upload-time = "2025-12-06T19:03:39.245Z" }, @@ -1743,15 +1740,15 @@ wheels = [ [[package]] name = "lightning" version = "2.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec", extra = ["http"], marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "lightning-utilities", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "pytorch-lightning", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "torchmetrics", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1764,7 +1761,7 @@ wheels = [ [[package]] name = "lightning-utilities" version = "0.15.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "setuptools", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1778,7 +1775,7 @@ wheels = [ [[package]] name = "lilcom" version = "1.8.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] @@ -1794,7 +1791,7 @@ wheels = [ [[package]] name = "llvmlite" version = "0.45.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/99/8d/5baf1cef7f9c084fb35a8afbde88074f0d6a727bc63ef764fe0e7543ba40/llvmlite-0.45.1.tar.gz", hash = "sha256:09430bb9d0bb58fc45a45a57c7eae912850bedc095cd0810a57de109c69e1c32", size = 185600, upload-time = "2025-10-01T17:59:52.046Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e2/7c/82cbd5c656e8991bcc110c69d05913be2229302a92acb96109e166ae31fb/llvmlite-0.45.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:28e763aba92fe9c72296911e040231d486447c01d4f90027c8e893d89d49b20e", size = 43043524, upload-time = "2025-10-01T18:03:30.666Z" }, @@ -1807,7 +1804,7 @@ wheels = [ [[package]] name = "loguru" version = "0.7.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "win32-setctime", marker = "sys_platform == 'win32'" }, @@ -1820,7 +1817,7 @@ wheels = [ [[package]] name = "macholib" version = "1.16.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "altgraph", marker = "sys_platform == 'darwin'" }, ] @@ -1832,7 +1829,7 @@ wheels = [ [[package]] name = "mako" version = "1.3.10" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1844,7 +1841,7 @@ wheels = [ [[package]] name = "markdown" version = "3.10" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7d/ab/7dd27d9d863b3376fcf23a5a13cb5d024aed1db46f963f1b5735ae43b3be/markdown-3.10.tar.gz", hash = "sha256:37062d4f2aa4b2b6b32aefb80faa300f82cc790cb949a35b8caede34f2b68c0e", size = 364931, upload-time = "2025-11-03T19:51:15.007Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl", hash = "sha256:b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c", size = 107678, upload-time = "2025-11-03T19:51:13.887Z" }, @@ -1853,7 +1850,7 @@ wheels = [ [[package]] name = "markdown-it-py" version = "4.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1865,20 +1862,25 @@ wheels = [ [[package]] name = "markupsafe" version = "3.0.2" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } wheels = [ - { url = "https://download.pytorch.org/whl/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", upload-time = "2026-02-19T22:23:09Z" }, - { url = "https://download.pytorch.org/whl/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", upload-time = "2026-02-19T22:23:09Z" }, - { url = "https://download.pytorch.org/whl/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", upload-time = "2026-02-19T22:23:09Z" }, - { url = "https://download.pytorch.org/whl/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", upload-time = "2026-02-19T22:23:11Z" }, - { url = "https://download.pytorch.org/whl/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", upload-time = "2026-02-19T22:23:11Z" }, - { url = "https://download.pytorch.org/whl/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", upload-time = "2026-02-19T22:23:11Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, ] [[package]] name = "marshmallow" version = "3.26.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] @@ -1890,7 +1892,7 @@ wheels = [ [[package]] name = "matplotlib" version = "3.10.7" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "contourpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "cycler", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1916,7 +1918,7 @@ wheels = [ [[package]] name = "matplotlib-inline" version = "0.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -1928,7 +1930,7 @@ wheels = [ [[package]] name = "mccabe" version = "0.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, @@ -1937,7 +1939,7 @@ wheels = [ [[package]] name = "mdurl" version = "0.1.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, @@ -1946,7 +1948,7 @@ wheels = [ [[package]] name = "mediapy" version = "1.1.6" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ipython", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "matplotlib", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -1961,7 +1963,7 @@ wheels = [ [[package]] name = "ml-dtypes" version = "0.5.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] @@ -1977,7 +1979,7 @@ wheels = [ [[package]] name = "monotonic" version = "1.6" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ea/ca/8e91948b782ddfbd194f323e7e7d9ba12e5877addf04fb2bf8fca38e86ac/monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7", size = 7615, upload-time = "2021-08-11T14:37:28.79Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9a/67/7e8406a29b6c45be7af7740456f7f37025f0506ae2e05fb9009a53946860/monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c", size = 8154, upload-time = "2021-04-09T21:58:05.122Z" }, @@ -1986,7 +1988,7 @@ wheels = [ [[package]] name = "more-itertools" version = "10.8.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" }, @@ -1995,16 +1997,16 @@ wheels = [ [[package]] name = "mpmath" version = "1.3.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c" }, + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, ] [[package]] name = "msgpack" version = "1.1.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4d/f2/bfb55a6236ed8725a96b0aa3acbd0ec17588e6a2c3b62a93eb513ed8783f/msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e", size = 173581, upload-time = "2025-10-08T09:15:56.596Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ad/bd/8b0d01c756203fbab65d265859749860682ccd2a59594609aeec3a144efa/msgpack-1.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:70a0dff9d1f8da25179ffcf880e10cf1aad55fdb63cd59c9a49a1b82290062aa", size = 81939, upload-time = "2025-10-08T09:15:01.472Z" }, @@ -2021,7 +2023,7 @@ wheels = [ [[package]] name = "multidict" version = "6.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/80/1e/5492c365f222f907de1039b91f922b93fa4f764c713ee858d235495d8f50/multidict-6.7.0.tar.gz", hash = "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5", size = 101834, upload-time = "2025-10-06T14:52:30.657Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c2/9e/9f61ac18d9c8b475889f32ccfa91c9f59363480613fc807b6e3023d6f60b/multidict-6.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184", size = 76877, upload-time = "2025-10-06T14:49:20.884Z" }, @@ -2048,7 +2050,7 @@ wheels = [ [[package]] name = "multiprocess" version = "0.70.18" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "dill" }, ] @@ -2064,7 +2066,7 @@ wheels = [ [[package]] name = "musdb" version = "0.4.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "pyaml" }, @@ -2079,7 +2081,7 @@ wheels = [ [[package]] name = "museval" version = "0.4.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema" }, { name = "musdb" }, @@ -2097,7 +2099,7 @@ wheels = [ [[package]] name = "mypy" version = "1.19.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "librt" }, { name = "mypy-extensions" }, @@ -2118,7 +2120,7 @@ wheels = [ [[package]] name = "mypy-extensions" version = "1.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, @@ -2127,7 +2129,7 @@ wheels = [ [[package]] name = "nemo-toolkit" version = "2.5.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "huggingface-hub", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2141,8 +2143,8 @@ dependencies = [ { name = "setuptools", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "tensorboard", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "text-unidecode", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "wget", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "wrapt", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2154,8 +2156,8 @@ wheels = [ [package.optional-dependencies] asr = [ - { name = "bitsandbytes", version = "0.47.0", source = { registry = "https://pypi.org/simple/" }, marker = "sys_platform != 'darwin'" }, - { name = "bitsandbytes", version = "0.49.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, + { name = "bitsandbytes", version = "0.47.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, + { name = "bitsandbytes", version = "0.49.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" }, { name = "braceexpand", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "cloudpickle", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "ctc-segmentation", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2204,16 +2206,16 @@ asr = [ [[package]] name = "networkx" version = "3.6.1" -source = { registry = "https://download.pytorch.org/whl/cu129" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762" }, + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, ] [[package]] name = "nltk" version = "3.9.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "joblib" }, @@ -2228,7 +2230,7 @@ wheels = [ [[package]] name = "nodeenv" version = "1.9.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, @@ -2237,7 +2239,7 @@ wheels = [ [[package]] name = "num2words" version = "0.5.14" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docopt", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -2249,7 +2251,7 @@ wheels = [ [[package]] name = "numba" version = "0.62.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "llvmlite" }, { name = "numpy" }, @@ -2266,23 +2268,23 @@ wheels = [ [[package]] name = "numpy" version = "1.26.4" -source = { registry = "https://download.pytorch.org/whl/cu129" } -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129, upload-time = "2024-02-06T00:26:44.495Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218" }, - { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b" }, - { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b" }, - { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed" }, - { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a" }, - { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0" }, - { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110" }, - { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818" }, + { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901, upload-time = "2024-02-05T23:55:32.801Z" }, + { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868, upload-time = "2024-02-05T23:55:56.28Z" }, + { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109, upload-time = "2024-02-05T23:56:20.368Z" }, + { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613, upload-time = "2024-02-05T23:56:56.054Z" }, + { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172, upload-time = "2024-02-05T23:57:21.56Z" }, + { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643, upload-time = "2024-02-05T23:57:56.585Z" }, + { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803, upload-time = "2024-02-05T23:58:08.963Z" }, + { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754, upload-time = "2024-02-05T23:58:36.364Z" }, ] [[package]] name = "nv-one-logger-core" version = "2.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "overrides", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "pydantic", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2298,7 +2300,7 @@ wheels = [ [[package]] name = "nv-one-logger-pytorch-lightning-integration" version = "2.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "lightning", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "nv-one-logger-core", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2314,7 +2316,7 @@ wheels = [ [[package]] name = "nv-one-logger-training-telemetry" version = "2.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nv-one-logger-core", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "strenum", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2327,138 +2329,47 @@ wheels = [ [[package]] name = "nvidia-cublas-cu12" -version = "12.9.1.4" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cublas-cu12/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7a950dae01add3b415a5a5cdc4ec818fb5858263e9cca59004bb99fdbbd3a5d6" }, - { url = "https://pypi.nvidia.com/nvidia-cublas-cu12/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:453611eb21a7c1f2c2156ed9f3a45b691deda0440ec550860290dc901af5b4c2" }, - { url = "https://pypi.nvidia.com/nvidia-cublas-cu12/nvidia_cublas_cu12-12.9.1.4-py3-none-win_amd64.whl", hash = "sha256:1e5fee10662e6e52bd71dec533fbbd4971bb70a5f24f3bc3793e5c2e9dc640bf" }, +version = "12.8.4.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')", ] - -[[package]] -name = "nvidia-cuda-cupti-cu12" -version = "12.9.79" -source = { registry = "https://download.pytorch.org/whl/cu129" } wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f" }, + { url = "https://files.pythonhosted.org/packages/29/99/db44d685f0e257ff0e213ade1964fc459b4a690a73293220e98feb3307cf/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0", size = 590537124, upload-time = "2025-03-07T01:43:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, ] [[package]] -name = "nvidia-cuda-nvrtc-cu12" -version = "12.9.86" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4" }, +name = "nvidia-cublas-cu12" +version = "12.9.1.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform != 'darwin' and sys_platform != 'linux'", + "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'", ] - -[[package]] -name = "nvidia-cuda-runtime-cu12" -version = "12.9.79" -source = { registry = "https://download.pytorch.org/whl/cu129" } wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3" }, + { url = "https://files.pythonhosted.org/packages/82/6c/90d3f532f608a03a13c1d6c16c266ffa3828e8011b1549d3b61db2ad59f5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7a950dae01add3b415a5a5cdc4ec818fb5858263e9cca59004bb99fdbbd3a5d6", size = 575006342, upload-time = "2025-06-05T20:04:16.902Z" }, + { url = "https://files.pythonhosted.org/packages/45/a1/a17fade6567c57452cfc8f967a40d1035bb9301db52f27808167fbb2be2f/nvidia_cublas_cu12-12.9.1.4-py3-none-win_amd64.whl", hash = "sha256:1e5fee10662e6e52bd71dec533fbbd4971bb70a5f24f3bc3793e5c2e9dc640bf", size = 553153899, upload-time = "2025-06-05T20:13:35.556Z" }, ] [[package]] name = "nvidia-cudnn-cu12" version = "9.10.2.21" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas-cu12", marker = "sys_platform != 'darwin'" }, + { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, + { name = "nvidia-cublas-cu12", version = "12.9.1.4", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8" }, - { url = "https://pypi.nvidia.com/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8" }, - { url = "https://pypi.nvidia.com/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.10.2.21-py3-none-win_amd64.whl", hash = "sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e" }, -] - -[[package]] -name = "nvidia-cufft-cu12" -version = "11.4.1.4" -source = { registry = "https://download.pytorch.org/whl/cu129" } -dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, -] -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cufft-cu12/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28" }, -] - -[[package]] -name = "nvidia-cufile-cu12" -version = "1.14.1.1" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cufile-cu12/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9552e2231792e94b1ff17bc99e958cc0e6bbbaa4a9d91fa2dbeed97716628fe6" }, -] - -[[package]] -name = "nvidia-curand-cu12" -version = "10.3.10.19" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-curand-cu12/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:49b274db4780d421bd2ccd362e1415c13887c53c214f0d4b761752b8f9f6aa1e" }, -] - -[[package]] -name = "nvidia-cusolver-cu12" -version = "11.7.5.82" -source = { registry = "https://download.pytorch.org/whl/cu129" } -dependencies = [ - { name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, - { name = "nvidia-cusparse-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, - { name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, -] -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88" }, -] - -[[package]] -name = "nvidia-cusparse-cu12" -version = "12.5.10.65" -source = { registry = "https://download.pytorch.org/whl/cu129" } -dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')" }, -] -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78" }, -] - -[[package]] -name = "nvidia-cusparselt-cu12" -version = "0.7.1" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623" }, -] - -[[package]] -name = "nvidia-nccl-cu12" -version = "2.27.3" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-nccl-cu12/nvidia_nccl_cu12-2.27.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039" }, -] - -[[package]] -name = "nvidia-nvjitlink-cu12" -version = "12.9.86" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9" }, -] - -[[package]] -name = "nvidia-nvtx-cu12" -version = "12.9.79" -source = { registry = "https://download.pytorch.org/whl/cu129" } -wheels = [ - { url = "https://pypi.nvidia.com/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fec150986817f2b4e7eed72ed059f2dcb9ba3856b9a96134e448eac946a6952f" }, + { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878, upload-time = "2025-06-06T21:52:51.348Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, + { url = "https://files.pythonhosted.org/packages/3d/90/0bd6e586701b3a890fd38aa71c387dab4883d619d6e5ad912ccbd05bfd67/nvidia_cudnn_cu12-9.10.2.21-py3-none-win_amd64.whl", hash = "sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e", size = 692992268, upload-time = "2025-06-06T21:55:18.114Z" }, ] [[package]] name = "omegaconf" version = "2.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "antlr4-python3-runtime" }, { name = "pyyaml" }, @@ -2471,7 +2382,7 @@ wheels = [ [[package]] name = "onnx" version = "1.20.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ml-dtypes" }, { name = "numpy" }, @@ -2491,7 +2402,7 @@ wheels = [ [[package]] name = "onnxruntime" version = "1.18.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coloredlogs" }, { name = "flatbuffers" }, @@ -2511,7 +2422,7 @@ wheels = [ [[package]] name = "openai" version = "1.109.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "distro" }, @@ -2530,15 +2441,15 @@ wheels = [ [[package]] name = "openai-whisper" version = "20250625" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, { name = "numba" }, { name = "numpy" }, { name = "tiktoken" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, { name = "triton", marker = "(platform_machine == 'x86_64' and sys_platform == 'linux') or sys_platform == 'linux2'" }, ] @@ -2547,16 +2458,15 @@ sdist = { url = "https://files.pythonhosted.org/packages/35/8e/d36f8880bcf18ec02 [[package]] name = "openunmix" version = "1.3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" }, - { name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, + { name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torchaudio", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/42/ef/4ad54e3ecb1e89f7f7bdb4c7b751e43754e892d3c32a8550e5d0882565df/openunmix-1.3.0.tar.gz", hash = "sha256:cc9245ce728700f5d0b72c67f01be4162777e617cdc47f9b035963afac180fc8", size = 45889, upload-time = "2024-04-16T11:10:47.121Z" } @@ -2567,7 +2477,7 @@ wheels = [ [[package]] name = "optuna" version = "4.6.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "alembic", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "colorlog", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2585,7 +2495,7 @@ wheels = [ [[package]] name = "overrides" version = "7.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, @@ -2594,7 +2504,7 @@ wheels = [ [[package]] name = "packaging" version = "24.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950, upload-time = "2024-11-08T09:47:47.202Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451, upload-time = "2024-11-08T09:47:44.722Z" }, @@ -2603,7 +2513,7 @@ wheels = [ [[package]] name = "pandas" version = "2.3.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "python-dateutil" }, @@ -2624,7 +2534,7 @@ wheels = [ [[package]] name = "parso" version = "0.8.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, @@ -2633,7 +2543,7 @@ wheels = [ [[package]] name = "pathspec" version = "0.12.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, @@ -2642,7 +2552,7 @@ wheels = [ [[package]] name = "pefile" version = "2024.8.26" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", hash = "sha256:3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632", size = 76008, upload-time = "2024-08-26T20:58:38.155Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", hash = "sha256:76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f", size = 74766, upload-time = "2024-08-26T21:01:02.632Z" }, @@ -2651,7 +2561,7 @@ wheels = [ [[package]] name = "peft" version = "0.18.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "accelerate" }, { name = "huggingface-hub" }, @@ -2660,9 +2570,9 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, { name = "transformers" }, ] @@ -2674,7 +2584,7 @@ wheels = [ [[package]] name = "pexpect" version = "4.9.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -2686,26 +2596,26 @@ wheels = [ [[package]] name = "pillow" version = "12.0.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371" }, - { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082" }, - { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f" }, - { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d" }, - { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953" }, - { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8" }, - { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79" }, - { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba" }, - { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0" }, - { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a" }, - { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad" }, + { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, + { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, ] [[package]] name = "plac" version = "1.4.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/23/09/26ef2d614cabdcc52a7f383d0dc7967bf46be3c9700898c594e37b710c3d/plac-1.4.5.tar.gz", hash = "sha256:5f05bf85235c017fcd76c73c8101d4ff8e96beb3dc58b9a37de49cac7de82d14", size = 38988, upload-time = "2025-04-04T14:03:25.651Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/15/36/38676114a0dbee137ec366daa86603d667a07e9a52667d5ebf5c580100ba/plac-1.4.5-py2.py3-none-any.whl", hash = "sha256:87187786b4e446688b1cf5112e18fed8a23ab3b316c25fe91266a10bd1736b16", size = 22468, upload-time = "2025-04-04T14:03:24.761Z" }, @@ -2714,7 +2624,7 @@ wheels = [ [[package]] name = "platformdirs" version = "4.5.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, @@ -2723,7 +2633,7 @@ wheels = [ [[package]] name = "pluggy" version = "1.6.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, @@ -2732,7 +2642,7 @@ wheels = [ [[package]] name = "polib" version = "1.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/10/9a/79b1067d27e38ddf84fe7da6ec516f1743f31f752c6122193e7bce38bdbf/polib-1.2.0.tar.gz", hash = "sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b", size = 161658, upload-time = "2023-02-23T17:53:56.873Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/6b/99/45bb1f9926efe370c6dbe324741c749658e44cb060124f28dad201202274/polib-1.2.0-py2.py3-none-any.whl", hash = "sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d", size = 20634, upload-time = "2023-02-23T17:53:59.919Z" }, @@ -2741,7 +2651,7 @@ wheels = [ [[package]] name = "pooch" version = "1.8.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "platformdirs", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2755,7 +2665,7 @@ wheels = [ [[package]] name = "posthog" version = "3.25.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backoff" }, { name = "distro" }, @@ -2772,7 +2682,7 @@ wheels = [ [[package]] name = "pre-commit" version = "2.21.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cfgv" }, { name = "identify" }, @@ -2788,7 +2698,7 @@ wheels = [ [[package]] name = "prompt-toolkit" version = "3.0.52" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -2800,7 +2710,7 @@ wheels = [ [[package]] name = "propcache" version = "0.4.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, @@ -2824,7 +2734,7 @@ wheels = [ [[package]] name = "protobuf" version = "5.29.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/29/d09e70352e4e88c9c7a198d5645d7277811448d76c23b00345670f7c8a38/protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84", size = 425226, upload-time = "2025-05-28T23:51:59.82Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5f/11/6e40e9fc5bba02988a214c07cf324595789ca7820160bfd1f8be96e48539/protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079", size = 422963, upload-time = "2025-05-28T23:51:41.204Z" }, @@ -2838,7 +2748,7 @@ wheels = [ [[package]] name = "psutil" version = "7.1.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74", size = 489059, upload-time = "2025-11-02T12:25:54.619Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab", size = 238359, upload-time = "2025-11-02T12:26:25.284Z" }, @@ -2852,7 +2762,7 @@ wheels = [ [[package]] name = "ptyprocess" version = "0.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, @@ -2861,7 +2771,7 @@ wheels = [ [[package]] name = "pure-eval" version = "0.2.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, @@ -2870,7 +2780,7 @@ wheels = [ [[package]] name = "py-cpuinfo" version = "9.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716, upload-time = "2022-10-25T20:38:06.303Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, @@ -2879,7 +2789,7 @@ wheels = [ [[package]] name = "pyaml" version = "25.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] @@ -2891,7 +2801,7 @@ wheels = [ [[package]] name = "pyannote-core" version = "5.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "scipy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2906,7 +2816,7 @@ wheels = [ [[package]] name = "pyannote-database" version = "5.1.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pandas", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "pyannote-core", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2921,7 +2831,7 @@ wheels = [ [[package]] name = "pyannote-metrics" version = "3.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docopt", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "matplotlib", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -2942,7 +2852,7 @@ wheels = [ [[package]] name = "pyarrow" version = "22.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151, upload-time = "2025-10-24T12:30:00.762Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578, upload-time = "2025-10-24T10:05:21.583Z" }, @@ -2957,7 +2867,7 @@ wheels = [ [[package]] name = "pybind11" version = "3.0.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2f/7b/a6d8dcb83c457e24a9df1e4d8fd5fb8034d4bbc62f3c324681e8a9ba57c2/pybind11-3.0.1.tar.gz", hash = "sha256:9c0f40056a016da59bab516efb523089139fcc6f2ba7e4930854c61efb932051", size = 546914, upload-time = "2025-08-22T20:09:27.265Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cd/8a/37362fc2b949d5f733a8b0f2ff51ba423914cabefe69f1d1b6aab710f5fe/pybind11-3.0.1-py3-none-any.whl", hash = "sha256:aa8f0aa6e0a94d3b64adfc38f560f33f15e589be2175e103c0a33c6bce55ee89", size = 293611, upload-time = "2025-08-22T20:09:25.235Z" }, @@ -2966,7 +2876,7 @@ wheels = [ [[package]] name = "pycodestyle" version = "2.14.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472, upload-time = "2025-06-20T18:49:48.75Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, @@ -2975,7 +2885,7 @@ wheels = [ [[package]] name = "pycparser" version = "2.23" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, @@ -2984,7 +2894,7 @@ wheels = [ [[package]] name = "pydantic" version = "2.12.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, @@ -2999,7 +2909,7 @@ wheels = [ [[package]] name = "pydantic-core" version = "2.41.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] @@ -3028,7 +2938,7 @@ wheels = [ [[package]] name = "pydub" version = "0.25.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/fe/9a/e6bca0eed82db26562c73b5076539a4a08d3cffd19c3cc5913a3e61145fd/pydub-0.25.1.tar.gz", hash = "sha256:980a33ce9949cab2a569606b65674d748ecbca4f0796887fd6f46173a7b0d30f", size = 38326, upload-time = "2021-03-10T02:09:54.659Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a6/53/d78dc063216e62fc55f6b2eebb447f6a4b0a59f55c8406376f76bf959b08/pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6", size = 32327, upload-time = "2021-03-10T02:09:53.503Z" }, @@ -3037,7 +2947,7 @@ wheels = [ [[package]] name = "pyflakes" version = "3.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58", size = 64669, upload-time = "2025-06-20T18:45:27.834Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" }, @@ -3046,7 +2956,7 @@ wheels = [ [[package]] name = "pygments" version = "2.19.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, @@ -3055,7 +2965,7 @@ wheels = [ [[package]] name = "pyinstaller" version = "6.17.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "altgraph" }, { name = "macholib", marker = "sys_platform == 'darwin'" }, @@ -3083,7 +2993,7 @@ wheels = [ [[package]] name = "pyinstaller-hooks-contrib" version = "2025.10" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, { name = "setuptools" }, @@ -3096,7 +3006,7 @@ wheels = [ [[package]] name = "pylint" version = "2.17.7" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "astroid" }, { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -3114,7 +3024,7 @@ wheels = [ [[package]] name = "pyloudnorm" version = "0.1.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "future", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3128,7 +3038,7 @@ wheels = [ [[package]] name = "pyparsing" version = "3.2.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, @@ -3137,7 +3047,7 @@ wheels = [ [[package]] name = "pyqt6" version = "6.9.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyqt6-qt6" }, { name = "pyqt6-sip" }, @@ -3154,7 +3064,7 @@ wheels = [ [[package]] name = "pyqt6-qt6" version = "6.9.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/51/40/04f652e714f85ba6b0c24f4ead860f2c5769f9e64737f415524d792d5914/pyqt6_qt6-6.9.1-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:3854c7f83ee4e8c2d91e23ab88b77f90e2ca7ace34fe72f634a446959f2b4d4a", size = 66236777, upload-time = "2025-06-03T14:53:17.684Z" }, { url = "https://files.pythonhosted.org/packages/57/31/e4fa40568a59953ce5cf9a5adfbd1be4a806dafd94e39072d3cc0bed5468/pyqt6_qt6-6.9.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:123e4aeb037c099bb4696a3ea8edcb1d9d62cedd0b2b950556b26024c97f3293", size = 60551574, upload-time = "2025-06-03T14:53:48.42Z" }, @@ -3167,7 +3077,7 @@ wheels = [ [[package]] name = "pyqt6-sip" version = "13.10.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2f/4a/96daf6c2e4f689faae9bd8cebb52754e76522c58a6af9b5ec86a2e8ec8b4/pyqt6_sip-13.10.2.tar.gz", hash = "sha256:464ad156bf526500ce6bd05cac7a82280af6309974d816739b4a9a627156fafe", size = 92548, upload-time = "2025-05-23T12:26:49.901Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/22/5b/1240017e0d59575289ba52b58fd7f95e7ddf0ed2ede95f3f7e2dc845d337/pyqt6_sip-13.10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:83e6a56d3e715f748557460600ec342cbd77af89ec89c4f2a68b185fa14ea46c", size = 112199, upload-time = "2025-05-23T12:26:32.503Z" }, @@ -3180,7 +3090,7 @@ wheels = [ [[package]] name = "pyreadline3" version = "3.5.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0f/49/4cea918a08f02817aabae639e3d0ac046fef9f9180518a3ad394e22da148/pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7", size = 99839, upload-time = "2024-09-19T02:40:10.062Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6", size = 83178, upload-time = "2024-09-19T02:40:08.598Z" }, @@ -3189,7 +3099,7 @@ wheels = [ [[package]] name = "pytest" version = "7.4.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, @@ -3204,7 +3114,7 @@ wheels = [ [[package]] name = "pytest-benchmark" version = "4.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "py-cpuinfo" }, { name = "pytest" }, @@ -3217,7 +3127,7 @@ wheels = [ [[package]] name = "pytest-cov" version = "4.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage" }, { name = "pytest" }, @@ -3230,7 +3140,7 @@ wheels = [ [[package]] name = "pytest-mock" version = "3.15.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] @@ -3242,7 +3152,7 @@ wheels = [ [[package]] name = "pytest-qt" version = "4.5.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pluggy" }, { name = "pytest" }, @@ -3256,7 +3166,7 @@ wheels = [ [[package]] name = "pytest-timeout" version = "2.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] @@ -3268,7 +3178,7 @@ wheels = [ [[package]] name = "pytest-xvfb" version = "2.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, { name = "pyvirtualdisplay" }, @@ -3281,7 +3191,7 @@ wheels = [ [[package]] name = "python-dateutil" version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] @@ -3293,14 +3203,14 @@ wheels = [ [[package]] name = "pytorch-lightning" version = "2.6.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec", extra = ["http"], marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "lightning-utilities", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "torchmetrics", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3313,7 +3223,7 @@ wheels = [ [[package]] name = "pytz" version = "2025.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, @@ -3322,7 +3232,7 @@ wheels = [ [[package]] name = "pyvirtualdisplay" version = "3.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/86/9f/23e5a82987c26d225139948a224a93318d7a7c8b166d4dbe4de7426dc4e4/PyVirtualDisplay-3.0.tar.gz", hash = "sha256:09755bc3ceb6eb725fb07eca5425f43f2358d3bf08e00d2a9b792a1aedd16159", size = 18560, upload-time = "2022-02-13T07:57:05.783Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/90/eb/c3b8deb661cb3846db63288c99bbb39f217b7807fc8acb2fd058db41e2e6/PyVirtualDisplay-3.0-py3-none-any.whl", hash = "sha256:40d4b8dfe4b8de8552e28eb367647f311f88a130bf837fe910e7f180d5477f0e", size = 15258, upload-time = "2022-02-13T07:57:04.051Z" }, @@ -3331,7 +3241,7 @@ wheels = [ [[package]] name = "pywin32-ctypes" version = "0.2.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" }, @@ -3340,7 +3250,7 @@ wheels = [ [[package]] name = "pyyaml" version = "6.0.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, @@ -3358,7 +3268,7 @@ wheels = [ [[package]] name = "rapidfuzz" version = "3.14.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d3/28/9d808fe62375b9aab5ba92fa9b29371297b067c2790b2d7cda648b1e2f8d/rapidfuzz-3.14.3.tar.gz", hash = "sha256:2491937177868bc4b1e469087601d53f925e8d270ccc21e07404b4b5814b7b5f", size = 57863900, upload-time = "2025-11-01T11:54:52.321Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fa/8e/3c215e860b458cfbedb3ed73bc72e98eb7e0ed72f6b48099604a7a3260c2/rapidfuzz-3.14.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:685c93ea961d135893b5984a5a9851637d23767feabe414ec974f43babbd8226", size = 1945306, upload-time = "2025-11-01T11:53:06.452Z" }, @@ -3377,7 +3287,7 @@ wheels = [ [[package]] name = "referencing" version = "0.37.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "rpds-py" }, @@ -3391,7 +3301,7 @@ wheels = [ [[package]] name = "regex" version = "2025.11.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cc/a9/546676f25e573a4cf00fe8e119b78a37b6a8fe2dc95cda877b30889c9c45/regex-2025.11.3.tar.gz", hash = "sha256:1fedc720f9bb2494ce31a58a1631f9c82df6a09b49c19517ea5cc280b4541e01", size = 414669, upload-time = "2025-11-03T21:34:22.089Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e8/74/18f04cb53e58e3fb107439699bd8375cf5a835eec81084e0bddbd122e4c2/regex-2025.11.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bc8ab71e2e31b16e40868a40a69007bc305e1109bd4658eb6cad007e0bf67c41", size = 489312, upload-time = "2025-11-03T21:31:34.343Z" }, @@ -3413,7 +3323,7 @@ wheels = [ [[package]] name = "requests" version = "2.32.5" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "charset-normalizer" }, @@ -3428,7 +3338,7 @@ wheels = [ [[package]] name = "resampy" version = "0.4.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numba", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3441,7 +3351,7 @@ wheels = [ [[package]] name = "retrying" version = "1.4.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c8/5a/b17e1e257d3e6f2e7758930e1256832c9ddd576f8631781e6a072914befa/retrying-1.4.2.tar.gz", hash = "sha256:d102e75d53d8d30b88562d45361d6c6c934da06fab31bd81c0420acb97a8ba39", size = 11411, upload-time = "2025-08-03T03:35:25.189Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/67/f3/6cd296376653270ac1b423bb30bd70942d9916b6978c6f40472d6ac038e7/retrying-1.4.2-py3-none-any.whl", hash = "sha256:bbc004aeb542a74f3569aeddf42a2516efefcdaff90df0eb38fbfbf19f179f59", size = 10859, upload-time = "2025-08-03T03:35:23.829Z" }, @@ -3450,7 +3360,7 @@ wheels = [ [[package]] name = "rich" version = "14.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "pygments", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3463,7 +3373,7 @@ wheels = [ [[package]] name = "rpds-py" version = "0.30.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, @@ -3486,7 +3396,7 @@ wheels = [ [[package]] name = "ruamel-yaml" version = "0.18.16" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "(platform_machine != 'x86_64' and platform_python_implementation == 'CPython') or (platform_python_implementation == 'CPython' and sys_platform != 'darwin')" }, ] @@ -3498,7 +3408,7 @@ wheels = [ [[package]] name = "ruamel-yaml-clib" version = "0.2.15" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ea/97/60fda20e2fb54b83a61ae14648b0817c8f5d84a3821e40bfbdae1437026a/ruamel_yaml_clib-0.2.15.tar.gz", hash = "sha256:46e4cc8c43ef6a94885f72512094e482114a8a706d3c555a34ed4b0d20200600", size = 225794, upload-time = "2025-11-16T16:12:59.761Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/72/4b/5fde11a0722d676e469d3d6f78c6a17591b9c7e0072ca359801c4bd17eee/ruamel_yaml_clib-0.2.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cb15a2e2a90c8475df45c0949793af1ff413acfb0a716b8b94e488ea95ce7cff", size = 149088, upload-time = "2025-11-16T16:13:22.836Z" }, @@ -3516,7 +3426,7 @@ wheels = [ [[package]] name = "ruff" version = "0.1.15" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/42/33/7165f88a156be1c2fd13a18b3af6e75bbf82da5b6978cd2128d666accc18/ruff-0.1.15.tar.gz", hash = "sha256:f6dfa8c1b21c913c326919056c390966648b680966febcb796cc9d1aaab8564e", size = 1971643, upload-time = "2024-01-29T23:06:05.541Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/11/2c/fac0658910ea3ea87a23583e58277533154261b73f9460388eb2e6e02e8f/ruff-0.1.15-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5fe8d54df166ecc24106db7dd6a68d44852d14eb0729ea4672bb4d96c320b7df", size = 14357437, upload-time = "2024-01-29T23:05:04.991Z" }, @@ -3540,7 +3450,7 @@ wheels = [ [[package]] name = "sacremoses" version = "0.1.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "joblib", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3555,7 +3465,7 @@ wheels = [ [[package]] name = "safetensors" version = "0.7.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload-time = "2025-11-19T15:18:43.199Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload-time = "2025-11-19T15:18:35.84Z" }, @@ -3577,7 +3487,7 @@ wheels = [ [[package]] name = "scikit-learn" version = "1.7.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "joblib", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3596,7 +3506,7 @@ wheels = [ [[package]] name = "scipy" version = "1.16.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] @@ -3617,7 +3527,7 @@ wheels = [ [[package]] name = "secretstorage" version = "3.5.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography", marker = "sys_platform == 'linux'" }, { name = "jeepney", marker = "sys_platform == 'linux'" }, @@ -3630,7 +3540,7 @@ wheels = [ [[package]] name = "sentencepiece" version = "0.2.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/15/15/2e7a025fc62d764b151ae6d0f2a92f8081755ebe8d4a64099accc6f77ba6/sentencepiece-0.2.1.tar.gz", hash = "sha256:8138cec27c2f2282f4a34d9a016e3374cd40e5c6e9cb335063db66a0a3b71fad", size = 3228515, upload-time = "2025-08-12T07:00:51.718Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/4a/be/32ce495aa1d0e0c323dcb1ba87096037358edee539cac5baf8755a6bd396/sentencepiece-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57cae326c8727de58c85977b175af132a7138d84c764635d7e71bbee7e774133", size = 1943152, upload-time = "2025-08-12T06:59:40.048Z" }, @@ -3646,7 +3556,7 @@ wheels = [ [[package]] name = "sentry-sdk" version = "2.47.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "urllib3", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3659,7 +3569,7 @@ wheels = [ [[package]] name = "setuptools" version = "80.9.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, @@ -3668,7 +3578,7 @@ wheels = [ [[package]] name = "shellingham" version = "1.5.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, @@ -3677,7 +3587,7 @@ wheels = [ [[package]] name = "simplejson" version = "3.20.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/41/f4/a1ac5ed32f7ed9a088d62a59d410d4c204b3b3815722e2ccfb491fa8251b/simplejson-3.20.2.tar.gz", hash = "sha256:5fe7a6ce14d1c300d80d08695b7f7e633de6cd72c80644021874d985b3393649", size = 85784, upload-time = "2025-09-26T16:29:36.64Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9d/9e/1a91e7614db0416885eab4136d49b7303de20528860ffdd798ce04d054db/simplejson-3.20.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4376d5acae0d1e91e78baeba4ee3cf22fbf6509d81539d01b94e0951d28ec2b6", size = 93523, upload-time = "2025-09-26T16:28:00.356Z" }, @@ -3699,7 +3609,7 @@ wheels = [ [[package]] name = "six" version = "1.17.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, @@ -3708,7 +3618,7 @@ wheels = [ [[package]] name = "smmap" version = "5.0.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload-time = "2025-01-02T07:14:40.909Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload-time = "2025-01-02T07:14:38.724Z" }, @@ -3717,7 +3627,7 @@ wheels = [ [[package]] name = "sniffio" version = "1.3.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, @@ -3726,7 +3636,7 @@ wheels = [ [[package]] name = "sortedcontainers" version = "2.4.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, @@ -3735,7 +3645,7 @@ wheels = [ [[package]] name = "sounddevice" version = "0.5.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] @@ -3750,7 +3660,7 @@ wheels = [ [[package]] name = "soundfile" version = "0.13.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, { name = "numpy" }, @@ -3769,7 +3679,7 @@ wheels = [ [[package]] name = "sox" version = "1.5.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3779,7 +3689,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/3d/a2/d8e0d8fd7abf509ea [[package]] name = "soxr" version = "1.0.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -3795,7 +3705,7 @@ wheels = [ [[package]] name = "sqlalchemy" version = "2.0.44" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or (platform_machine == 'x86_64' and sys_platform != 'darwin')" }, { name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3816,13 +3726,13 @@ wheels = [ [[package]] name = "srt" version = "3.5.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/66/b7/4a1bc231e0681ebf339337b0cd05b91dc6a0d701fa852bb812e244b7a030/srt-3.5.3.tar.gz", hash = "sha256:4884315043a4f0740fd1f878ed6caa376ac06d70e135f306a6dc44632eed0cc0", size = 28296, upload-time = "2023-03-28T02:35:44.007Z" } [[package]] name = "srt-equalizer" version = "0.1.10" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "srt" }, ] @@ -3834,17 +3744,16 @@ wheels = [ [[package]] name = "stable-ts" version = "2.19.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "openai-whisper" }, - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, - { name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" }, - { name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, + { name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torchaudio", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/d9/d326f9dbbb7da6806aa8cfc080342e5f78dc33552f4339bdc8a6251d11a3/stable_ts-2.19.1.tar.gz", hash = "sha256:0ecaf1ed93e029839569618d2da9a57b883ad04db21f0680146e0650caaf4f52", size = 189132, upload-time = "2025-08-16T16:53:48.811Z" } @@ -3852,7 +3761,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/94/d9/d326f9dbbb7da6806 [[package]] name = "stack-data" version = "0.6.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asttokens", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "executing", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3866,7 +3775,7 @@ wheels = [ [[package]] name = "stempeg" version = "0.2.6" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ffmpeg-python" }, { name = "numpy" }, @@ -3879,7 +3788,7 @@ wheels = [ [[package]] name = "strenum" version = "0.4.15" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/85/ad/430fb60d90e1d112a62ff57bdd1f286ec73a2a0331272febfddd21f330e1/StrEnum-0.4.15.tar.gz", hash = "sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff", size = 23384, upload-time = "2023-06-29T22:02:58.399Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/81/69/297302c5f5f59c862faa31e6cb9a4cd74721cd1e052b38e464c5b402df8b/StrEnum-0.4.15-py3-none-any.whl", hash = "sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659", size = 8851, upload-time = "2023-06-29T22:02:56.947Z" }, @@ -3888,7 +3797,7 @@ wheels = [ [[package]] name = "submitit" version = "1.5.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cloudpickle" }, { name = "typing-extensions" }, @@ -3901,19 +3810,19 @@ wheels = [ [[package]] name = "sympy" version = "1.14.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mpmath" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517" } +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5" }, + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, ] [[package]] name = "tabulate" version = "0.9.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, @@ -3922,7 +3831,7 @@ wheels = [ [[package]] name = "tensorboard" version = "2.20.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "absl-py", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "grpcio", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3942,7 +3851,7 @@ wheels = [ [[package]] name = "tensorboard-data-server" version = "0.7.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/7a/13/e503968fefabd4c6b2650af21e110aa8466fe21432cd7c43a84577a89438/tensorboard_data_server-0.7.2-py3-none-any.whl", hash = "sha256:7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb", size = 2356, upload-time = "2023-10-23T21:23:32.16Z" }, { url = "https://files.pythonhosted.org/packages/b7/85/dabeaf902892922777492e1d253bb7e1264cadce3cea932f7ff599e53fea/tensorboard_data_server-0.7.2-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:9fe5d24221b29625dbc7328b0436ca7fc1c23de4acf4d272f1180856e32f9f60", size = 4823598, upload-time = "2023-10-23T21:23:33.714Z" }, @@ -3952,7 +3861,7 @@ wheels = [ [[package]] name = "termcolor" version = "3.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/87/56/ab275c2b56a5e2342568838f0d5e3e66a32354adcc159b495e374cda43f5/termcolor-3.2.0.tar.gz", hash = "sha256:610e6456feec42c4bcd28934a8c87a06c3fa28b01561d46aa09a9881b8622c58", size = 14423, upload-time = "2025-10-25T19:11:42.586Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f9/d5/141f53d7c1eb2a80e6d3e9a390228c3222c27705cbe7f048d3623053f3ca/termcolor-3.2.0-py3-none-any.whl", hash = "sha256:a10343879eba4da819353c55cb8049b0933890c2ebf9ad5d3ecd2bb32ea96ea6", size = 7698, upload-time = "2025-10-25T19:11:41.536Z" }, @@ -3961,7 +3870,7 @@ wheels = [ [[package]] name = "text-unidecode" version = "1.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, @@ -3970,7 +3879,7 @@ wheels = [ [[package]] name = "texterrors" version = "0.5.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "levenshtein", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "loguru", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -3985,7 +3894,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/9b/47/9a391643961698df3 [[package]] name = "threadpoolctl" version = "3.6.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, @@ -3994,7 +3903,7 @@ wheels = [ [[package]] name = "tiktoken" version = "0.12.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "regex" }, { name = "requests" }, @@ -4013,7 +3922,7 @@ wheels = [ [[package]] name = "tokenizers" version = "0.21.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub" }, ] @@ -4038,7 +3947,7 @@ wheels = [ [[package]] name = "toml" version = "0.10.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, @@ -4047,7 +3956,7 @@ wheels = [ [[package]] name = "tomlkit" version = "0.13.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, @@ -4056,7 +3965,7 @@ wheels = [ [[package]] name = "toolz" version = "1.1.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, @@ -4065,7 +3974,7 @@ wheels = [ [[package]] name = "torch" version = "2.2.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "platform_machine == 'x86_64' and sys_platform == 'darwin'", ] @@ -4084,7 +3993,7 @@ wheels = [ [[package]] name = "torch" version = "2.8.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "platform_machine == 'arm64' and sys_platform == 'darwin'", "platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'", @@ -4104,8 +4013,8 @@ wheels = [ [[package]] name = "torch" -version = "2.8.0+cu129" -source = { registry = "https://download.pytorch.org/whl/cu129" } +version = "2.8.0+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')", "sys_platform != 'darwin' and sys_platform != 'linux'", @@ -4116,40 +4025,27 @@ dependencies = [ { name = "fsspec", marker = "sys_platform != 'darwin'" }, { name = "jinja2", marker = "sys_platform != 'darwin'" }, { name = "networkx", marker = "sys_platform != 'darwin'" }, - { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, { name = "setuptools", marker = "sys_platform != 'darwin'" }, { name = "sympy", marker = "sys_platform != 'darwin'" }, - { name = "triton", marker = "sys_platform == 'linux'" }, { name = "typing-extensions", marker = "sys_platform != 'darwin'" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:692fe6e513b667f789a543fa9b1baba58e77a46d5c8629764ca0c00a56823e1f", upload-time = "2025-10-02T00:08:10Z" }, - { url = "https://download-r2.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:02c7258e917f3043c978b53acf6f02b818db0d0d85db0e58ae578af333b9b4e2", upload-time = "2025-10-02T00:10:15Z" }, - { url = "https://download-r2.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-win_amd64.whl", hash = "sha256:2bc729898e422b9f3da54349eed98f2f0b5dd415434508ee2ab2a13fb021815d", upload-time = "2025-10-02T00:11:01Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:0e34e276722ab7dd0dffa9e12fe2135a9b34a0e300c456ed7ad6430229404eb5", upload-time = "2025-10-01T23:33:41Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:610f600c102386e581327d5efc18c0d6edecb9820b4140d26163354a99cd800d", upload-time = "2025-10-01T23:33:45Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:cb9a8ba8137ab24e36bf1742cb79a1294bd374db570f09fc15a5e1318160db4e", upload-time = "2025-10-01T23:33:48Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:2be20b2c05a0cce10430cc25f32b689259640d273232b2de357c35729132256d", upload-time = "2025-10-01T23:33:52Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp312-cp312-win_arm64.whl", hash = "sha256:99fc421a5d234580e45957a7b02effbf3e1c884a5dd077afc85352c77bf41434", upload-time = "2025-10-01T23:34:10Z" }, ] [[package]] name = "torchaudio" version = "2.2.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "platform_machine == 'x86_64' and sys_platform == 'darwin'", ] dependencies = [ - { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/05/39/fcc68b1f848a38b57446b624be42db66fec3587972941a5b86fc19b8bd45/torchaudio-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:da3cc523696166ea525d2b3377d789da5388f36d94a20a324b09df00f1c43458", size = 3400705, upload-time = "2024-03-27T21:12:10.303Z" }, @@ -4158,27 +4054,13 @@ wheels = [ [[package]] name = "torchaudio" version = "2.8.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -resolution-markers = [ - "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'", -] -dependencies = [ - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://download-r2.pytorch.org/whl/cu129/torchaudio-2.8.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:67d4f6cbfcb795157850db6a3735301b929cdfe2b56032dc3365105b49a4ee84", upload-time = "2025-08-05T20:12:08Z" }, -] - -[[package]] -name = "torchaudio" -version = "2.8.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } resolution-markers = [ "platform_machine == 'arm64' and sys_platform == 'darwin'", "platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'", ] dependencies = [ - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/ac/cc/c2e2a3eb6ee956f73c68541e439916f8146170ea9cc61e72adea5c995312/torchaudio-2.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ddef94bf181e6447cbb05f38beaca8f6c5bb8d2b9ddced1aa3452025b9fc70d3", size = 1856736, upload-time = "2025-08-06T14:58:36.3Z" }, @@ -4186,24 +4068,25 @@ wheels = [ [[package]] name = "torchaudio" -version = "2.8.0+cu129" -source = { registry = "https://download.pytorch.org/whl/cu129" } +version = "2.8.0+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')", "sys_platform != 'darwin' and sys_platform != 'linux'", + "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'", ] dependencies = [ - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/cu129/torchaudio-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:40df9011972519120f284f56e5e7d131d4250ea69653499028d1d30b353f932e", upload-time = "2025-08-05T20:12:08Z" }, - { url = "https://download-r2.pytorch.org/whl/cu129/torchaudio-2.8.0%2Bcu129-cp312-cp312-win_amd64.whl", hash = "sha256:bfe0d4c6e770ef3b1f7a287a4c8d33ac276a1d983306573ee28e42de02a32fe3", upload-time = "2025-08-05T20:12:08Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torchaudio-2.8.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9377faee65a290578280ac7f4884c3586253dac2ca28c60f458ff6efe86a6b05", upload-time = "2025-08-05T20:12:02Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torchaudio-2.8.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:9b302192b570657c1cc787a4d487ae4bbb7f2aab1c01b1fcc46757e7f86f391e", upload-time = "2025-08-05T20:12:02Z" }, ] [[package]] name = "torchcodec" version = "0.9.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/60/88/dc4a7928ee80823913b1ec9d6433458b32d5510288030b122c9b3d58b484/torchcodec-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:30d031eafbe287a2a54b90b35109f7e0711b393bbb263cf90487f533b8ac92d4", size = 4063923, upload-time = "2025-12-04T14:16:35.491Z" }, { url = "https://files.pythonhosted.org/packages/42/10/742531478a71585bcb901913a9a806dc6b8c4097f39e6e82213a129cbaf1/torchcodec-0.9.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c4b5964e85e616097b35db6927561bbac1cbf227e1a8d4dffb0acf00a7e94725", size = 2061634, upload-time = "2025-12-04T14:16:28.386Z" }, @@ -4213,13 +4096,13 @@ wheels = [ [[package]] name = "torchmetrics" version = "1.8.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "lightning-utilities", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "torch", version = "2.8.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/85/2e/48a887a59ecc4a10ce9e8b35b3e3c5cef29d902c4eac143378526e7485cb/torchmetrics-1.8.2.tar.gz", hash = "sha256:cf64a901036bf107f17a524009eea7781c9c5315d130713aeca5747a686fe7a5", size = 580679, upload-time = "2025-09-03T14:00:54.077Z" } wheels = [ @@ -4229,7 +4112,7 @@ wheels = [ [[package]] name = "tqdm" version = "4.67.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] @@ -4241,7 +4124,7 @@ wheels = [ [[package]] name = "traitlets" version = "5.14.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, @@ -4250,7 +4133,7 @@ wheels = [ [[package]] name = "transformers" version = "4.53.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, { name = "huggingface-hub" }, @@ -4271,7 +4154,7 @@ wheels = [ [[package]] name = "treetable" version = "0.2.6" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/8d/f1/e5f28b2485d8d3169ff0167e3e560fa912a96e71916bf11365c9e40f11f5/treetable-0.2.6.tar.gz", hash = "sha256:7e1d62dbce503fbf24561aee1461b8fbcc2c232ff45661c3b9d0c2081c795bdf", size = 9577, upload-time = "2025-09-02T20:40:06.557Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e4/16/dd00f9fc5b84cb3fb396d62245e11761accfd9d27fd56ce0024bdd38a0ae/treetable-0.2.6-py3-none-any.whl", hash = "sha256:fa7dfa0297d2bbc5882191edd2e15f79a5e883e352f489e2acadb221db565adf", size = 7379, upload-time = "2025-09-03T18:57:17.784Z" }, @@ -4280,19 +4163,18 @@ wheels = [ [[package]] name = "triton" version = "3.4.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "setuptools", marker = "sys_platform != 'darwin'" }, + { name = "setuptools", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://download-r2.pytorch.org/whl/triton-3.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ea4a1c15f079bbf49ff02c312210fdb8ff05b1503ea30812610e2a3b171f3b", upload-time = "2026-01-22T22:47:17Z" }, - { url = "https://download-r2.pytorch.org/whl/triton-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8550672b1184f05187f4140db32e33e61b592046fd3e1eb907e3b7db5321b750", upload-time = "2026-01-22T22:47:24Z" }, + { url = "https://files.pythonhosted.org/packages/d0/66/b1eb52839f563623d185f0927eb3530ee4d5ffe9d377cdaf5346b306689e/triton-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04", size = 155560068, upload-time = "2025-07-30T19:58:37.081Z" }, ] [[package]] name = "trove-classifiers" version = "2025.12.1.14" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/80/e1/000add3b3e0725ce7ee0ea6ea4543f1e1d9519742f3b2320de41eeefa7c7/trove_classifiers-2025.12.1.14.tar.gz", hash = "sha256:a74f0400524fc83620a9be74a07074b5cbe7594fd4d97fd4c2bfde625fdc1633", size = 16985, upload-time = "2025-12-01T14:47:11.456Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/4f/7e/bc19996fa86cad8801e8ffe6f1bba5836ca0160df76d0410d27432193712/trove_classifiers-2025.12.1.14-py3-none-any.whl", hash = "sha256:a8206978ede95937b9959c3aff3eb258bbf7b07dff391ddd4ea7e61f316635ab", size = 14184, upload-time = "2025-12-01T14:47:10.113Z" }, @@ -4301,7 +4183,7 @@ wheels = [ [[package]] name = "truststore" version = "0.10.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/53/a3/1585216310e344e8102c22482f6060c7a6ea0322b63e026372e6dcefcfd6/truststore-0.10.4.tar.gz", hash = "sha256:9d91bd436463ad5e4ee4aba766628dd6cd7010cf3e2461756b3303710eebc301", size = 26169, upload-time = "2025-08-12T18:49:02.73Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl", hash = "sha256:adaeaecf1cbb5f4de3b1959b42d41f6fab57b2b1666adb59e89cb0b53361d981", size = 18660, upload-time = "2025-08-12T18:49:01.46Z" }, @@ -4310,7 +4192,7 @@ wheels = [ [[package]] name = "typeguard" version = "4.4.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -4322,7 +4204,7 @@ wheels = [ [[package]] name = "typer" version = "0.20.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "rich", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -4337,27 +4219,29 @@ wheels = [ [[package]] name = "typing-extensions" version = "4.15.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://download.pytorch.org/whl/typing_extensions-4.15.0-py3-none-any.whl" }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] [[package]] name = "typing-inspect" version = "0.9.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload-time = "2023-05-24T20:25:47.612Z" } wheels = [ - { url = "https://download.pytorch.org/whl/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", upload-time = "2024-10-30T00:09:55Z" }, + { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload-time = "2023-05-24T20:25:45.287Z" }, ] [[package]] name = "typing-inspection" version = "0.4.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] @@ -4369,7 +4253,7 @@ wheels = [ [[package]] name = "tzdata" version = "2025.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, @@ -4378,7 +4262,7 @@ wheels = [ [[package]] name = "urllib3" version = "2.6.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5e/1d/0f3a93cca1ac5e8287842ed4eebbd0f7a991315089b1a0b01c7788aa7b63/urllib3-2.6.1.tar.gz", hash = "sha256:5379eb6e1aba4088bae84f8242960017ec8d8e3decf30480b3a1abdaa9671a3f", size = 432678, upload-time = "2025-12-08T15:25:26.773Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/bc/56/190ceb8cb10511b730b564fb1e0293fa468363dbad26145c34928a60cb0c/urllib3-2.6.1-py3-none-any.whl", hash = "sha256:e67d06fe947c36a7ca39f4994b08d73922d40e6cca949907be05efa6fd75110b", size = 131138, upload-time = "2025-12-08T15:25:25.51Z" }, @@ -4387,7 +4271,7 @@ wheels = [ [[package]] name = "uroman" version = "1.3.1.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "regex" }, ] @@ -4399,7 +4283,7 @@ wheels = [ [[package]] name = "virtualenv" version = "20.35.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, @@ -4413,7 +4297,7 @@ wheels = [ [[package]] name = "vulkan" version = "1.3.275.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] @@ -4425,7 +4309,7 @@ wheels = [ [[package]] name = "wandb" version = "0.23.1" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "gitpython", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -4454,7 +4338,7 @@ wheels = [ [[package]] name = "wcwidth" version = "0.2.14" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, @@ -4463,7 +4347,7 @@ wheels = [ [[package]] name = "webdataset" version = "1.0.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "braceexpand", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -4477,7 +4361,7 @@ wheels = [ [[package]] name = "werkzeug" version = "3.1.4" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, ] @@ -4489,13 +4373,13 @@ wheels = [ [[package]] name = "wget" version = "3.2" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/47/6a/62e288da7bcda82b935ff0c6cfe542970f04e29c756b0e147251b2fb251f/wget-3.2.zip", hash = "sha256:35e630eca2aa50ce998b9b1a127bb26b30dfee573702782aa982f875e3f16061", size = 10857, upload-time = "2015-10-22T15:26:37.51Z" } [[package]] name = "whisper-normalizer" version = "0.1.12" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "indic-numtowords", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, { name = "more-itertools", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" }, @@ -4509,7 +4393,7 @@ wheels = [ [[package]] name = "win32-setctime" version = "1.2.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" }, @@ -4518,7 +4402,7 @@ wheels = [ [[package]] name = "wrapt" version = "1.17.3" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9f/41/cad1aba93e752f1f9268c77270da3c469883d56e2798e7df6240dcb2287b/wrapt-1.17.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0", size = 53998, upload-time = "2025-08-12T05:51:47.138Z" }, @@ -4537,7 +4421,7 @@ wheels = [ [[package]] name = "xxhash" version = "3.6.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/02/84/30869e01909fb37a6cc7e18688ee8bf1e42d57e7e0777636bd47524c43c7/xxhash-3.6.0.tar.gz", hash = "sha256:f0162a78b13a0d7617b2845b90c763339d1f1d82bb04a4b07f4ab535cc5e05d6", size = 85160, upload-time = "2025-10-02T14:37:08.097Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/9a/07/d9412f3d7d462347e4511181dea65e47e0d0e16e26fbee2ea86a2aefb657/xxhash-3.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:01362c4331775398e7bb34e3ab403bc9ee9f7c497bc7dee6272114055277dd3c", size = 32744, upload-time = "2025-10-02T14:34:34.622Z" }, @@ -4560,7 +4444,7 @@ wheels = [ [[package]] name = "yarl" version = "1.22.0" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "multidict" }, @@ -4590,7 +4474,7 @@ wheels = [ [[package]] name = "yt-dlp" version = "2026.3.17" -source = { registry = "https://pypi.org/simple/" } +source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/8b/34/7c6b4e3f89cb6416d2cd7ab6dab141a1df97ab0fb22d15816db2c92148c9/yt_dlp-2026.3.17.tar.gz", hash = "sha256:ba7aa31d533f1ffccfe70e421596d7ca8ff0bf1398dc6bb658b7d9dec057d2c9", size = 3119221, upload-time = "2026-03-17T23:43:00.244Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cd/13/5093bcb954878e50f7217fd2ab94282b53934022e4e4a03265582da83bf5/yt_dlp-2026.3.17-py3-none-any.whl", hash = "sha256:32992db94303a8a5d211a183f2174834fe7f8c29d83ed2e7a324eae97a8f26d8", size = 3315134, upload-time = "2026-03-17T23:42:57.863Z" },