# -*- mode: python ; coding: utf-8 -*- """PyInstaller spec for the Voice to Notes sidecar binary.""" from PyInstaller.utils.hooks import collect_all block_cipher = None # Collect all files for packages that have shared libraries / data files # PyInstaller often misses these for ML packages ctranslate2_datas, ctranslate2_binaries, ctranslate2_hiddenimports = collect_all("ctranslate2") faster_whisper_datas, faster_whisper_binaries, faster_whisper_hiddenimports = collect_all( "faster_whisper" ) pyannote_datas, pyannote_binaries, pyannote_hiddenimports = collect_all("pyannote") a = Analysis( ["voice_to_notes/main.py"], pathex=[], binaries=ctranslate2_binaries + faster_whisper_binaries + pyannote_binaries, datas=ctranslate2_datas + faster_whisper_datas + pyannote_datas, hiddenimports=[ "torch", "torchaudio", "huggingface_hub", "pysubs2", "openai", "anthropic", "litellm", ] + ctranslate2_hiddenimports + faster_whisper_hiddenimports + pyannote_hiddenimports, hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[ "tkinter", "test", "unittest", "pip", "setuptools", # ctranslate2.converters imports torch at module level and causes # circular import crashes under PyInstaller. These modules are only # needed for model format conversion, never for inference. "ctranslate2.converters", ], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, [], exclude_binaries=True, name="voice-to-notes-sidecar", debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=True, ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name="voice-to-notes-sidecar", )