"""Product configuration for the ORY-FINGER Windows dashboard.""" from __future__ import annotations import sys from pathlib import Path _BUILD_ROOT = Path(__file__).resolve().parents[2] if str(_BUILD_ROOT) not in sys.path: sys.path.insert(0, str(_BUILD_ROOT)) from common.paths import REPO_ROOT from gui.common.pyinstaller_driver import GuiBuildConfig ENTRY_SCRIPT = REPO_ROOT / "examples" / "finger_pipeline_3dview.py" EXE_NAME = "OrisysDashboard.exe" DIST_NAME = "OrisysDashboard" HIDDEN_IMPORTS = [ "PyQt5", "pyqtgraph", "open3d", "cv2", "orisys", "gui", "pipeline", "viz", "gui.app_paths", "plotly", "_plotly_utils", "open3d.cpu.pybind", ] EXCLUDE_MODULES = [ "cupy", "cupyx", "pyopencl", "tkinter", "pip", "wheel", "matplotlib", ] DATA_DIRS = [ ("config", "config"), ("sensors", "sensors"), ] README_LINES = [ "Orisys Finger Dashboard (standalone)", "", "Run:", f" {EXE_NAME}", f" {EXE_NAME} --video path\\to\\video.mp4", f" {EXE_NAME} --config config\\dd02-ov.json", "", "Bundled folders:", " config/ sensor JSON configs", " sensors/ per-sensor bundles (finger mesh and visualization data)", "", "CPU-only build (no CUDA/CuPy).", ] def make_config() -> GuiBuildConfig: return GuiBuildConfig( product="ory_finger", entry_script=ENTRY_SCRIPT, exe_name=EXE_NAME, dist_name=DIST_NAME, hidden_imports=list(HIDDEN_IMPORTS), exclude_modules=list(EXCLUDE_MODULES), data_dirs=list(DATA_DIRS), readme_lines=list(README_LINES), )