4343 libegl1 \
4444 libgl1 \
4545 libportaudio2 \
46- libpulse-mainloop-glib \
46+ libpulse-mainloop-glib0 \
4747 libxkbcommon-x11-0
4848
4949 - name : Install Python dependencies
@@ -54,19 +54,35 @@ jobs:
5454 - name : Ruff
5555 run : python -m ruff check .
5656
57- - name : Import smoke test
57+ - name : Lightweight import smoke test
5858 run : |
5959 python - <<'PY'
6060 import importlib
61+ import sys
6162
63+ # Keep this list limited to backend/service modules and worker scripts
64+ # that must remain importable without optional ML runtimes or models.
6265 modules = (
63- "voicebridge_qt",
64- "voicebridge.main_window",
66+ "voicebridge.app_paths",
67+ "voicebridge.app_settings",
68+ "voicebridge.ffmpeg_jobs",
69+ "voicebridge.file_checks",
70+ "voicebridge.media_tools",
71+ "voicebridge.modeling_datasets",
72+ "voicebridge.modeling_prompt_generator",
73+ "voicebridge.process_jobs",
74+ "voicebridge.voice_modeling",
6575 "stt_worker",
6676 "local_tts_worker",
77+ "voice_modeling_worker",
6778 )
6879 for module_name in modules:
6980 importlib.import_module(module_name)
81+
82+ optional_ml_modules = ("TTS", "faster_whisper", "imageio_ffmpeg", "torch", "whisperx")
83+ imported_optional_modules = [module_name for module_name in optional_ml_modules if module_name in sys.modules]
84+ if imported_optional_modules:
85+ raise RuntimeError(f"Smoke imports loaded optional ML modules: {imported_optional_modules}")
7086 PY
7187
7288 - name : Pytest without ML models
0 commit comments