From 8f42e0259f124892abb47c9a42e980cff13a0475 Mon Sep 17 00:00:00 2001 From: styu12 Date: Tue, 14 Apr 2026 17:57:13 -0700 Subject: [PATCH] build: add httpx to camera extra for MetaQuestCameraStream User running ``python examples/meta_quest/record.py`` on a fresh ``syncfield[viewer,camera]`` install hit: ModuleNotFoundError: No module named 'httpx' at syncfield/adapters/meta_quest_camera/stream.py:11 The Quest camera adapter talks to the companion Unity app over HTTP via httpx. httpx was already listed in the ``viewer`` extra (the viewer's /status probes use it), but there's no reason a user who only wants the Quest adapter should have to install the full viewer to get it. Add it to ``camera`` alongside aiohttp (Go3S) and bleak so the camera extra is self-sufficient for every camera adapter. Co-Authored-By: Claude Opus 4.6 --- pyproject.toml | 7 ++++++- uv.lock | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f527369..076f135 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,10 +53,15 @@ multihost = [ "uvicorn[standard]>=0.24.0", "httpx>=0.25.0", ] -# Insta360 Go3S adapter: BLE trigger via bleak + WiFi/OSC HTTP download via aiohttp. +# Camera adapters that talk to off-host cameras: +# * Insta360 Go3S — BLE trigger via bleak + WiFi/OSC HTTP via aiohttp. +# * MetaQuestCameraStream — stereo passthrough over HTTP via httpx to +# the SyncField Quest Sender companion app; pulls the on-device +# recorded MP4 + timestamps JSONL after stop_recording(). camera = [ "bleak>=0.21", "aiohttp>=3.9", + "httpx>=0.25.0", ] all = [ "sounddevice>=0.4.6", diff --git a/uv.lock b/uv.lock index 88a0e97..052e20a 100644 --- a/uv.lock +++ b/uv.lock @@ -2368,6 +2368,7 @@ camera = [ { name = "aiohttp" }, { name = "bleak", version = "1.1.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "bleak", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "httpx" }, ] multihost = [ { name = "fastapi", version = "0.128.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2426,6 +2427,7 @@ requires-dist = [ { name = "fastapi", marker = "extra == 'multihost'", specifier = ">=0.104.0" }, { name = "fastapi", marker = "extra == 'viewer'", specifier = ">=0.104.0" }, { name = "httpx", marker = "extra == 'all'", specifier = ">=0.25.0" }, + { name = "httpx", marker = "extra == 'camera'", specifier = ">=0.25.0" }, { name = "httpx", marker = "extra == 'multihost'", specifier = ">=0.25.0" }, { name = "numpy", marker = "extra == 'all'", specifier = ">=1.21" }, { name = "numpy", marker = "extra == 'audio'", specifier = ">=1.21" },